https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117941

--- Comment #6 from Mathieu Othacehe <m.othacehe at gmail dot com> ---
(In reply to Richard Earnshaw from comment #5)
> > Is it then possible to have dwarf data on ARM in addition to the EABI 
> > defined unwind section?
> 
> I don't know, honesty, because I've not tried it. I'd be surprised if it
> worked though, at least, not without hacking the linker scripts.  The dwarf
> data normally lives in the debug sections, which aren't loaded when the
> binary is executed (it's just available to a debugger).
> 
> The original version of the EABI specification did not support a frame
> chain, but this was added as an option in the recent versions.  This would
> enable a (nearly) complete backtrace of the call stack without needing other
> data (just access to the symbol table).  Sadly, however, this is yet to be
> implemented in gcc (the existing code doesn't correctly support thumb and
> certainly doesn't support Arm and thumb together in the same binary.

For the record, when using the .debug_frame section that is present on ARMv7
binaries, I am able to get full backtraces with libunwind:

Unexpected exception caught!
Backtrace:
  0x4b0c7d: unexpected_handler() + 0x1b
  0xb6dded55: __cxxabiv1::__terminate(void (*)()) + 0x3
  0xb6ddedb7: std::terminate() + 0x9
  0xb6ddf023: __cxa_rethrow + 0x2d
  0x4b0c61: uncaught_function() + 0x7
  0x4b0c9f: main + 0x11
  0xb6c317c7: __libc_start_call_main + 0x41
  0xb6c31871: __libc_start_main + 0x5f
  0x4b0901: _start + 0x27
Aborted

Reply via email to