瀏覽代碼

ldso/mips: fix symbol lookup for JUMP_SLOT and COPY relocations

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>
Carmelo Amoroso 12 年之前
父節點
當前提交
3837739512
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      ldso/ldso/mips/elfinterp.c

+ 3 - 1
ldso/ldso/mips/elfinterp.c

@@ -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,