bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/13671] gld creates i386 relocations not supported by Solaris ld.


From: hjl.tools at gmail dot com
Subject: [Bug ld/13671] gld creates i386 relocations not supported by Solaris ld.so.1
Date: Wed, 14 Feb 2018 14:18:30 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=13671

--- Comment #19 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Rainer Orth from comment #18)
> > --- Comment #17 from H.J. Lu <hjl.tools at gmail dot com> ---
> > Please try users/hjl/solaris branch at
> >
> > https://github.com/hjl-tools/binutils-gdb
> 
> Any reason not to keep that branch in the binutils-git repo on
> sourceware?  That's where I looked initially, confusing the hell out of
> me ;-)

It is easier to update a branch on github.

> Fortunately, a lot of failures are gone, but still a couple remain, all
> from g++.dg/tree-prof and gcc.dg/tree-prof tests, which SEGV, e.g.
> 
> FAIL: gcc.dg/tree-prof/crossmodule-indircall-1.c execution,   
> -fprofile-generate -D_PROFILE_GENERATE
> 
> Thread 2 received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 1 (LWP 1)]
> 0x080491c9 in __gcov_indirect_call_profiler_v2 (value=151663852, 
>     cur_func=0x8048f10 <add>)
>     at /vol/gcc/src/hg/trunk/local/libgcc/libgcov-profiler.c:335
> 335       if (cur_func == __gcov_indirect_call_callee
> => 0x8049019 <__gcov_indirect_call_profiler_v2+41>:     cmp    %edx,(%eax)
> (gdb) p/x $eax
> $1 = 0x66caa44
> 
> That address is indeed unmapped and below the text segment.
> 
> (gdb) where
> #0  0x080491c9 in __gcov_indirect_call_profiler_v2 (value=151663852, 
>     cur_func=0x8048f10 <add>)
>     at /vol/gcc/src/hg/trunk/local/libgcc/libgcov-profiler.c:335
> #1  0x08048f41 in add ()
> #2  0x08048e5c in main ()
> 
> elfdump -r complains about the executable:
> 
> crossmodule-indircall-1.x01: bad relocation entry: R_386_TLS_TPOFF:
> relocation requires symbol
> crossmodule-indircall-1.x01: bad relocation entry: R_386_TLS_TPOFF:
> relocation requires symbol

What doe Solaris ld generate?

>     [3]  R_386_TLS_TPOFF  0x804d22c       0x4  .got    
>     [4]  R_386_TLS_TPOFF  0x804d230         0  .got    
>    [11]  R_386_JMP_SLOT   0x804d1c8 0x80489f6  .got    ___tls_get_addr
> 
> It happens even when I build without -flto:
> 
> $ ld -m elf_i386_sol2 -o crossmodule-indircall-1.x01 /usr/lib/crt1.o
> crossmodule-indircall-1.o crossmodule-indircall-1a.o -lm -lgcov -lgcc -lc
> /usr/lib/crtn.o
> 
> Input files at
> 
>       
> https://www.cebitec.uni-bielefeld.de/~ro/files/crossmodule-indircall-1.tar.
> bz2

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

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