summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/powerpc64/reloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/rtld-elf/powerpc64/reloc.c')
-rw-r--r--libexec/rtld-elf/powerpc64/reloc.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libexec/rtld-elf/powerpc64/reloc.c b/libexec/rtld-elf/powerpc64/reloc.c
index e6198f0..eca489d 100644
--- a/libexec/rtld-elf/powerpc64/reloc.c
+++ b/libexec/rtld-elf/powerpc64/reloc.c
@@ -433,7 +433,7 @@ reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate)
*/
Elf_Addr
reloc_jmpslot(Elf_Addr *wherep, Elf_Addr target, const Obj_Entry *defobj,
- const Obj_Entry *obj, const Elf_Rel *rel)
+ const Obj_Entry *obj, const Elf_Rel *rel)
{
/*
@@ -447,6 +447,9 @@ reloc_jmpslot(Elf_Addr *wherep, Elf_Addr target, const Obj_Entry *defobj,
(void *)wherep, (void *)target, *(Elf_Addr *)target,
(Elf_Addr)defobj->relocbase);
+ if (ld_bind_not)
+ goto out;
+
/*
* For the trampoline, the second two elements of the function
* descriptor are unused, so we are fine replacing those at any time
@@ -476,11 +479,13 @@ reloc_jmpslot(Elf_Addr *wherep, Elf_Addr target, const Obj_Entry *defobj,
((struct funcdesc *)(wherep))->toc +=
(Elf_Addr)defobj->relocbase;
}
+out:
#else
dbg(" reloc_jmpslot: where=%p, target=%p", (void *)wherep,
(void *)target);
- *wherep = target;
+ if (!ld_bind_not)
+ *wherep = target;
#endif
return (target);
OpenPOWER on IntegriCloud