diff options
author | tmm <tmm@FreeBSD.org> | 2002-11-18 22:08:50 +0000 |
---|---|---|
committer | tmm <tmm@FreeBSD.org> | 2002-11-18 22:08:50 +0000 |
commit | bd3dff9a70f16d5b5e3d0958fdf1aadf3d6b8e74 (patch) | |
tree | 144093917c9f45647cc2dc3355dc9f42d2ed85c3 /libexec/rtld-elf/i386 | |
parent | 51e467ab6a998ed87592e244cb39ccfb38d424c0 (diff) | |
download | FreeBSD-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.c | 2 | ||||
-rw-r--r-- | libexec/rtld-elf/i386/rtld_machdep.h | 3 |
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)); |