diff options
Diffstat (limited to 'libexec/rtld-elf/ia64/reloc.c')
-rw-r--r-- | libexec/rtld-elf/ia64/reloc.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libexec/rtld-elf/ia64/reloc.c b/libexec/rtld-elf/ia64/reloc.c index 86b7ce6..8ec6860 100644 --- a/libexec/rtld-elf/ia64/reloc.c +++ b/libexec/rtld-elf/ia64/reloc.c @@ -407,6 +407,18 @@ make_function_pointer(const Elf_Sym *sym, const Obj_Entry *obj) return fptrs[index]; } +void +call_initfini_pointer(const Obj_Entry *obj, Elf_Addr target) +{ + struct fptr fptr; + + fptr.gp = (Elf_Addr) obj->pltgot; + fptr.target = target; + dbg(" initfini: target=%p, gp=%p", + (void *) fptr.target, (void *) fptr.gp); + ((InitFunc) &fptr)(); +} + /* Initialize the special PLT entries. */ void init_pltgot(Obj_Entry *obj) |