bug-binutils
[Top][All Lists]
Advanced

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

[Bug gold/12980] New: bad GOT reloc generation in -shared for STV_PROTEC


From: roland at gnu dot org
Subject: [Bug gold/12980] New: bad GOT reloc generation in -shared for STV_PROTECTED with primary PLT/copy reference
Date: Sat, 9 Jul 2011 22:59:22 +0000

http://sourceware.org/bugzilla/show_bug.cgi?id=12980

           Summary: bad GOT reloc generation in -shared for STV_PROTECTED
                    with primary PLT/copy reference
           Product: binutils
           Version: 2.22 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gold
        AssignedTo: address@hidden
        ReportedBy: address@hidden


This comes up in a glibc dynamic linker test.
See elf/vis{main,mod[123]}.c in the sourceware glibc tree.

Here vismod1.c generates an STV_PROTECTED definition of "protinmod" and
code with a R_X86_64_GOTPCREL taking its address.  vismain.c generates an
undefined reference to protinmod, and uses both &protinmod and direct calls
to protinmod; so it has a PLT entry for protinmod that is the canonical
function pointer address for &protinmod.

BFD ld -shared building vismod1.so emits an R_X86_64_GLOB_DAT for the
R_X86_64_GOTPCREL referencing protinmod.  gold -shared generates an
R_X86_64_RELATIVE instead.  This yields the wrong address for &protinmind
(the DSO real definition address rather than the non-PIC executable's PLT
entry).

There may be other similar cases, but I suspect all the failures in this test
are the same bug or ones obviously related enough you will find them by looking
at your code.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- 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]