On Monday, 5 September 2022 at 12:07:35 UTC, Paul Backus wrote:
On Monday, 5 September 2022 at 10:47:38 UTC, IchorDev wrote:
Ah, I'm actually trying to create my own implementation of this, so the goal would be to not rely on a dependency. I can't exactly make head nor tail of the library's source other than that it seems to have a unique implementation on each processor/OS type.

I'm sure there must be something hidden in `core.internal.` for this. I'll look at the implementation of `rt.trace` and see if I can find anything.

I think this is what you are looking for:

https://github.com/dlang/dmd/blob/master/druntime/src/rt/deh.d

Digging in a little deeper, it looks like the druntime implementation ultimately depends on the [C++ exception handling ABI][1], via its platform-independent library interface. Bindings are defined in [`core.internal.backtrace.unwind`][2].

There is also what looks like a from-scratch implementation of table-based exception handling in [`rt.deh_win64_posix`][3], but according to a comment it is no longer used. Might be educational to read, though.

[1]: https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html
[2]: https://github.com/dlang/dmd/blob/master/druntime/src/core/internal/backtrace/unwind.d [3]: https://github.com/dlang/dmd/blob/master/druntime/src/rt/deh_win64_posix.d

Reply via email to