From 656554001c3b532f42a7d0c733b91c785615eec4 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 5 Jul 2006 06:27:44 +0000 Subject: revert fdpic patch so we can merge it in bit by bit --- ldso/ldso/dl-hash.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'ldso/ldso/dl-hash.c') diff --git a/ldso/ldso/dl-hash.c b/ldso/ldso/dl-hash.c index 85b2b403f..ed55031ed 100644 --- a/ldso/ldso/dl-hash.c +++ b/ldso/ldso/dl-hash.c @@ -83,7 +83,7 @@ static inline Elf_Symndx _dl_elf_hash(const char *name) * externals properly. */ struct elf_resolve *_dl_add_elf_hash_table(const char *libname, - DL_LOADADDR_TYPE loadaddr, unsigned long *dynamic_info, unsigned long dynamic_addr, + char *loadaddr, unsigned long *dynamic_info, unsigned long dynamic_addr, attribute_unused unsigned long dynamic_size) { Elf_Symndx *hash_addr; @@ -117,7 +117,7 @@ struct elf_resolve *_dl_add_elf_hash_table(const char *libname, hash_addr += tpnt->nbucket; tpnt->chains = hash_addr; } - tpnt->loadaddr = loadaddr; + tpnt->loadaddr = (ElfW(Addr))loadaddr; for (i = 0; i < DYNAMIC_SIZE; i++) tpnt->dynamic_info[i] = dynamic_info[i]; return tpnt; @@ -163,10 +163,8 @@ char *_dl_find_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve * /* Avoid calling .urem here. */ do_rem(hn, elf_hash_number, tpnt->nbucket); - symtab = (ElfW(Sym) *) DL_RELOC_ADDR (tpnt->dynamic_info[DT_SYMTAB], - tpnt->loadaddr); - strtab = (char *) DL_RELOC_ADDR (tpnt->dynamic_info[DT_STRTAB], - tpnt->loadaddr); + symtab = (ElfW(Sym) *) (intptr_t) (tpnt->dynamic_info[DT_SYMTAB]); + strtab = (char *) (tpnt->dynamic_info[DT_STRTAB]); for (si = tpnt->elf_buckets[hn]; si != STN_UNDEF; si = tpnt->chains[si]) { sym = &symtab[si]; @@ -186,13 +184,11 @@ char *_dl_find_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve * /* Perhaps we should support old style weak symbol handling * per what glibc does when you export LD_DYNAMIC_WEAK */ if (!weak_result) - weak_result = (char *) DL_RELOC_ADDR (sym->st_value, - tpnt->loadaddr); + weak_result = (char *)tpnt->loadaddr + sym->st_value; break; #endif case STB_GLOBAL: - return (char*) DL_RELOC_ADDR (sym->st_value, - tpnt->loadaddr); + return (char*)tpnt->loadaddr + sym->st_value; default: /* Local symbols not handled here */ break; } -- cgit v1.2.3