View source code
Display the source code in rt/dwarfeh.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Module rt.dwarfeh

Exception handling support for Dwarf-style portable exceptions.


_d_eh_swapContextDwarf(newContext) Called when fibers switch contexts.
_d_throwdwarf(o) Called by D code to throw an exception via
actionTableLookup(exceptionObject, actionRecordPtr, pActionTable, tt, TType, exceptionClass, lsda) Look up classType in Action Table.
getClassInfo(exceptionObject, currentLsd) Look at the chain of inflight exceptions and pick the class type that'll be looked for in catch clauses.
getCppPtrToThrownObject(exceptionObject, sti) Get Pointer to Thrown Object if type of thrown object is implicitly convertible to the catch type.
scanLSDA(lsda, ip, exceptionClass, cleanupsOnly, preferHandler, exceptionObject, landingPad, handler) 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.
sLEB128(p) Decode Signed LEB128.
uLEB128(p) Decode Unsigned LEB128.


CppTypeInfo Access C++ std::type_info's virtual functions from D, being careful to not require linking with libstd++ or interfere with core.stdcpp.typeinfo. So, give it a different name.


CppExceptionHeader The C++ version of D's ExceptionHeader wrapper
ExceptionHeader Wrap the unwinder's data with our own compiler specific struct with our own data.

Manifest constants

cppExceptionClass C++ Support


Walter Bright


Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)