summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/mips/reloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/rtld-elf/mips/reloc.c')
-rw-r--r--libexec/rtld-elf/mips/reloc.c13
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;
OpenPOWER on IntegriCloud