https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117941
--- Comment #4 from Mathieu Othacehe <m.othacehe at gmail dot com> --- (In reply to Richard Earnshaw from comment #3) > The Arm unwind section tables are defined by the Arm EABI; they only provide > enough data for call-based exceptions to be unwound. It is not the same as > the dwarf based tables and cannot support non-call exceptions. Leaf > functions are therefore always marked as can't unwind (this is necessary > because the search algorithm for unwind data will just look for the latest > entry in the table that is before the current PC value). The data is not > intended to permit arbitrary backtraces to be printed out. The compressed > tables can save significant amounts of space in the binary compared with the > dwarf based tables; that's important in some embedded environments where all > this data needs to be saved in flash on the device. > > Performing a full backtrace from arbitrary code requires using dwarf unwind > data (eg as produced with -g). Thanks for your answer! Is it then possible to have dwarf data on ARM in addition to the EABI defined unwind section? The backtrace program compiled above has an almost empty .eh_frame section and no .eh_frame_hdr section: $ arm-linux-gnueabihf-readelf -S a.out|grep eh_frame [18] .eh_frame PROGBITS 000d8614 0c8614 000004 00 A 0 0 4 (4 bytes size)