summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/stdlib')
-rw-r--r--lib/libc/stdlib/abort.c6
-rw-r--r--lib/libc/stdlib/jemalloc/Makefile.inc9
-rw-r--r--lib/libc/stdlib/jemalloc/Symbol.map5
-rw-r--r--lib/libc/stdlib/system.c22
4 files changed, 24 insertions, 18 deletions
diff --git a/lib/libc/stdlib/abort.c b/lib/libc/stdlib/abort.c
index b137e49..022c6aa 100644
--- a/lib/libc/stdlib/abort.c
+++ b/lib/libc/stdlib/abort.c
@@ -61,7 +61,7 @@ abort()
* any errors -- ISO C doesn't allow abort to return anyway.
*/
sigdelset(&act.sa_mask, SIGABRT);
- (void)_sigprocmask(SIG_SETMASK, &act.sa_mask, NULL);
+ (void)__libc_sigprocmask(SIG_SETMASK, &act.sa_mask, NULL);
(void)raise(SIGABRT);
/*
@@ -71,9 +71,9 @@ abort()
act.sa_handler = SIG_DFL;
act.sa_flags = 0;
sigfillset(&act.sa_mask);
- (void)_sigaction(SIGABRT, &act, NULL);
+ (void)__libc_sigaction(SIGABRT, &act, NULL);
sigdelset(&act.sa_mask, SIGABRT);
- (void)_sigprocmask(SIG_SETMASK, &act.sa_mask, NULL);
+ (void)__libc_sigprocmask(SIG_SETMASK, &act.sa_mask, NULL);
(void)raise(SIGABRT);
exit(1);
}
diff --git a/lib/libc/stdlib/jemalloc/Makefile.inc b/lib/libc/stdlib/jemalloc/Makefile.inc
index 4f5fa58..46006ee 100644
--- a/lib/libc/stdlib/jemalloc/Makefile.inc
+++ b/lib/libc/stdlib/jemalloc/Makefile.inc
@@ -4,7 +4,8 @@
JEMALLOCSRCS:= jemalloc.c arena.c atomic.c base.c bitmap.c chunk.c \
chunk_dss.c chunk_mmap.c ckh.c ctl.c extent.c hash.c huge.c mb.c \
- mutex.c prof.c quarantine.c rtree.c stats.c tcache.c tsd.c util.c
+ mutex.c pages.c prof.c quarantine.c rtree.c stats.c tcache.c tsd.c \
+ util.c
SYM_MAPS+=${LIBC_SRCTOP}/stdlib/jemalloc/Symbol.map
@@ -39,12 +40,8 @@ MLINKS+= \
jemalloc.3 xallocx.3 \
jemalloc.3 sallocx.3 \
jemalloc.3 dallocx.3 \
+ jemalloc.3 sdallocx.3 \
jemalloc.3 nallocx.3 \
- jemalloc.3 allocm.3 \
- jemalloc.3 rallocm.3 \
- jemalloc.3 sallocm.3 \
- jemalloc.3 dallocm.3 \
- jemalloc.3 nallocm.3 \
jemalloc.3 malloc.conf.5
.if defined(MALLOC_PRODUCTION)
diff --git a/lib/libc/stdlib/jemalloc/Symbol.map b/lib/libc/stdlib/jemalloc/Symbol.map
index 132664a..c073068 100644
--- a/lib/libc/stdlib/jemalloc/Symbol.map
+++ b/lib/libc/stdlib/jemalloc/Symbol.map
@@ -51,6 +51,11 @@ FBSD_1.3 {
__nallocm;
};
+FBSD_1.4 {
+ sdallocx;
+ __sdallocx;
+};
+
FBSDprivate_1.0 {
_malloc_thread_cleanup;
_malloc_prefork;
diff --git a/lib/libc/stdlib/system.c b/lib/libc/stdlib/system.c
index bd9ea5a..2b298e4 100644
--- a/lib/libc/stdlib/system.c
+++ b/lib/libc/stdlib/system.c
@@ -70,16 +70,20 @@ __libc_system(const char *command)
(void)sigaddset(&newsigblock, SIGCHLD);
(void)sigaddset(&newsigblock, SIGINT);
(void)sigaddset(&newsigblock, SIGQUIT);
- (void)_sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock);
+ (void)__libc_sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock);
switch(pid = vfork()) {
+ /*
+ * In the child, use unwrapped syscalls. libthr is in
+ * undefined state after vfork().
+ */
case -1: /* error */
- (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
+ (void)__libc_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
return (-1);
case 0: /* child */
/*
* Restore original signal dispositions and exec the command.
*/
- (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
+ (void)__sys_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
execl(_PATH_BSHELL, "sh", "-c", command, (char *)NULL);
_exit(127);
}
@@ -92,16 +96,16 @@ __libc_system(const char *command)
memset(&ign, 0, sizeof(ign));
ign.sa_handler = SIG_IGN;
(void)sigemptyset(&ign.sa_mask);
- (void)_sigaction(SIGINT, &ign, &intact);
- (void)_sigaction(SIGQUIT, &ign, &quitact);
+ (void)__libc_sigaction(SIGINT, &ign, &intact);
+ (void)__libc_sigaction(SIGQUIT, &ign, &quitact);
savedpid = pid;
do {
pid = _wait4(savedpid, &pstat, 0, (struct rusage *)0);
} while (pid == -1 && errno == EINTR);
- (void)_sigaction(SIGINT, &intact, NULL);
- (void)_sigaction(SIGQUIT, &quitact, NULL);
- (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
- return(pid == -1 ? -1 : pstat);
+ (void)__libc_sigaction(SIGINT, &intact, NULL);
+ (void)__libc_sigaction(SIGQUIT, &quitact, NULL);
+ (void)__libc_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
+ return (pid == -1 ? -1 : pstat);
}
__weak_reference(__libc_system, __system);
OpenPOWER on IntegriCloud