about summary refs log tree commit diff
path: root/sysdeps/mips/dl-machine.h
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-09-18 18:32:27 +0000
committerRoland McGrath <roland@gnu.org>2002-09-18 18:32:27 +0000
commit0bc0e4dd09dd45bce4ab349717b3d0781021c5f7 (patch)
tree6b2aee6d70f1935444024f87b5dc1bd329eab075 /sysdeps/mips/dl-machine.h
parent62aecc63568ade4684f11cadd98e65d48b4025a8 (diff)
downloadglibc-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 'sysdeps/mips/dl-machine.h')
-rw-r--r--sysdeps/mips/dl-machine.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h
index bc5e84fd86..7dbdd794cf 100644
--- a/sysdeps/mips/dl-machine.h
+++ b/sysdeps/mips/dl-machine.h
@@ -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;					  \