I apologize for my previous hasty conclusion. I have conducted further testing on different platforms and would like to
sharemy findings.
> FreeBSD
Based on my tests, it appears that FreeBSD follows the Itanium C++ ABI specification. The previous test failed because
theC++ compiler was not used when linking libpgsjlj.so.
> macOS, M1
My tests show that macOS M1 roughly follows the Itanium C++ ABI specification, with only slight differences, such as
theparameters accepted by the _Unwind_Stop_Fn function.
> macOS, x86
I don't have the resources to do the testing, but from a code perspective, it appears that macOS x86 follows the
ItaniumC++ ABI specification.
> Windows
It seems that Windows does not follow the Itanium C++ ABI specification at all. If we compile the program using the
`/EHsc`option, longjmp will also trigger forced unwinding. However, unlike the Itanium C++ ABI, the forced unwinding
triggeredhere cannot be captured by a C++ catch statement.