IDAPython 9.0
Loading...
Searching...
No Matches
ida_tryblks Namespace Reference

Detailed Description

Architecture independent exception handling info.

Try blocks have the following general properties:
* A try block specifies a possibly fragmented guarded code region.
* Each try block has always at least one catch/except block description
* Each catch block contains its boundaries and a filter.
* Additionally a catch block can hold sp adjustment and the offset to the exception object offset (C++).
* Try blocks can be nested. Nesting is automatically calculated at the retrieval time.
* There may be (nested) multiple try blocks starting at the same address.


See examples in tests/input/src/eh_tests. 

Classes

class  catch_t
 
class  catchvec_t
 
class  seh_t
 
class  try_handler_t
 
class  tryblk_t
 
class  tryblks_t
 

Functions

'size_t' get_tryblks ('tryblks_t' tbv, 'range_t' range)
 
None del_tryblks ('range_t' range)
 
int add_tryblk ('tryblk_t' tb)
 
ida_idaapi.ea_t find_syseh (ida_idaapi.ea_t ea)
 
bool is_ea_tryblks (ida_idaapi.ea_t ea, int flags)
 

Variables

 TBERR_OK = _ida_tryblks.TBERR_OK
 
 TBERR_START = _ida_tryblks.TBERR_START
 
 TBERR_END = _ida_tryblks.TBERR_END
 
 TBERR_ORDER = _ida_tryblks.TBERR_ORDER
 
 TBERR_EMPTY = _ida_tryblks.TBERR_EMPTY
 
 TBERR_KIND = _ida_tryblks.TBERR_KIND
 
 TBERR_NO_CATCHES = _ida_tryblks.TBERR_NO_CATCHES
 
 TBERR_INTERSECT = _ida_tryblks.TBERR_INTERSECT
 
 TBEA_TRY = _ida_tryblks.TBEA_TRY
 
 TBEA_CATCH = _ida_tryblks.TBEA_CATCH
 
 TBEA_SEHTRY = _ida_tryblks.TBEA_SEHTRY
 
 TBEA_SEHLPAD = _ida_tryblks.TBEA_SEHLPAD
 
 TBEA_SEHFILT = _ida_tryblks.TBEA_SEHFILT
 
 TBEA_ANY = _ida_tryblks.TBEA_ANY
 
 TBEA_FALLTHRU = _ida_tryblks.TBEA_FALLTHRU
 

Function Documentation

◆ add_tryblk()

int add_tryblk ( 'tryblk_t' tb)
Add one try block information. 
    
@param tb: try block to add.
@returns error code; 0 means good

◆ del_tryblks()

None del_tryblks ( 'range_t' range)
Delete try block information in the specified range. 
    
@param range: the range to be cleared

◆ find_syseh()

ida_idaapi.ea_t find_syseh ( ida_idaapi.ea_t ea)
Find the start address of the system eh region including the argument. 
    
@param ea: search address
@returns start address of surrounding tryblk, otherwise BADADDR

◆ get_tryblks()

'size_t' get_tryblks ( 'tryblks_t' tbv,
'range_t' range )
------------------------------------------------------------------------- Retrieve try block information from the specified address range. Try blocks are sorted by starting address and their nest levels calculated. 
    
@param tbv: output buffer; may be nullptr
@param range: address range to change
@returns number of found try blocks

◆ is_ea_tryblks()

bool is_ea_tryblks ( ida_idaapi.ea_t ea,
int flags )
Check if the given address ea is part of tryblks description. 
    
@param ea: address to check
@param flags: combination of flags for is_ea_tryblks()

Variable Documentation

◆ TBEA_ANY

TBEA_ANY = _ida_tryblks.TBEA_ANY

◆ TBEA_CATCH

TBEA_CATCH = _ida_tryblks.TBEA_CATCH

◆ TBEA_FALLTHRU

TBEA_FALLTHRU = _ida_tryblks.TBEA_FALLTHRU

◆ TBEA_SEHFILT

TBEA_SEHFILT = _ida_tryblks.TBEA_SEHFILT

◆ TBEA_SEHLPAD

TBEA_SEHLPAD = _ida_tryblks.TBEA_SEHLPAD

◆ TBEA_SEHTRY

TBEA_SEHTRY = _ida_tryblks.TBEA_SEHTRY

◆ TBEA_TRY

TBEA_TRY = _ida_tryblks.TBEA_TRY

◆ TBERR_EMPTY

TBERR_EMPTY = _ida_tryblks.TBERR_EMPTY

◆ TBERR_END

TBERR_END = _ida_tryblks.TBERR_END

◆ TBERR_INTERSECT

TBERR_INTERSECT = _ida_tryblks.TBERR_INTERSECT

◆ TBERR_KIND

TBERR_KIND = _ida_tryblks.TBERR_KIND

◆ TBERR_NO_CATCHES

TBERR_NO_CATCHES = _ida_tryblks.TBERR_NO_CATCHES

◆ TBERR_OK

TBERR_OK = _ida_tryblks.TBERR_OK

◆ TBERR_ORDER

TBERR_ORDER = _ida_tryblks.TBERR_ORDER

◆ TBERR_START

TBERR_START = _ida_tryblks.TBERR_START