OSDN Git Service

ldso/mips: fix symbol lookup for JUMP_SLOT and COPY relocations
authorCarmelo Amoroso <carmelo.amoroso@st.com>
Thu, 19 Jan 2012 14:28:15 +0000 (15:28 +0100)
committerKhem Raj <raj.khem@gmail.com>
Tue, 24 Jan 2012 00:21:30 +0000 (16:21 -0800)
Fill properly the sym_ref fields when invoking _dl_find_hash to lookup
symbols

Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
ldso/ldso/mips/elfinterp.c

index b748839..5d0eff5 100644 (file)
@@ -161,7 +161,7 @@ int _dl_parse_relocation_information(struct dyn_elf *xpnt,
        unsigned long old_val=0;
 #endif
 
-       struct symbol_ref sym_ref = { NULL, NULL };
+       struct symbol_ref sym_ref;
        /* Now parse the relocation information */
        rel_size = rel_size / sizeof(ElfW(Rel));
        rpnt = (ELF_RELOC *) rel_addr;
@@ -187,6 +187,8 @@ int _dl_parse_relocation_information(struct dyn_elf *xpnt,
 #endif
 
                if (reloc_type == R_MIPS_JUMP_SLOT || reloc_type == R_MIPS_COPY) {
+                       sym_ref.tpnt = NULL;
+                       sym_ref.sym = &symtab[symtab_index];
                        symbol_addr = (unsigned long)_dl_find_hash(symname,
                                                                   scope,
                                                                   tpnt,