OSDN Git Service

libc: allow to backtrace out of abort call
authorCarmelo Amoroso <carmelo.amoroso@st.com>
Tue, 3 Jan 2012 18:09:56 +0000 (19:09 +0100)
committerCarmelo Amoroso <carmelo.amoroso@st.com>
Fri, 13 Jan 2012 11:22:59 +0000 (12:22 +0100)
commit4c9b7f3c21ff21c199e54bfad2fdf3445fa4573d
tree30d8a2f101cc1aa6e9b35273635fa9b3a6f2e1cf
parenta7123b4744112deecb7aef771f224b680b4a02c0
libc: allow to backtrace out of abort call

Build raise and abort function with dwarf2 info by using
-fasynchronous-unwind-tables to make backtrace() working across a
call to abort.

A scenario where it could be useful is within a signal handler that
wants to dump a backtrace when catching some signal (i.e SIGABRT).
Without having abort & raise built with DWARF2 information, it is not
possible for the libgcc stack unwinder to walk through the call stack
out of the abort/raise function.

Impacts in terms of size are really limited

Current
   text    data     bss     dec     hex filename
    164       0       0     164      a4 ./libpthread/nptl/sysdeps/unix/sysv/linux/raise.os
    164       0       0     164      a4 ./libpthread/nptl/sysdeps/unix/sysv/linux/raise.oS
    220      24       4     248      f8 ./libc/stdlib/abort.os

With (-fasynchronous-unwind-tables)

   text    data     bss     dec     hex filename
    216       0       0     216      d8 ./libpthread/nptl/sysdeps/unix/sysv/linux/raise.os
    216       0       0     216      d8 ./libpthread/nptl/sysdeps/unix/sysv/linux/raise.oS
    280      24       4     308     134 ./libc/stdlib/abort.os

Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
Acked-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
libc/signal/Makefile.in
libc/stdlib/Makefile.in
libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch