Re: No unwind info for __do_global_ctors_aux / _init?

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

 



Lassi Tuura <lat@xxxxxxx> writes:

> I maintain a profiling utility which uses libunwind to capture stack
> traces on x86-64. One of the several problems we ran into is that
> stack tracing stops at global constructors for dynamically loaded
> shared libraries. This seems to be because there is no unwind
> information for _init / __do_global_ctors_aux.
>
> Is there any way to coax GCC to generate .eh_frame information for
> these functions?

You could try modifying the gcc Makefile to add -funwind-tables or
-fasynchronous-unwind-tables to CRTSTUFF_CFLAGS.

> I tried recompiling one library with and without
> -fasynchronous-unwind-tables on a RHEL5-derived system with GCC
> 4.3.4 + binutils 2.19.1, but didn't get the extra unwind info. In
> fact -fasynchronous-unwind-tables didn't make any difference that I
> could tell.

-fasynchronous-unwind-tables should make a difference, and it is
required if you want to be able to reliably unwind the stack from a
signal handler.

By the way, if you aren't using mainline gcc I think you'll find that
the unwind information is incorrect in function epilogues, which means
that unwinding the stack from a signal handler will break if the
signal comes in as a function is returning.  I think this may be fixed
in mainline.

Ian

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux