State-of-the-art binary code analysis tools

Detailed Description

Describes a program segment.

Inherits range_t.

Public Attributes

uval_t name
 use get/set_segm_name() functions
 
uval_t sclass
 use get/set_segm_class() functions
 
uval_t orgbase
 this field is IDP dependent. More...
 
uchar align
 Segment alignment codes
 
uchar comb
 Segment combination codes
 
uchar perm
 Segment permissions (0 means no information)
 
uchar bitness
 Number of bits in the segment addressing. More...
 
ushort flags
 Segment flags
 
sel_t sel
 segment selector - should be unique. More...
 
sel_t defsr [SREG_NUM]
 default segment register values. More...
 
uchar type
 segment type (see Segment types). More...
 
bgcolor_t color
 the segment color
 
- Public Attributes inherited from range_t
ea_t start_ea
 start_ea included
 
ea_t end_ea
 end_ea excluded
 

Public Member Functions

bool is_16bit (void) const
 Is a 16-bit segment?
 
bool is_32bit (void) const
 Is a 32-bit segment?
 
bool is_64bit (void) const
 Is a 64-bit segment?
 
int abits (void) const
 Get number of address bits.
 
int abytes (void) const
 Get number of address bytes.
 
bool is_ephemeral_segm (void) const
 Ephemeral segments are not analyzed automatically (no flirt, no functions unless required, etc). More...
 
bool update (void)
 Update segment information. More...
 
 segment_t (void)
 Constructor.
 
Segment flag: ORG directive
bool comorg (void) const
 
void set_comorg (void)
 
void clr_comorg (void)
 
Segment flag: orgbase
bool ob_ok (void) const
 
void set_ob_ok (void)
 
void clr_ob_ok (void)
 
Segment flag: hidden
bool is_visible_segm (void) const
 
void set_visible_segm (bool visible)
 
Segment flag: debugger segment
bool is_debugger_segm (void) const
 
void set_debugger_segm (bool debseg)
 
Segment flag: loader segment
bool is_loader_segm (void) const
 
void set_loader_segm (bool ldrseg)
 
Segment flag: hide segment type
bool is_hidden_segtype (void) const
 
void set_hidden_segtype (bool hide)
 
Segment flag: header segment
bool is_header_segm (void) const
 
void set_header_segm (bool on)
 
- Public Member Functions inherited from range_t
 range_t (void)
 Constructor.
 
 range_t (ea_t ea1, ea_t ea2)
 Constructor.
 
int compare (const range_t &r) const
 Compare two range_t instances, based on the start_ea.
 
bool operator== (const range_t &r) const
 Compare two range_t's with '=='.
 
bool operator != (const range_t &r) const
 Compare two range_t's with '!='.
 
bool operator > (const range_t &r) const
 Compare two range_t's with '<'.
 
bool operator< (const range_t &r) const
 Compare two range_t's with '>'.
 
bool contains (ea_t ea) const
 Is 'ea' in the address range?
 
bool contains (const range_t &r) const
 Is every ea in 'r' also in this range_t?
 
bool overlaps (const range_t &r) const
 Is there an ea in 'r' that is also in this range_t?
 
void clear (void)
 Set start_ea, end_ea to 0.
 
bool empty (void) const
 Is the size of the range_t <= 0?
 
asize_t size (void) const
 Get end_ea - start_ea.
 
void intersect (const range_t &r)
 Assign the range_t to the intersection between the range_t and 'r'.
 
void extend (ea_t ea)
 Ensure that the range_t includes 'ea'.
 
size_t print (char *buf, size_t bufsize) const
 Print the range_t. More...
 

Member Function Documentation

◆ is_ephemeral_segm()

bool segment_t::is_ephemeral_segm ( void  ) const
inline

Ephemeral segments are not analyzed automatically (no flirt, no functions unless required, etc).

Most likely these segments will be destroyed at the end of the debugging session unless the user changes their status.

◆ update()

bool segment_t::update ( void  )
inline

Update segment information.

You must call this function after modification of segment characteristics. Note that not all fields of segment structure may be modified directly, there are special functions to modify some fields.

Returns
success

Member Data Documentation

◆ orgbase

uval_t segment_t::orgbase

this field is IDP dependent.

you may keep your information about the segment here

◆ bitness

uchar segment_t::bitness

Number of bits in the segment addressing.

  • 0: 16 bits
  • 1: 32 bits
  • 2: 64 bits

◆ sel

sel_t segment_t::sel

segment selector - should be unique.

You can't change this field after creating the segment. Exception: 16bit OMF files may have several segments with the same selector, but this is not good (no way to denote a segment exactly) so it should be fixed in the future.

◆ defsr

sel_t segment_t::defsr[SREG_NUM]

default segment register values.

first element of this array keeps information about value of processor_t::reg_first_sreg

◆ type

uchar segment_t::type

segment type (see Segment types).

The kernel treats different segment types differently. Segments marked with '*' contain no instructions or data and are not declared as 'segments' in the disassembly.


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