summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/elf_utils.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2016-03-12 17:33:40 +0000
committerkib <kib@FreeBSD.org>2016-03-12 17:33:40 +0000
commit32bf5aa11d449f2e148cec5c2272be9962232192 (patch)
tree9cc9233dc3bbf22f0133910944ebc9ee5c1f9c87 /lib/libc/gen/elf_utils.c
parent5dfb941cf33c8900cbad0f36df3eda5b938c602b (diff)
downloadFreeBSD-src-32bf5aa11d449f2e148cec5c2272be9962232192.zip
FreeBSD-src-32bf5aa11d449f2e148cec5c2272be9962232192.tar.gz
MFC r295407:
Make libc __pthread_map_stacks_exec() interposed.
Diffstat (limited to 'lib/libc/gen/elf_utils.c')
-rw-r--r--lib/libc/gen/elf_utils.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/libc/gen/elf_utils.c b/lib/libc/gen/elf_utils.c
index 7bd7511..3d8c593 100644
--- a/lib/libc/gen/elf_utils.c
+++ b/lib/libc/gen/elf_utils.c
@@ -32,6 +32,7 @@
#include <sys/sysctl.h>
#include <link.h>
#include <stddef.h>
+#include "libc_private.h"
int
__elf_phdr_match_addr(struct dl_phdr_info *phdr_info, void *addr)
@@ -51,9 +52,8 @@ __elf_phdr_match_addr(struct dl_phdr_info *phdr_info, void *addr)
return (i != phdr_info->dlpi_phnum);
}
-#pragma weak __pthread_map_stacks_exec
void
-__pthread_map_stacks_exec(void)
+__libc_map_stacks_exec(void)
{
int mib[2];
struct rlimit rlim;
@@ -72,3 +72,10 @@ __pthread_map_stacks_exec(void)
rlim.rlim_cur, _rtld_get_stack_prot());
}
+#pragma weak __pthread_map_stacks_exec
+void
+__pthread_map_stacks_exec(void)
+{
+
+ ((void (*)(void))__libc_interposing[INTERPOS_map_stacks_exec])();
+}
OpenPOWER on IntegriCloud