]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 21 May 2022 02:21:48 +0000 (19:21 -0700)
committerSunil K Pandey <skpgkp2@gmail.com>
Tue, 19 Jul 2022 03:45:20 +0000 (20:45 -0700)
According to x86-64 psABI, r_addend should be ignored for R_X86_64_GLOB_DAT
and R_X86_64_JUMP_SLOT.  Since linkers always set their r_addends to 0, we
can ignore their r_addends.

Reviewed-by: Fangrui Song <maskray@google.com>
(cherry picked from commit f8587a61892cbafd98ce599131bf4f103466f084)

sysdeps/x86_64/dl-machine.h

index 94296719d4d9fb8203e2273e7e324b1cea1f528f..742682517179fab591b52c70b107af7b406e913e 100644 (file)
@@ -347,11 +347,13 @@ and creates an unsatisfiable circular dependency.\n",
 #  endif
          /* Set to symbol size plus addend.  */
          value = sym->st_size;
+         *reloc_addr = value + reloc->r_addend;
+         break;
 # endif
-         /* Fall through.  */
+
        case R_X86_64_GLOB_DAT:
        case R_X86_64_JUMP_SLOT:
-         *reloc_addr = value + reloc->r_addend;
+         *reloc_addr = value;
          break;
 
 # ifndef RESOLVE_CONFLICT_FIND_MAP