unwinding on ARM

Submitted by EXTERNAL Waechtler Peter (Fa. TCP, CM-AI/PJ-CF31) on March 16, 2012, 1:29 p.m.


Message ID
State New
Headers show

Commit Message

Sorry this is a resend with corrected email addresses,

I noticed a bug in the __ARM_EABI_UNWINDER__ case that shows up
as a loop in backtrace():

Patch hide | download patch | download mbox

======= Backtrace: =========
[.. and so on]

while a proper callstack (with demangled names and libunwind) looks like:

====== backtrace (libunwind):
./bt( libunwind_backtrace +0x30)[0xb4a4]
./bt( eh_stack_unwind +0xe0)[0xb3c0]
/lib/ __default_rt_sa_restorer_v2 +0x0)[0x4c883770]
/lib/ gsignal +0x40)[0x4c88241c]
/lib/ abort +0x1c0)[0x4c88680c]
/lib/ cfree +0x38)[0x4c8c63a8]
./bt( nqueen(int*, int, int) +0xf0)[0xa8e0]
./bt( main +0x230)[0xac6c]
/lib/ __libc_start_main +0x120)[0x4c86d104]

The CodeSourcery toolchain contains a "fix" like the following,
please consider for adding it.

Best regards

        Peter W├Ąchtler

---      2012-02-28 16:35:20.000000000 +0100
+++   2012-02-28 18:12:03.000000000 +0100
@@ -387,6 +386,9 @@ 
   switch (state & _US_ACTION_MASK)
+     if (state & _US_FORCE_UNWIND)
       actions = _UA_SEARCH_PHASE;