From 1e811cd2c026257eb9adc27f0978698cdc226c26 Mon Sep 17 00:00:00 2001 From: "\"Steven J. Hill\"" Date: Mon, 20 May 2002 18:30:17 +0000 Subject: Fixed MIPS dynamic linker by removing link order dependency bug. --- ldso/ldso/mips/dl-sysdep.h | 41 +---------------------------------------- 1 file changed, 1 insertion(+), 40 deletions(-) (limited to 'ldso/ldso/mips/dl-sysdep.h') diff --git a/ldso/ldso/mips/dl-sysdep.h b/ldso/ldso/mips/dl-sysdep.h index 9d48d8f73..a669bba67 100644 --- a/ldso/ldso/mips/dl-sysdep.h +++ b/ldso/ldso/mips/dl-sysdep.h @@ -20,12 +20,10 @@ /* - * Initialization sequence for the application or library GOT. + * Initialization sequence for the application/library GOT. */ #define INIT_GOT(GOT_BASE,MODULE) \ do { \ - Elf32_Sym *sym; \ - char *strtab; \ unsigned long i; \ \ /* Check if this is the dynamic linker itself */ \ @@ -41,43 +39,6 @@ do { \ while (i < MODULE->mips_local_gotno) \ GOT_BASE[i++] += (unsigned long) MODULE->loadaddr; \ \ - /* Handle global GOT entries */ \ - GOT_BASE += MODULE->mips_local_gotno; \ - sym = (Elf32_Sym *) (MODULE->dynamic_info[DT_SYMTAB] + \ - (unsigned long) MODULE->loadaddr) + MODULE->mips_gotsym; \ - strtab = (char *) (MODULE->dynamic_info[DT_STRTAB] + \ - (unsigned long) MODULE->loadaddr); \ - i = MODULE->mips_symtabno - MODULE->mips_gotsym; \ - while (i--) { \ - if (sym->st_shndx == SHN_UNDEF) { \ - if (ELF32_ST_TYPE(sym->st_info) == STT_FUNC && \ - sym->st_value) \ - *GOT_BASE = sym->st_value + \ - (unsigned long) MODULE->loadaddr; \ - else { \ - *GOT_BASE = (unsigned long) _dl_find_hash(strtab + \ - sym->st_name, MODULE->symbol_scope, NULL, 1); \ - } \ - } \ - else if (sym->st_shndx == SHN_COMMON) { \ - *GOT_BASE = (unsigned long) _dl_find_hash(strtab + \ - sym->st_name, MODULE->symbol_scope, NULL, 1); \ - } \ - else if (ELF32_ST_TYPE(sym->st_info) == STT_FUNC && \ - *GOT_BASE != sym->st_value) \ - *GOT_BASE += (unsigned long) MODULE->loadaddr; \ - else if (ELF32_ST_TYPE(sym->st_info) == STT_SECTION) { \ - if (sym->st_other == 0) \ - *GOT_BASE += (unsigned long) MODULE->loadaddr; \ - } \ - else { \ - *GOT_BASE = (unsigned long) _dl_find_hash(strtab + \ - sym->st_name, MODULE->symbol_scope, NULL, 1); \ - } \ - \ - ++GOT_BASE; \ - ++sym; \ - } \ } while (0) -- cgit v1.2.3