diff options
Diffstat (limited to 'libexec/rtld-elf/mips/reloc.c')
-rw-r--r-- | libexec/rtld-elf/mips/reloc.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/libexec/rtld-elf/mips/reloc.c b/libexec/rtld-elf/mips/reloc.c index 0195df6..682adcd 100644 --- a/libexec/rtld-elf/mips/reloc.c +++ b/libexec/rtld-elf/mips/reloc.c @@ -238,7 +238,8 @@ _mips_rtld_bind(Obj_Entry *obj, Elf_Size reloff) const Obj_Entry *defobj; Elf_Addr target; - def = find_symdef(reloff, obj, &defobj, SYMLOOK_IN_PLT, NULL); + def = find_symdef(reloff, obj, &defobj, SYMLOOK_IN_PLT, NULL, + NULL); if (def == NULL) _rtld_error("bind failed no symbol"); @@ -253,7 +254,7 @@ _mips_rtld_bind(Obj_Entry *obj, Elf_Size reloff) } int -reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld) +reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, RtldLockState *lockstate) { const Elf_Rel *rel; const Elf_Rel *rellim; @@ -312,7 +313,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld) * to 0 if there are non-PLT references, but older * versions of GNU ld do not do this. */ - def = find_symdef(i, obj, &defobj, false, NULL); + def = find_symdef(i, obj, &defobj, false, NULL, + lockstate); if (def == NULL) return -1; *got = def->st_value + (Elf_Addr)defobj->relocbase; @@ -353,7 +355,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld) } } else { /* TODO: add cache here */ - def = find_symdef(i, obj, &defobj, false, NULL); + def = find_symdef(i, obj, &defobj, false, NULL, + lockstate); if (def == NULL) { dbg("Warning4, cant find symbole %d", i); return -1; @@ -487,7 +490,7 @@ reloc_plt(Obj_Entry *obj) * LD_BIND_NOW was set - force relocation for all jump slots */ int -reloc_jmpslots(Obj_Entry *obj) +reloc_jmpslots(Obj_Entry *obj, RtldLockState *lockstate) { /* Do nothing */ obj->jmpslots_done = true; |