The Ada -E binder option stores a stack traceback in the exception. This doesn't work with llvm-gcc. Testcase: procedure Trace is begin raise Program_Error; end; $ gnatmake trace.adb -bargs -E gcc -c trace.adb gnatbind -aO./ -E -I- -x trace.ali gnatlink trace.ali $ ./trace Segmentation fault (core dumped)
How such stuff is represented in terms of gcc builtins / llvm IR ?
A quick glance shows it using: __builtin_frame_address _Unwind_Backtrace _Unwind_GetIP
> This doesn't work with llvm-gcc. Does it work with dragonegg?
This works with dragonegg.
Cool!