diff options
author | jhb <jhb@FreeBSD.org> | 2016-12-01 20:36:48 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2016-12-01 20:36:48 +0000 |
commit | 3673260fc9cd940469688433ec5f09ca53d19107 (patch) | |
tree | a072e04921e54dd0e8edfd2db415454f8fb6556a /libexec | |
parent | eb77968c18f03c2025c676c2567f9afb4589263a (diff) | |
download | FreeBSD-src-3673260fc9cd940469688433ec5f09ca53d19107.zip FreeBSD-src-3673260fc9cd940469688433ec5f09ca53d19107.tar.gz |
MFC 308456: Pass the correct flag to find_symdef() from _rtld_bind().
When symbol versioning was added to rtld, the boolean 'in_plt' argument
to find_symdef() was converted to a bitmask of flags. The first flag
added was 'SYMLOOK_IN_PLT' which replaced the 'in_plt' bool. This
happened to still work by accident as SYMLOOK_IN_PLT had the value of 1
which is the same as 'true', so there should be no functional change.
Diffstat (limited to 'libexec')
-rw-r--r-- | libexec/rtld-elf/rtld.c | 4 | ||||
-rw-r--r-- | libexec/rtld-elf/sparc64/reloc.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index 75fda31..d04cf85 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -707,8 +707,8 @@ _rtld_bind(Obj_Entry *obj, Elf_Size reloff) rel = (const Elf_Rel *) ((caddr_t) obj->pltrela + reloff); where = (Elf_Addr *) (obj->relocbase + rel->r_offset); - def = find_symdef(ELF_R_SYM(rel->r_info), obj, &defobj, true, NULL, - &lockstate); + def = find_symdef(ELF_R_SYM(rel->r_info), obj, &defobj, SYMLOOK_IN_PLT, + NULL, &lockstate); if (def == NULL) rtld_die(); if (ELF_ST_TYPE(def->st_info) == STT_GNU_IFUNC) diff --git a/libexec/rtld-elf/sparc64/reloc.c b/libexec/rtld-elf/sparc64/reloc.c index ab16879..197c66c 100644 --- a/libexec/rtld-elf/sparc64/reloc.c +++ b/libexec/rtld-elf/sparc64/reloc.c @@ -503,7 +503,7 @@ reloc_plt(Obj_Entry *obj) assert(ELF64_R_TYPE_ID(rela->r_info) == R_SPARC_JMP_SLOT); where = (Elf_Addr *)(obj->relocbase + rela->r_offset); def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, - true, NULL, lockstate); + SYMLOOK_IN_PLT, NULL, lockstate); value = (Elf_Addr)(defobj->relocbase + def->st_value); *where = value; } |