summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/i386
diff options
context:
space:
mode:
authortmm <tmm@FreeBSD.org>2002-11-18 22:08:50 +0000
committertmm <tmm@FreeBSD.org>2002-11-18 22:08:50 +0000
commitbd3dff9a70f16d5b5e3d0958fdf1aadf3d6b8e74 (patch)
tree144093917c9f45647cc2dc3355dc9f42d2ed85c3 /libexec/rtld-elf/i386
parent51e467ab6a998ed87592e244cb39ccfb38d424c0 (diff)
downloadFreeBSD-src-bd3dff9a70f16d5b5e3d0958fdf1aadf3d6b8e74.zip
FreeBSD-src-bd3dff9a70f16d5b5e3d0958fdf1aadf3d6b8e74.tar.gz
Fix the handling of high PLT entries (> 32764) on sparc64. This requires
additional arguments to reloc_jmpslot(), which is why MI code and MD code of other platforms had to be changed. Reviewed by: jake Approved by: re
Diffstat (limited to 'libexec/rtld-elf/i386')
-rw-r--r--libexec/rtld-elf/i386/reloc.c2
-rw-r--r--libexec/rtld-elf/i386/rtld_machdep.h3
2 files changed, 3 insertions, 2 deletions
diff --git a/libexec/rtld-elf/i386/reloc.c b/libexec/rtld-elf/i386/reloc.c
index f3425eb..f8457b3 100644
--- a/libexec/rtld-elf/i386/reloc.c
+++ b/libexec/rtld-elf/i386/reloc.c
@@ -259,7 +259,7 @@ reloc_jmpslots(Obj_Entry *obj)
if (def == NULL)
return -1;
target = (Elf_Addr)(defobj->relocbase + def->st_value);
- reloc_jmpslot(where, target, defobj);
+ reloc_jmpslot(where, target, defobj, obj, rel);
}
obj->jmpslots_done = true;
return 0;
diff --git a/libexec/rtld-elf/i386/rtld_machdep.h b/libexec/rtld-elf/i386/rtld_machdep.h
index 1f83411..4bd7ae2 100644
--- a/libexec/rtld-elf/i386/rtld_machdep.h
+++ b/libexec/rtld-elf/i386/rtld_machdep.h
@@ -38,7 +38,8 @@ struct Struct_Obj_Entry;
/* Fixup the jump slot at "where" to transfer control to "target". */
static inline Elf_Addr
reloc_jmpslot(Elf_Addr *where, Elf_Addr target,
- const struct Struct_Obj_Entry *obj)
+ const struct Struct_Obj_Entry *obj,
+ const struct Struct_Obj_Entry *refobj, const Elf_Rel *rel)
{
dbg("reloc_jmpslot: *%p = %p", (void *)(where),
(void *)(target));
OpenPOWER on IntegriCloud