aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
Diffstat (limited to 'elf')
-rw-r--r--elf/dl-runtime.c4
-rw-r--r--elf/do-rel.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
index 9b24c30841..911c54159b 100644
--- a/elf/dl-runtime.c
+++ b/elf/dl-runtime.c
@@ -84,7 +84,7 @@ fixup (
{
const ElfW(Half) *vernum =
(const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]);
- ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)];
+ ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info) & 0x7fff];
const struct r_found_version *version = &l->l_versions[ndx];
if (version->hash != 0)
@@ -179,7 +179,7 @@ profile_fixup (
{
const ElfW(Half) *vernum =
(const void *) D_PTR (l,l_info[VERSYMIDX (DT_VERSYM)]);
- ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)];
+ ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info) & 0x7fff];
const struct r_found_version *version = &l->l_versions[ndx];
if (version->hash != 0)
diff --git a/elf/do-rel.h b/elf/do-rel.h
index bad102549b..c693b6f1e8 100644
--- a/elf/do-rel.h
+++ b/elf/do-rel.h
@@ -111,7 +111,7 @@ elf_dynamic_do_rel (struct link_map *map,
for (; r < end; ++r)
{
- ElfW(Half) ndx = version[ELFW(R_SYM) (r->r_info)];
+ ElfW(Half) ndx = version[ELFW(R_SYM) (r->r_info)] & 0x7fff;
elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)],
&map->l_versions[ndx],
(void *) (l_addr + r->r_offset));