IDAPython 8.4
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
 Proxy of C++ catch_t class. More...
 
class  catchvec_t
 Proxy of C++ qvector< catch_t > class. More...
 
class  seh_t
 Proxy of C++ seh_t class. More...
 
class  try_handler_t
 Proxy of C++ try_handler_t class. More...
 
class  tryblk_t
 Proxy of C++ tryblk_t class. More...
 
class  tryblks_t
 Proxy of C++ qvector< tryblk_t > class. More...
 

Functions

"size_t" get_tryblks (*args)
 get_tryblks(tbv, range) -> size_t Retrieve try block information from the specified address range.
 
"void" del_tryblks (*args)
 del_tryblks(range) Delete try block information in the specified range.
 
"int" add_tryblk (*args)
 add_tryblk(tb) -> int Add one try block information.
 
"ea_t" find_syseh (*args)
 find_syseh(ea) -> ea_t Find the start address of the system eh region including the argument.
 
"bool" is_ea_tryblks (*args)
 is_ea_tryblks(ea, flags) -> bool Check if the given address ea is part of tryblks description.
 

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 ( * args)
Parameters
tb(C++: const tryblk_t &) try block to add.
Returns
: error code; 0 means good

◆ del_tryblks()

"void" del_tryblks ( * args)
Parameters
range(C++: const range_t &) the range to be cleared

◆ find_syseh()

"ea_t" find_syseh ( * args)
Parameters
ea(C++: ea_t) search address
Returns
: start address of surrounding tryblk, otherwise BADADDR

◆ get_tryblks()

"size_t" get_tryblks ( * args)

Try blocks are sorted by starting address and their nest levels calculated.

Parameters
tbv(C++: tryblks_t *) output buffer; may be nullptr
range(C++: const range_t &) address range to change
Returns
: number of found try blocks

◆ is_ea_tryblks()

"bool" is_ea_tryblks ( * args)
Parameters
ea(C++: ea_t) address to check
flags(C++: uint32) 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