diff options
Diffstat (limited to 'usr/src/lib/libc')
-rw-r--r-- | usr/src/lib/libc/amd64/Makefile | 5 | ||||
-rw-r--r-- | usr/src/lib/libc/i386/Makefile | 5 | ||||
-rw-r--r-- | usr/src/lib/libc/i386/Makefile.com | 7 | ||||
-rw-r--r-- | usr/src/lib/libc/inc/libc_int.h | 2 | ||||
-rw-r--r-- | usr/src/lib/libc/port/gen/ssignal.c | 23 | ||||
-rw-r--r-- | usr/src/lib/libc/port/threads/c11_thr.c | 3 | ||||
-rw-r--r-- | usr/src/lib/libc/port/threads/pthread.c | 10 | ||||
-rw-r--r-- | usr/src/lib/libc/port/threads/tls.c | 14 |
8 files changed, 41 insertions, 28 deletions
diff --git a/usr/src/lib/libc/amd64/Makefile b/usr/src/lib/libc/amd64/Makefile index f5c4224338..2e5b58e349 100644 --- a/usr/src/lib/libc/amd64/Makefile +++ b/usr/src/lib/libc/amd64/Makefile @@ -24,7 +24,7 @@ # Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. # Copyright 2013 Garrett D'Amore <garrett@damore.org> # Copyright 2018 Nexenta Systems, Inc. -# Copyright 2018 Joyent, Inc. +# Copyright (c) 2019, Joyent, Inc. # LIBCBASE= . @@ -1036,6 +1036,9 @@ CERRWARN += -_gcc=-Wno-clobbered CERRWARN += -_gcc=-Wno-unused-function CERRWARN += -_gcc=-Wno-address +# not linted +SMATCH=off + # Setting THREAD_DEBUG = -DTHREAD_DEBUG (make THREAD_DEBUG=-DTHREAD_DEBUG ...) # enables ASSERT() checking in the threads portion of the library. # This is automatically enabled for DEBUG builds, not for non-debug builds. diff --git a/usr/src/lib/libc/i386/Makefile b/usr/src/lib/libc/i386/Makefile index 00376a40a1..178a2c216f 100644 --- a/usr/src/lib/libc/i386/Makefile +++ b/usr/src/lib/libc/i386/Makefile @@ -22,10 +22,7 @@ # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # -# ident "%Z%%M% %I% %E% SMI" -# -# lib/libc/i386/Makefile -# +# Copyright (c) 2019, Joyent, Inc. LIBCBASE=../i386 diff --git a/usr/src/lib/libc/i386/Makefile.com b/usr/src/lib/libc/i386/Makefile.com index e9343c2f15..69f45567b2 100644 --- a/usr/src/lib/libc/i386/Makefile.com +++ b/usr/src/lib/libc/i386/Makefile.com @@ -21,10 +21,10 @@ # # Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright 2019 Joyent, Inc. # Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. # Copyright 2013 Garrett D'Amore <garrett@damore.org> # Copyright 2018 Nexenta Systems, Inc. -# Copyright 2018 Joyent, Inc. # LIBCDIR= $(SRC)/lib/libc @@ -1085,6 +1085,9 @@ CERRWARN += -_gcc=-Wno-clobbered CERRWARN += -_gcc=-Wno-unused-function CERRWARN += -_gcc=-Wno-address +# not linted +SMATCH=off + # Setting THREAD_DEBUG = -DTHREAD_DEBUG (make THREAD_DEBUG=-DTHREAD_DEBUG ...) # enables ASSERT() checking in the threads portion of the library. # This is automatically enabled for DEBUG builds, not for non-debug builds. @@ -1317,7 +1320,7 @@ $(LIB_PIC): pics $$(PICS) $(POST_PROCESS_A) $(LIBCBASE)/crt/_rtbootld.s: $(LIBCBASE)/crt/_rtboot.s $(LIBCBASE)/crt/_rtld.c - $(CC) $(CPPFLAGS) $(CTF_FLAGS) -O -S $(C_PICFLAGS) \ + $(CC) $(CPPFLAGS) -_smatch=off $(CTF_FLAGS) -O -S $(C_PICFLAGS) \ $(LIBCBASE)/crt/_rtld.c -o $(LIBCBASE)/crt/_rtld.s $(CAT) $(LIBCBASE)/crt/_rtboot.s $(LIBCBASE)/crt/_rtld.s > $@ $(RM) $(LIBCBASE)/crt/_rtld.s diff --git a/usr/src/lib/libc/inc/libc_int.h b/usr/src/lib/libc/inc/libc_int.h index 940636b49c..0bc8a16fa0 100644 --- a/usr/src/lib/libc/inc/libc_int.h +++ b/usr/src/lib/libc/inc/libc_int.h @@ -74,7 +74,7 @@ extern "C" { typedef struct { int ci_tag; union { - int (*ci_func)(); + void *ci_func; long ci_val; char *ci_ptr; } ci_un; diff --git a/usr/src/lib/libc/port/gen/ssignal.c b/usr/src/lib/libc/port/gen/ssignal.c index 6030626b17..ce74eb2a07 100644 --- a/usr/src/lib/libc/port/gen/ssignal.c +++ b/usr/src/lib/libc/port/gen/ssignal.c @@ -25,9 +25,7 @@ */ /* Copyright (c) 1988 AT&T */ -/* All Rights Reserved */ - -#pragma ident "%Z%%M% %I% %E% SMI" +/* All Rights Reserved */ /* * ssignal, gsignal: software signals @@ -54,8 +52,9 @@ ssignal(int sig, int (*action)(int)))(int) if (sig >= MINSIG && sig <= MAXSIGNUM) { savefn = sigs[sig-MINSIG]; sigs[sig-MINSIG] = action; - } else - savefn = (int(*)(int))SIG_DFL; + } else { + savefn = (int(*)(int))(uintptr_t)SIG_DFL; + } return (savefn); } @@ -66,12 +65,14 @@ gsignal(int sig) int (*sigfn)(int); if (sig < MINSIG || sig > MAXSIGNUM || - (sigfn = sigs[sig-MINSIG]) == (int(*)(int))SIG_DFL) + (sigfn = sigs[sig-MINSIG]) == (int(*)(int))(uintptr_t)SIG_DFL) { return (0); - else if (sigfn == (int(*)(int))SIG_IGN) - return (1); - else { - sigs[sig-MINSIG] = (int(*)(int))SIG_DFL; - return ((*sigfn)(sig)); + } else { + if (sigfn == (int(*)(int))(uintptr_t)SIG_IGN) { + return (1); + } else { + sigs[sig-MINSIG] = (int(*)(int))(uintptr_t)SIG_DFL; + return ((*sigfn)(sig)); + } } } diff --git a/usr/src/lib/libc/port/threads/c11_thr.c b/usr/src/lib/libc/port/threads/c11_thr.c index a33fa12743..98e72c9b04 100644 --- a/usr/src/lib/libc/port/threads/c11_thr.c +++ b/usr/src/lib/libc/port/threads/c11_thr.c @@ -195,7 +195,8 @@ thrd_create(thrd_t *thr, thrd_start_t func, void *arg) { int ret; - ret = pthread_create(thr, NULL, (void *(*)(void *))func, arg); + ret = pthread_create(thr, NULL, + (void *(*)(void *))(uintptr_t)func, arg); if (ret == 0) return (thrd_success); else if (ret == -1 && errno == EAGAIN) diff --git a/usr/src/lib/libc/port/threads/pthread.c b/usr/src/lib/libc/port/threads/pthread.c index 34b4b4c73c..dc0123361d 100644 --- a/usr/src/lib/libc/port/threads/pthread.c +++ b/usr/src/lib/libc/port/threads/pthread.c @@ -177,6 +177,14 @@ pthread_create(pthread_t *thread, const pthread_attr_t *attr, return (error); } +static void +_mutex_unlock_wrap(void *ptr) +{ + mutex_t *mp = ptr; + + (void) mutex_unlock(mp); +} + /* * pthread_once: calls given function only once. * it synchronizes via mutex in pthread_once_t structure @@ -192,7 +200,7 @@ pthread_once(pthread_once_t *once_control, void (*init_routine)(void)) if (once->once_flag == PTHREAD_ONCE_NOTDONE) { (void) mutex_lock(&once->mlock); if (once->once_flag == PTHREAD_ONCE_NOTDONE) { - pthread_cleanup_push(mutex_unlock, &once->mlock); + pthread_cleanup_push(_mutex_unlock_wrap, &once->mlock); (*init_routine)(); pthread_cleanup_pop(0); membar_producer(); diff --git a/usr/src/lib/libc/port/threads/tls.c b/usr/src/lib/libc/port/threads/tls.c index 9822cc5367..31fd1c5368 100644 --- a/usr/src/lib/libc/port/threads/tls.c +++ b/usr/src/lib/libc/port/threads/tls.c @@ -199,13 +199,13 @@ extern int _preexec_exit_handlers(); extern void libc_init(); const Lc_interface tls_rtldinfo[] = { - {CI_VERSION, (int(*)())CI_V_CURRENT}, - {CI_ATEXIT, (int(*)())_preexec_exit_handlers}, - {CI_TLS_MODADD, (int(*)())__tls_mod_add}, - {CI_TLS_MODREM, (int(*)())__tls_mod_remove}, - {CI_TLS_STATMOD, (int(*)())__tls_static_mods}, - {CI_THRINIT, (int(*)())libc_init}, - {CI_NULL, (int(*)())NULL} + { .ci_tag = CI_VERSION, .ci_un.ci_val = CI_V_CURRENT }, + { .ci_tag = CI_ATEXIT, .ci_un.ci_func = _preexec_exit_handlers }, + { .ci_tag = CI_TLS_MODADD, .ci_un.ci_func = __tls_mod_add }, + { .ci_tag = CI_TLS_MODREM, .ci_un.ci_func = __tls_mod_remove }, + { .ci_tag = CI_TLS_STATMOD, .ci_un.ci_func = __tls_static_mods }, + { .ci_tag = CI_THRINIT, .ci_un.ci_func = libc_init }, + { .ci_tag = CI_NULL, .ci_un.ci_func = NULL } }; /* |