diff options
author | Roland McGrath <roland@gnu.org> | 2002-09-18 18:32:27 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-09-18 18:32:27 +0000 |
commit | 0bc0e4dd09dd45bce4ab349717b3d0781021c5f7 (patch) | |
tree | 6b2aee6d70f1935444024f87b5dc1bd329eab075 /elf | |
parent | 62aecc63568ade4684f11cadd98e65d48b4025a8 (diff) | |
download | glibc-0bc0e4dd09dd45bce4ab349717b3d0781021c5f7.tar.gz glibc-0bc0e4dd09dd45bce4ab349717b3d0781021c5f7.tar.xz glibc-0bc0e4dd09dd45bce4ab349717b3d0781021c5f7.zip |
* locale/lc-ctype.c (_nl_postload_ctype): Add compat_symbol decls for
the __ctype_* compat symbols, so the relocs generated bind to the right versioned global symbol in the shared object. * 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.
Diffstat (limited to 'elf')
-rw-r--r-- | elf/dl-runtime.c | 4 | ||||
-rw-r--r-- | elf/do-rel.h | 2 |
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)); |