mips/dl: Handle addend in RELA entries.

This commit is contained in:
Vladimir Serbinenko 2015-10-09 23:32:06 +02:00
parent f59b83fce6
commit c2443e49bc

View file

@ -138,6 +138,10 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
sym = (Elf_Sym *) ((char *) mod->symtab sym = (Elf_Sym *) ((char *) mod->symtab
+ mod->symsize * ELF_R_SYM (rel->r_info)); + mod->symsize * ELF_R_SYM (rel->r_info));
sym_value = sym->st_value; sym_value = sym->st_value;
if (s->sh_type == SHT_RELA)
{
sym_value += ((Elf_Rela *) rel)->r_addend;
}
if (sym_value == (grub_addr_t) &__gnu_local_gp_dummy) if (sym_value == (grub_addr_t) &__gnu_local_gp_dummy)
sym_value = (grub_addr_t) mod->got; sym_value = (grub_addr_t) mod->got;
else if (sym_value == (grub_addr_t) &_gp_disp_dummy) else if (sym_value == (grub_addr_t) &_gp_disp_dummy)