Hi Paolo,

> On 03/05/2014 04:34 AM, Ian Lance Taylor wrote:
>> The GNU glibc qsort function will call malloc in some cases.  That makes
>> it unsuitable for libbacktrace, which is intended to work when called
>> from a signal handler.  This patch changes libbacktrace to use an
>> internal qsort function.
>>
>> I'm posting this for comments in case anybody sees anything wrong with
>> the implementation.  I'll commit it in a day or two if I don't hear
>> anything.
>>
>> Bootstrapped and ran libbacktrace and Go tests on
>> x86_64-unknown-linux-gnu.
> Sorry if I missed some messages or I'm just confused, but today I'm seeing
> a lot of regressions all of the same form:
>
> libsanitizer/asan/.libs/libasan.so: undefined reference to `backtrace_qsort'
>
> Confirmed in eg:
>
>     http://gcc.gnu.org/ml/gcc-testresults/2014-03/msg00399.html
>
> Any idea what's up?

I suspect the following patch (yet untested) will fix this:

2014-03-07  Rainer Orth  <r...@cebitec.uni-bielefeld.de>

        * libbacktrace/Makefile.am (libsanitizer_libbacktrace_la_SOURCES):
        Add ../../libbacktrace/sort.c.
        * libbacktrace/Makefile.in: Regenerate.
        * libbacktrace/backtrace-rename.h (backtrace_qsort): Define.

# HG changeset patch
# Parent 4cf44f327506e7ae03a9bdecee301cddc2cb29b3
Handle backtrace_qsort

diff --git a/libsanitizer/libbacktrace/Makefile.am b/libsanitizer/libbacktrace/Makefile.am
--- a/libsanitizer/libbacktrace/Makefile.am
+++ b/libsanitizer/libbacktrace/Makefile.am
@@ -50,6 +50,7 @@ libsanitizer_libbacktrace_la_SOURCES = \
 	../../libbacktrace/fileline.c \
 	../../libbacktrace/internal.h \
 	../../libbacktrace/posix.c \
+	../../libbacktrace/sort.c \
 	../../libbacktrace/state.c \
 	../../libiberty/cp-demangle.c \
 	bridge.cc
diff --git a/libsanitizer/libbacktrace/backtrace-rename.h b/libsanitizer/libbacktrace/backtrace-rename.h
--- a/libsanitizer/libbacktrace/backtrace-rename.h
+++ b/libsanitizer/libbacktrace/backtrace-rename.h
@@ -8,6 +8,7 @@
 #define backtrace_initialize __asan_backtrace_initialize
 #define backtrace_open __asan_backtrace_open
 #define backtrace_pcinfo __asan_backtrace_pcinfo
+#define backtrace_qsort __asan_backtrace_qsort
 #define backtrace_release_view __asan_backtrace_release_view
 #define backtrace_syminfo __asan_backtrace_syminfo
 #define backtrace_vector_finish __asan_backtrace_vector_finish
-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to