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.

Functions

NameDescription
actionTableLookup(exceptionObject, actionRecordPtr, pActionTable, tt, TType, exceptionClass) Look up classType in Action Table.
actionTableLookup(exceptionObject, actionRecordPtr, pActionTable, tt, TType, exceptionClass) Look up classType in Action Table.
getClassInfo(exceptionObject) Look at the chain of inflight exceptions and pick the class type that'll be looked for in catch clauses.
getClassInfo(exceptionObject) 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.
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.
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.
sLEB128(p) Decode Signed LEB128.
uLEB128(p) Decode Unsigned LEB128.
uLEB128(p) Decode Unsigned LEB128.
_d_eh_swapContextDwarf(newContext) Called when fibers switch contexts.
_d_eh_swapContextDwarf(newContext) Called when fibers switch contexts.
_d_throwdwarf(o) Called by D code to throw an exception via
_d_throwdwarf(o) Called by D code to throw an exception via

Interfaces

NameDescription
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.
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.

Structs

NameDescription
CppExceptionHeader The C++ version of D's ExceptionHeader wrapper
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.
ExceptionHeader Wrap the unwinder's data with our own compiler specific struct with our own data.

Manifest constants

NameTypeDescription
cppExceptionClass C++ Support
cppExceptionClass C++ Support

Authors

Walter Bright

License

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