patches/uClibc/0.9.32/170-Conditionalize-use-libgcc_eh-when-libubacktrace-is-n.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Dec 13 23:32:39 2011 +0100 (2011-12-13)
changeset 2807 4193d6e6a174
permissions -rw-r--r--
scripts: fix dumping execution backtrace

Dumping the backtrace has been broken since changeset #652e56d6d35a:
scripts: execute each steps in a subshell

We can spawn sub-sub-shells in some cases.

The way the fault handler works is to dump the backtrace, but to avoid
printing it once for every sub-shell (which could get quite confusing),
it simply exits when it detects that it is being run in a sub-shell,
leaving to the top-level shell the work to dump the backtrace.

Because each step is executed in its own sub-shell, the variable arrays
that contain the step name, the source file and line number, are lost
when exiting the per-step sub-shell.

Hence, the backtrace is currently limited to printing only the top-level
main procedure of the shell.

Fix this thus:
- when dumping the bckatraces for the steps & the functions, remember
it was dumped, and only dump it if it was not already dumped
- at the top-level shell, print the hints

Also, rename the top-level step label.

Reported-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 From the uClibc ML archives:
     2     http://lists.uclibc.org/pipermail/uclibc/2011-June/045411.html
     3 
     4 >From 364a3a9c576d604bed146efe0b8b33d2b81d4c64 Mon Sep 17 00:00:00 2001
     5 From: Jason Woodward <jason.woodward@timesys.com>
     6 Date: Sat, 11 Jun 2011 01:08:48 -0400
     7 Subject: [PATCH 1/3] Conditionalize use libgcc_eh when libubacktrace is not enabled
     8 
     9 Signed-off-by: Jason Woodward <jason.woodward@timesys.com>
    10 ---
    11  libubacktrace/Makefile.in |    2 +-
    12  1 files changed, 1 insertions(+), 1 deletions(-)
    13 
    14 diff --git a/libubacktrace/Makefile.in b/libubacktrace/Makefile.in
    15 index f75f68b..880a8af 100644
    16 --- a/libubacktrace/Makefile.in
    17 +++ b/libubacktrace/Makefile.in
    18 @@ -12,7 +12,7 @@ CFLAGS-libubacktrace := -DNOT_IN_libc -DIS_IN_libubacktrace $(SSP_ALL_CFLAGS)
    19  
    20  LDFLAGS-libubacktrace.so := $(LDFLAGS) $(top_builddir)lib/libdl-$(VERSION).so
    21  
    22 -ifeq ($(CONFIG_ARM_EABI),y)
    23 +ifeq ($(UCLIBC_HAS_BACKTRACE)$(CONFIG_ARM_EABI),yy)
    24  LIBGCC += $(shell $(CC) -print-file-name=libgcc_eh.a)
    25  endif
    26  
    27 -- 
    28 1.7.0.4
    29