IDA SDK
relobj_t Struct Reference

Detailed Description

Relocatable object.

Inherits bytevec_t.

Public Attributes

ea_t base
 current base
 
reloc_info_t ri
 relocation info
 

Public Member Functions

bool relocate (ea_t ea, bool mf)
 mf=1:big endian
 
- Public Member Functions inherited from bytevec_t
 bytevec_t ()
 Constructor.
 
 bytevec_t (const void *buf, size_t sz)
 Constructor - fill bytevec with 'sz' bytes from 'buf'.
 
bytevec_t & append (const void *buf, size_t sz)
 Append bytes to the bytevec. More...
 
void pack_db (uint8 x)
 Pack a byte and append the result to the bytevec.
 
void pack_dw (uint16 x)
 Pack a word and append the result to the bytevec.
 
void pack_dd (uint32 x)
 Pack a dword and append the result to the bytevec.
 
void pack_dq (uint64 x)
 Pack a quadword and append the result to the bytevec.
 
void pack_ea (ea_t x)
 Pack an ea value and append the result to the bytevec.
 
void pack_ea64 (ea64_t ea)
 Pack an ea value (64bits) and append the result to the bytevec We pass ea_t as a 64-bit quantity (to be able to debug 32-bit programs with ida64) adding 1 to the address ensures that BADADDR is passed correctly. More...
 
void pack_ds (const char *x)
 Pack a string (length+contents) and append the result to the bytevec.
 
void pack_str (const char *str)
 Pack a string (zero-terminated) and append the result to the bytevec.
 
void pack_str (const qstring &s)
 Pack a string (zero-terminated) and append the result to the bytevec.
 
void pack_buf (const void *buf, size_t len)
 Pack an object of size 'len' and append the result to the bytevec.
 
void pack_bytevec (const bytevec_t &b)
 Pack an object of size 'len' and append the result to the bytevec.
 
void pack_eavec (ea_t ea, const eavec_t &vec)
 Pack an eavec and append the result to the bytevec. More...
 
bytevec_t & growfill (size_t sz, uchar filler=0)
 Grow the bytevec and fill with a value. More...
 
void inject (void *buf, size_t len)
 See qvector::inject(T *, size_t)
 
void tohex (qstring *out, bool upper_case=true) const
 Append the hexadecimal representation of bytes to the string.
 
qstring tohex (bool upper_case=true) const
 Produce a hexadecimal representation of bytes.
 
bool fromhex (const qstring &str)
 Initialize from a hexadecimal string It returns 'false' if the string is invalid.
 
bool test_bit (size_t bit) const
 Is the specified bit set in the bytevec?
 
void set_bit (size_t bit)
 Set the specified bit.
 
void clear_bit (size_t bit)
 Clear the specified bit.
 
void set_all_bits (size_t nbits)
 See set_all_bits(uchar *, size_t)
 
void clear_all_bits (size_t nbits)
 See clear_all_bits(uchar *, size_t)
 
bool all_zeros () const
 Are all bits cleared?
 
void set_bits (const bytevec_t &b)
 For each bit that is set in 'b', set the corresponding bit in this bytevec.
 
void set_bits (size_t low, size_t high)
 Set each bit between [low, high)
 
void clear_bits (const bytevec_t &b)
 For each bit that is set in 'b', the clear the corresponding bit in this bytevec.
 
void clear_bits (size_t low, size_t high)
 Clear each bit between [low, high)
 
- Public Member Functions inherited from qvector< uchar >
 qvector (void)
 Constructor.
 
 qvector (const qvector< uchar > &x)
 Constructor - creates a new qvector identical to 'x'.
 
 qvector (qvector< uchar > &&x) noexcept
 Move constructor.
 
 ~qvector (void)
 Destructor.
 
void push_back (const uchar &x)
 Append a new element to the end the qvector.
 
void push_back (uchar &&x)
 Append a new element to the end the qvector with a move semantics.
 
uchar & push_back (void)
 Append a new empty element to the end of the qvector. More...
 
