patches/uClibc/0.9.30.1/150-64bit-strtouq.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 [PATCH]: Add strtouq alias (to strtoul) for 64bit
     2 
     3 The strtouq alias was only available on 32bit, breaking compilation of stuff
     4 using strtouq on 64bit machines. At the same time use the correct return
     5 type (u_quad_t).
     6 
     7 Signed-of-by: Peter Korsgaard <jacmet@sunsite.dk>
     8 ---
     9  include/stdlib.h     |    4 +++-
    10  libc/stdlib/stdlib.c |    1 +
    11  2 files changed, 4 insertions(+), 1 deletion(-)
    12 
    13 Index: uClibc-0.9.30.1/libc/stdlib/stdlib.c
    14 ===================================================================
    15 --- uClibc-0.9.30.1.orig/libc/stdlib/stdlib.c
    16 +++ uClibc-0.9.30.1/libc/stdlib/stdlib.c
    17 @@ -401,6 +401,9 @@
    18  libc_hidden_proto(__XL_NPP(strtoull))
    19  strong_alias(__XL_NPP(strtoul),__XL_NPP(strtoull))
    20  libc_hidden_def(__XL_NPP(strtoull))
    21 +#if !defined(L_strtoul_l)
    22 +strong_alias(strtoul,strtouq)
    23 +#endif
    24  #endif
    25  
    26  
    27 Index: uClibc-0.9.30.1/include/stdlib.h
    28 ===================================================================
    29 --- uClibc-0.9.30.1.orig/include/stdlib.h
    30 +++ uClibc-0.9.30.1/include/stdlib.h
    31 @@ -203,6 +203,8 @@
    32  __END_NAMESPACE_STD
    33  
    34  #ifdef __USE_BSD
    35 +#include <sys/types.h> /* for u_quad_t */
    36 +
    37  /* Convert a string to a quadword integer.  */
    38  __extension__
    39  extern long long int strtoq (__const char *__restrict __nptr,
    40 @@ -210,7 +212,7 @@
    41       __THROW __nonnull ((1)) __wur;
    42  /* Convert a string to an unsigned quadword integer.  */
    43  __extension__
    44 -extern unsigned long long int strtouq (__const char *__restrict __nptr,
    45 +extern u_quad_t strtouq (__const char *__restrict __nptr,
    46  				       char **__restrict __endptr, int __base)
    47       __THROW __nonnull ((1)) __wur;
    48  #endif /* GCC and use BSD.  */