x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT

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 f8587a6189)
This commit is contained in:
H.J. Lu 2022-05-20 19:21:48 -07:00 committed by Sunil K Pandey
parent 650bf51c78
commit f9f0fbbf7b

View File

@ -339,11 +339,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