2002-09-18 Roland McGrath <roland@redhat.com>
authorRoland McGrath <roland@gnu.org>
Wed, 18 Sep 2002 18:28:43 +0000 (18:28 +0000)
committerRoland McGrath <roland@gnu.org>
Wed, 18 Sep 2002 18:28:43 +0000 (18:28 +0000)
* elf/do-rel.h (elf_dynamic_do_rel): Mask off 0x8000 bit (hidden flag)
from the value taken from the DT_VERSYM table.
* elf/dl-runtime.c (fixup, profile_fixup): Likewise.
* sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Likewise.
(RESOLVE_GOTSYM): Likewise.

sysdeps/mips/dl-machine.h

index bc5e84f..7dbdd79 100644 (file)
@@ -293,7 +293,7 @@ __dl_runtime_resolve (ElfW(Word) sym_index,                               \
          {                                                                   \
            const ElfW(Half) *vernum =                                        \
              (const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]);        \
-           ElfW(Half) ndx = vernum[sym_index];                               \
+           ElfW(Half) ndx = vernum[sym_index & 0x7fff];                      \
            const struct r_found_version *version = &l->l_versions[ndx];      \
                                                                              \
            if (version->hash != 0)                                           \
@@ -562,7 +562,7 @@ elf_machine_got_rel (struct link_map *map, int lazy)
     ({                                                                   \
       const ElfW(Sym) *ref = sym;                                        \
       const struct r_found_version *version                              \
-        = vernum ? &map->l_versions[vernum[sym_index]] : NULL;           \
+        = vernum ? &map->l_versions[vernum[sym_index] & 0x7fff] : NULL;          \
       ElfW(Addr) value;                                                          \
       value = RESOLVE (&ref, version, R_MIPS_REL32);                     \
       (ref)? value + ref->st_value: 0;                                   \