diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2012-01-04 16:43:29 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2012-01-04 16:43:29 +0000 |
| commit | a7d4832dd55c75963d7803e2979e835e50065a6c (patch) | |
| tree | b2448b7fdd9daa2380f97d7d2b37b2a0c1b7ffec /libexec/rtld-elf/mips | |
| parent | d5e58e2c676cea1dff8da9d88d4026ff3843e336 (diff) | |
MFC r228435:
Add support for STT_GNU_IFUNC and R_MACHINE_IRELATIVE GNU extensions to
rtld on 386 and amd64.
MFC r228503:
Postpone the resolution for irelative/ifunc right before initializers
are called, and drop bind lock around calls to dispatcher. Use
initlist to iterate over the objects instead of the ->next, due to
drop of the bind lock in iteration.
For i386/reloc.c:reloc_iresolve(), fix calculation of the dispatch
function address for dso, by taking into account possible non-zero
relocbase.
MFC r228635 (by nwhitehorn):
Fix RTLD on PowerPC after r228435. Changing the order of init_pltgot()
caused the icache to be invalidated at the wrong time, resulting in
an icache full of nonsense in the PLT section.
Notes
svn path=/stable/9/; revision=229503
Diffstat (limited to 'libexec/rtld-elf/mips')
| -rw-r--r-- | libexec/rtld-elf/mips/reloc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libexec/rtld-elf/mips/reloc.c b/libexec/rtld-elf/mips/reloc.c index 682adcd1f265..0f538498a621 100644 --- a/libexec/rtld-elf/mips/reloc.c +++ b/libexec/rtld-elf/mips/reloc.c @@ -498,6 +498,22 @@ reloc_jmpslots(Obj_Entry *obj, RtldLockState *lockstate) return (0); } +int +reloc_iresolve(Obj_Entry *obj, struct Struct_RtldLockState *lockstate) +{ + + /* XXX not implemented */ + return (0); +} + +int +reloc_gnu_ifunc(Obj_Entry *obj, struct Struct_RtldLockState *lockstate) +{ + + /* XXX not implemented */ + return (0); +} + Elf_Addr reloc_jmpslot(Elf_Addr *where, Elf_Addr target, const Obj_Entry *defobj, const Obj_Entry *obj, const Elf_Rel *rel) |
