summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/arm/reloc.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-09-12 16:22:01 +0000
committerkib <kib@FreeBSD.org>2014-09-12 16:22:01 +0000
commit7102c463391b21fea4e6679d5c6539bb04b7f528 (patch)
tree72dd52a692d6e0f484ed7d8de8de5fe8d9403512 /libexec/rtld-elf/arm/reloc.c
parent306ae7f936713a7fcf65a414441afee1a31534c1 (diff)
downloadFreeBSD-src-7102c463391b21fea4e6679d5c6539bb04b7f528.zip
FreeBSD-src-7102c463391b21fea4e6679d5c6539bb04b7f528.tar.gz
MFC r270798:
Process STT_GNU_IFUNC when doing non-plt relocations. MFC r270802: Only do the second pass over non-plt relocations when the first pass found IFUNCs. Approved by: re (gjb)
Diffstat (limited to 'libexec/rtld-elf/arm/reloc.c')
-rw-r--r--libexec/rtld-elf/arm/reloc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libexec/rtld-elf/arm/reloc.c b/libexec/rtld-elf/arm/reloc.c
index 715cb7e..9cbdc0e 100644
--- a/libexec/rtld-elf/arm/reloc.c
+++ b/libexec/rtld-elf/arm/reloc.c
@@ -324,6 +324,10 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags,
/* The relocation for the dynamic loader has already been done. */
if (obj == obj_rtld)
return (0);
+ if ((flags & SYMLOOK_IFUNC) != 0)
+ /* XXX not implemented */
+ return (0);
+
/*
* The dynamic loader may be called from a thread, we have
* limited amounts of stack available so we cannot use alloca().
OpenPOWER on IntegriCloud