void pop_back (void)
 Remove the last element in the qvector.
 
size_t size (void) const
 Get the number of elements in the qvector.
 
bool empty (void) const
 Does the qvector have 0 elements?
 
const uchar & operator[] (size_t _idx) const
 Allows use of typical c-style array indexing for qvectors.
 
uchar & operator[] (size_t _idx)
 Allows use of typical c-style array indexing for qvectors.
 
const uchar & at (size_t _idx) const
 Get element at index '_idx'.
 
uchar & at (size_t _idx)
 Get element at index '_idx'.
 
const uchar & front (void) const
 Get the first element in the qvector.
 
uchar & front (void)
 Get the first element in the qvector.
 
const uchar & back (void) const
 Get the last element in the qvector.
 
uchar & back (void)
 Get the last element in the qvector.
 
void qclear (void)
 Destroy all elements but do not free memory.
 
void clear (void)
 Destroy all elements and free memory.
 
qvector< uchar > & operator= (const qvector< uchar > &x)
 Allow assignment of one qvector to another using '='.
 
qvector< uchar > & operator= (qvector< uchar > &&x) noexcept
 Move assignment operator.
 
void resize (size_t _newsize, const uchar &x)
 Resize to the given size. More...
 
void resize (size_t _newsize)
 Same as resize(size_t, const T &), but extra space is filled with empty elements.
 
void resize_noinit (size_t _newsize)
 
void grow (const uchar &x=uchar())
 Add an element to the end of the qvector, which will be a new T() if x is not given.
 
size_t capacity (void) const
 Get the number of elements that this qvector can contain - not the same as the number of elements currently in the qvector (size())
 
void reserve (size_t cnt)
 Increase the capacity of the qvector. More...
 
void truncate (void)
 Shrink the capacity down to the current number of elements.
 
void swap (qvector< uchar > &r) noexcept
 Replace all attributes of this qvector with that of 'r', and vice versa. More...
 
uchar * extract (void)
 Empty the qvector and return a pointer to it's contents. More...
 
void inject (uchar *s, size_t len)
 Populate the qvector with dynamic memory. More...
 
bool operator== (const qvector< uchar > &r) const
 Allow ability to test the equality of two qvectors using '=='.
 
bool operator!= (const qvector< uchar > &r) const
 Allow ability to test equality of two qvectors using '!='.
 
iterator begin (void)
 Get an iterator that points to the first element in the qvector.
 
const_iterator begin (void) const
 Get a const iterator that points to the first element in the qvector.
 
iterator end (void)
 Get an iterator that points to the end of the qvector (NOT the last element)
 
const_iterator end (void) const
 Get a const iterator that points to the end of the qvector (NOT the last element)
 
iterator insert (iterator it, const uchar &x)
 Insert an element into the qvector at a specified position. More...
 
iterator insert (iterator it, uchar &&x)
 Insert an element into the qvector with a move semantics.
 
iterator insert (iterator it, it2 first, it2 last)
 Insert a several elements to the qvector at a specified position. More...
 
iterator erase (iterator it)
 Remove an element from the qvector. More...
 
iterator erase (iterator first, iterator last)
 Remove a subset of the qvector. More...
 
iterator find (const uchar &x)
 Find an element in the qvector. More...
 
const_iterator find (const uchar &x) const
 Find an element in the qvector. More...
 
ssize_t index (const uchar &x) const
 Find index of the specified value or return -1.
 
void add (const uchar &x)
 Add an element to the end of the qvector.
 
void add (uchar &&x)
 
bool has (const uchar &x) const
 Does the qvector contain x?
 
bool add_unique (const uchar &x)
 Add an element to the end of the qvector - only if it isn't already present. More...
 
bool del (const uchar &x)
 Find an element and remove it. More...
 
const char * dstr (void) const
 

Additional Inherited Members

- Public Types inherited from qvector< uchar >
typedef uchar value_type
 the type of objects contained in this qvector
 
typedef uchar * iterator
 
typedef const uchar * const_iterator
 

The documentation for this struct was generated from the following file: