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.

version(Posix)
LsdaResult
scanLSDA
(
const(ubyte)* lsda
,
_Unwind_Ptr ip
,
_Unwind_Exception_Class exceptionClass
,,,
_Unwind_Exception* exceptionObject
,
out _Unwind_Ptr landingPad
,
out int handler
)

Parameters

lsda const(ubyte)*

pointer to LSDA table

ip _Unwind_Ptr

offset from start of function at which exception happened

exceptionClass _Unwind_Exception_Class

which language threw the exception

cleanupsOnly bool

only look for cleanups

preferHandler bool

if a handler encloses a cleanup, prefer the handler

exceptionObject _Unwind_Exception*

language specific exception information

landingPad _Unwind_Ptr

set to landing pad

handler int

set to index of which catch clause was matched

Return Value

LsdaResult

See Also

Meta