Hey @gnzlbg -- how well do you know the details of the unwinding mechanisms from various platforms?
It seems like it'd be useful to have some notes on how major unwinding mechanisms work in the repository as a kind of "background". I'd also be interested in scheduling some times to do a "deep dive" into each platform, where we could discuss.
Do you think you'd be able to provide some notes on x86_64, for example? I'm not sure if you're familiar with SEH.
I’m only familiar with Itanium from reading the spec. Most platforms follow it, except for Windows. I only know very basic things about Windows.
The Itanium spec is surprisingly readable, I definitely recommend it.
ok, then maybe you'd like to leave some summary around itanium? (and perhaps a link to spec)
at this point we should probably be pointing to the section in the amd64 ABI (https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-1.0.pdf). it's pretty much a transcription of the Itanium one, but it's nicer to have the context from the rest of the ABI
@Alex Crichton seemed to know more about SEH than me when we spoke last week, so he might be able to help for Windows
at this point we should probably be pointing to the section in the amd64 ABI (https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-1.0.pdf).
Yes, that's the normative document. I personally prefer to read https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html because that's only the unwinding part, and its easier to hyperlink to different sections of it, than trying to do so for a PDF.
The most relevant part for us Level 1. Base ABI since the rest is C++ specific (although good to know if you care about how C++ treats its own exceptions)
Within 1.6, sub-section "1.6.4 Rules for Correct Inter-Language Operation" is a very quick read
I guess I'm too used to my dog-eared paper copy at this point :slight_smile:
It'd be great if somebody wanted to create a
background/README.md file or something and add links like that
I'll try to skim it soon but .. yeah busy :)