[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libunwind-devel] unw_step in ARM?

From: Tommi Rantala
Subject: Re: [Libunwind-devel] unw_step in ARM?
Date: Tue, 23 Oct 2012 12:33:33 +0300

2012/10/23 Harald Servat <address@hidden>:
> Hello,
>   I'm using libunwind 1.1 in a Linux with ARM processor. I've found that
> unw_step seems not to work, or at least not as in x86-64 because it does
> not report all the backtrace but only the top of the stack level. I'm
> attaching a simple program (derived from the tests  Gtest-bt.c) that
> shows this and also the output in a ARM and in a X86/64 machine.
>   Do I need to compile something in a special way? I've looked at the
> objdump -D output from the ARM version and the subroutines seem to be
> there.


Here are some debugging hints:
- Try compiling your program with "-g", so that the binary will also
carry the dwarf debugging information that is used for backtracing.
- Try compiling your program with "-funwind-tables", to get ARM unwind
tables that can be alternatively used for backtracing.
- There's also a third backtracing alternative on ARM, the frame chain
following. You'll need to compile with ARM & APCS modes for it to
- To see what's happening inside libunwind, configure it with
"--enable-debug", then "export UNW_DEBUG_LEVEL=99" before running your
- On ARM, you can runtime select which unwind method(s) to use via
environment variable UNW_ARM_UNWIND_METHOD, valid choices from
include/tdep-arm/libunwind_i.h (by default, libunwind tries them all):

#define UNW_ARM_METHOD_ALL          0xFF
#define UNW_ARM_METHOD_DWARF        0x01
#define UNW_ARM_METHOD_FRAME        0x02
#define UNW_ARM_METHOD_EXIDX        0x04

Tommi Rantala

>   In ARM:
>   # gcc -O0 mytest-bt.c -I ../include
> -L /gpfs/CEPBATOOLS/libunwind/1.1/lib -lunwind -lunwind-arm -o mytest-bt
>   # LD_LIBRARY_PATH=/gpfs/CEPBATOOLS/libunwind/1.1/lib:
> $LD_LIBRARY_PATH ./mytest-bt
> bar (123)
> foo (123)
>         explicit backtrace:
> 0000000000008734 unw_get_proc_name: <do_backtrace+0x3c>
> (sp=00000000becce318)
>         proc=0x8658-0x8b6b
>         handler=0x0 lsda=0x0 gp=0x0
>   In X86/64:
>   # gcc -O0 mytest-bt.c -I aplic/libunwind/1.1/include -L
> aplic/libunwind/1.1/lib -lunwind -lunwind-x86_64 -o mytest-bt
>   # LD_LIBRARY_PATH=aplic/libunwind/1.1/lib:$LD_LIBRARY_PATH ./mytest-bt
> bar (123)
> foo (123)
>         explicit backtrace:
> 000000000040092a unw_get_proc_name: <do_backtrace+0x26>
> (sp=00007ffff8c9b150)
>         proc=0x400904-0x400b06
>         handler=0x0 lsda=0x0 gp=0x6011e0
> 0000000000400b30 unw_get_proc_name: <foo+0x2a>    (sp=00007ffff8c9b1c0)
>         proc=0x400b06-0x400b32
>         handler=0x0 lsda=0x0 gp=0x6011e0
> 0000000000400b63 unw_get_proc_name: <bar+0x31>    (sp=00007ffff8c9b1e0)
>         proc=0x400b32-0x400b65
>         handler=0x0 lsda=0x0 gp=0x6011e0
> 0000000000400b7e unw_get_proc_name: <main+0x19>   (sp=00007ffff8c9b200)
>         proc=0x400b65-0x400b85
>         handler=0x0 lsda=0x0 gp=0x6011e0
> 0000003c4342169d unw_get_proc_name: <__libc_start_main+0xed>
> (sp=00007ffff8c9b220)
>         proc=0x3c434215b0-0x3c43421768
>         handler=0x0 lsda=0x0 gp=0x3c437b0fe8
> 0000000000400849 unw_get_proc_name: <_start+0x29> (sp=00007ffff8c9b2e0)
>         proc=0x400849-0x40084a
>         handler=0x0 lsda=0x0 gp=0x0
> Regards
> WARNING / LEGAL TEXT: This message is intended only for the use of the
> individual or entity to which it is addressed and may contain
> information which is privileged, confidential, proprietary, or exempt
> from disclosure under applicable law. If you are not the intended
> recipient or the person responsible for delivering the message to the
> intended recipient, you are strictly prohibited from disclosing,
> distributing, copying, or in any way using this message. If you have
> received this communication in error, please notify the sender and
> destroy and delete any copies you may have received.
> _______________________________________________
> Libunwind-devel mailing list
> address@hidden

reply via email to

[Prev in Thread] Current Thread [Next in Thread]