Function rt.dwarfeh.scanLSDA
Read and extract information from the LSDA (aka gcc_except_table section). The dmd Call Site Table is structurally different from other implementations. It is organized as nested ranges, and one ip can map to multiple ranges. The most nested candidate is selected when searched. Other implementations have one candidate per ip.
rt .dwarfeh .LsdaResult scanLSDA
(
const(ubyte)* lsda,
ulong ip,
ulong exceptionClass,
bool cleanupsOnly,
bool preferHandler,
core .internal .backtrace .unwind ._Unwind_Exception* exceptionObject,
out ulong landingPad,
out int handler
);
Parameters
Name | Description |
---|---|
lsda | pointer to LSDA table |
ip | offset from start of function at which exception happened |
exceptionClass | which language threw the exception |
cleanupsOnly | only look for cleanups |
preferHandler | if a handler encloses a cleanup, prefer the handler |
exceptionObject | language specific exception information |
landingPad | set to landing pad |
handler | set to index of which catch clause was matched |
Returns
LsdaResult
See Also
http
//reverseengineering.stackexchange.com/questions/6311/how-to-recover-the-exception-info-from-gcc-except-table-and-eh-handle-sections
http
//www.airs.com/blog/archives/464
https
//anarcheuz.github.io/2015/02/15/ELF%20internals%20part%202%20-%20exception%20handling/
Authors
Walter Bright
License
Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)