IDAPython 8.4
|
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 | |
"int" add_tryblk | ( | * | args | ) |
tb | (C++: const tryblk_t &) try block to add. |
"void" del_tryblks | ( | * | args | ) |
range | (C++: const range_t &) the range to be cleared |
"ea_t" find_syseh | ( | * | args | ) |
ea | (C++: ea_t) search address |
"size_t" get_tryblks | ( | * | args | ) |
Try blocks are sorted by starting address and their nest levels calculated.
tbv | (C++: tryblks_t *) output buffer; may be nullptr |
range | (C++: const range_t &) address range to change |
"bool" is_ea_tryblks | ( | * | args | ) |
ea | (C++: ea_t) address to check |
flags | (C++: uint32) combination of flags for is_ea_tryblks() |
TBEA_ANY = _ida_tryblks.TBEA_ANY |
TBEA_CATCH = _ida_tryblks.TBEA_CATCH |
TBEA_FALLTHRU = _ida_tryblks.TBEA_FALLTHRU |
TBEA_SEHFILT = _ida_tryblks.TBEA_SEHFILT |
TBEA_SEHLPAD = _ida_tryblks.TBEA_SEHLPAD |
TBEA_SEHTRY = _ida_tryblks.TBEA_SEHTRY |
TBEA_TRY = _ida_tryblks.TBEA_TRY |
TBERR_EMPTY = _ida_tryblks.TBERR_EMPTY |
TBERR_END = _ida_tryblks.TBERR_END |
TBERR_INTERSECT = _ida_tryblks.TBERR_INTERSECT |
TBERR_KIND = _ida_tryblks.TBERR_KIND |
TBERR_NO_CATCHES = _ida_tryblks.TBERR_NO_CATCHES |
TBERR_OK = _ida_tryblks.TBERR_OK |
TBERR_ORDER = _ida_tryblks.TBERR_ORDER |
TBERR_START = _ida_tryblks.TBERR_START |