I apologize for my previous hasty conclusion. I have conducted further testing 
on different platforms and would like to share my findings.

> FreeBSD

Based on my tests, it appears that FreeBSD follows the Itanium C++ ABI 
specification. The previous test failed because the C++ 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 the parameters 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 Itanium C++ 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 
triggered here cannot be captured by a C++ catch statement.

Reply via email to