]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Don't handle R_X86_64_RELATIVE64 in ld.so
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 11 May 2012 02:24:54 +0000 (19:24 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 11 May 2012 02:24:54 +0000 (19:24 -0700)
ChangeLog
sysdeps/x86_64/dl-machine.h

index 2f0880257c719421395bd5f0e8328e2ed79702d4..b7a5055da3525eabe006ed992ad4a84bcc0b25a6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * sysdeps/x86_64/dl-machine.h (elf_machine_rela_relative): Handle
+       R_X86_64_RELATIVE64 only if RTLD_BOOTSTRAP isn't defined.
+
 2012-05-10  H.J. Lu  <hongjiu.lu@intel.com>
 
        * elf/elf.h (R_X86_64_RELATIVE64): New.
index e3bab5f22d09e72566971a10b7c8301a782f6f1b..32814b14f740e0565819b5320382b7d3c3391315 100644 (file)
@@ -487,11 +487,13 @@ elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
                           void *const reloc_addr_arg)
 {
   ElfW(Addr) *const reloc_addr = reloc_addr_arg;
+#if !defined RTLD_BOOTSTRAP
   /* l_addr + r_addend may be > 0xffffffff and R_X86_64_RELATIVE64
      relocation updates the whole 64-bit entry.  */
   if (__builtin_expect (ELFW(R_TYPE) (reloc->r_info) == R_X86_64_RELATIVE64, 0))
     *(Elf64_Addr *) reloc_addr = (Elf64_Addr) l_addr + reloc->r_addend;
   else
+#endif
     {
       assert (ELFW(R_TYPE) (reloc->r_info) == R_X86_64_RELATIVE);
       *reloc_addr = l_addr + reloc->r_addend;