diff options
author | dfr <dfr@FreeBSD.org> | 2001-10-15 18:48:42 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2001-10-15 18:48:42 +0000 |
commit | 7d69aa453630c63bba640d287d0781db518b5a53 (patch) | |
tree | 58745c0bcc233d2e6a7a5aae303d27432c4dd053 /libexec/rtld-elf/i386/reloc.c | |
parent | 8d45c0568791bbcc1147afa6e857e7b307c43c11 (diff) | |
download | FreeBSD-src-7d69aa453630c63bba640d287d0781db518b5a53.zip FreeBSD-src-7d69aa453630c63bba640d287d0781db518b5a53.tar.gz |
Add ia64 support. Various adjustments were made to existing targets to
cope with a few interface changes required by the ia64. In particular,
function pointers on ia64 need special treatment in rtld.
Diffstat (limited to 'libexec/rtld-elf/i386/reloc.c')
-rw-r--r-- | libexec/rtld-elf/i386/reloc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libexec/rtld-elf/i386/reloc.c b/libexec/rtld-elf/i386/reloc.c index aff70b0..3954452 100644 --- a/libexec/rtld-elf/i386/reloc.c +++ b/libexec/rtld-elf/i386/reloc.c @@ -237,7 +237,7 @@ reloc_jmpslots(Obj_Entry *obj) return 0; rellim = (const Elf_Rel *)((char *)obj->pltrel + obj->pltrelsize); for (rel = obj->pltrel; rel < rellim; rel++) { - Elf_Addr *where; + Elf_Addr *where, target; const Elf_Sym *def; const Obj_Entry *defobj; @@ -246,7 +246,8 @@ reloc_jmpslots(Obj_Entry *obj) def = find_symdef(ELF_R_SYM(rel->r_info), obj, &defobj, true, NULL); if (def == NULL) return -1; - reloc_jmpslot(where, (Elf_Addr)(defobj->relocbase + def->st_value)); + target = (Elf_Addr)(defobj->relocbase + def->st_value); + reloc_jmpslot(where, target, defobj); } obj->jmpslots_done = true; return 0; |