bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/13178] New: Unnecessary GOT relocation created for IFUNC


From: drepper.fsp at gmail dot com
Subject: [Bug ld/13178] New: Unnecessary GOT relocation created for IFUNC
Date: Sun, 11 Sep 2011 14:26:13 +0000

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

             Bug #: 13178
           Summary: Unnecessary GOT relocation created for IFUNC
           Product: binutils
           Version: 2.21
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
        AssignedTo: address@hidden
        ReportedBy: address@hidden
    Classification: Unclassified
              Host: x86_64-linux


Created attachment 5926
  --> http://sourceware.org/bugzilla/attachment.cgi?id=5926
Test program to show unnecessary IFUNC relocation

When compiling the attached code using

  gcc -shared -o u.so -fpic u.so

on an x86-64 system you will see the following relocations:

Relocation section [ 7] '.rela.dyn' for section [ 0] '' at offset 0x3e8
contains 5 entries:
  Offset              Type            Value               Addend Name
  0x0000000000200760  X86_64_RELATIVE 000000000000000000  +2099040 
  0x00000000002008e8  X86_64_GLOB_DAT 000000000000000000      +0 __gmon_start__
  0x00000000002008f0  X86_64_GLOB_DAT 000000000000000000      +0
_Jv_RegisterClasses
  0x00000000002008f8  X86_64_GLOB_DAT 000000000000000000      +0 __cxa_finalize
  0x0000000000200900  X86_64_GLOB_DAT 0x00000000000005d8      +0 f

Relocation section [ 8] '.rela.plt' for section [10] '.plt' at offset 0x460
contains 3 entries:
  Offset              Type            Value               Addend Name
  0x0000000000200920  X86_64_JUMP_SLOT 000000000000000000      +0
__cxa_finalize
  0x0000000000200928  X86_64_JUMP_SLOT 0x00000000000005d8      +0 f
  0x0000000000200930  X86_64_JUMP_SLOT 0x00000000000005e5      +0 g


There are two relocations against f.  Since there is no reference to f other
than through a call there is no need for a GOT relocation.  The PLT relocation
is all that's needed.  It works fine for normal symbols (there is only one
relocation for g) and IFUNCs should be handled just like that.

-- 
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]