libunwind-devel
[Top][All Lists]
Advanced

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

Re: [Libunwind-devel] Testing time


From: Paul Pluzhnikov
Subject: Re: [Libunwind-devel] Testing time
Date: Tue, 5 Apr 2011 12:48:10 -0700

On Tue, Mar 29, 2011 at 6:03 AM, Lassi Tuura <address@hidden> wrote:

> I have some reports of crashes on RHEL6 + GCC 4.6 + gold linker. LTO
> may be involved, I am not sure.

make in libunwind fails when using gold:

/bin/sh ../libtool --tag=CC   --mode=link gcc -U_FORTIFY_SOURCE  -g
-O2 -fexceptions -Wall -Wsign-compare   -o Gperf-simple Gperf-simple.o
../src/libunwind-x86_64.la
libtool: link: gcc -U_FORTIFY_SOURCE -g -O2 -fexceptions -Wall
-Wsign-compare -o .libs/Gperf-simple Gperf-simple.o
../src/.libs/libunwind-x86_64.so
/home/ppluzhnikov/binutils/build/gold/ld: Gperf-simple.o: in function
measure_init:../../tests/Gperf-simple.c:179: error: undefined
reference to '_Ux86_64_getcontext'
/home/ppluzhnikov/binutils/build/gold/ld: Gperf-simple.o: in function
measure_init:../../tests/Gperf-simple.c:206: error: undefined
reference to '_Ux86_64_getcontext'
/home/ppluzhnikov/binutils/build/gold/ld: Gperf-simple.o: in function
measure_unwind:../../tests/Gperf-simple.c:64: error: undefined
reference to '_Ux86_64_getcontext'
collect2: ld returned 1 exit status
make: *** [Gperf-simple] Error 1

AFAICT, this is happening because gold does not search DT_NEEDED of
libunwind-x86_64.so, and thus libunwind.so doesn't enter into the link.

>From what I understand, searching for DT_NEEDED at static link time is
emulating ld-linux inside gold -- system dependent, error prone and
shouldn't really be necessary.

The same error also happens with GNU-ld when I add
-Wl,--no-copy-dt-needed-entries (which, I've been told, some distributions
turn on in the gcc driver by default).

Attached patch fixes both of these problems.

Thanks,
-- 
Paul Pluzhnikov


diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5d3ecc5..73cae4e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -105,7 +105,8 @@ Ltest_nomalloc_SOURCES = Ltest-nomalloc.c
 Gtest_trace_SOURCES = Gtest-trace.c ident.c
 Ltest_trace_SOURCES = Ltest-trace.c ident.c

-LIBUNWIND = $(top_builddir)/src/libunwind-$(arch).la
+LIBUNWIND = $(top_builddir)/src/libunwind-$(arch).la \
+            $(top_builddir)/src/libunwind.la
 LIBUNWIND_ptrace = $(top_builddir)/src/libunwind-ptrace.a

 if USE_ELF32



reply via email to

[Prev in Thread] Current Thread [Next in Thread]