mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-31 04:45:39 +01:00
libthr: fix warnings at WARNS=6 Fix warnings about the following when WARNS=6 (which I will commit soon): - casting away const - no previous 'extern' declaration for non-static variable - others as explained by #pragmas and comments - unused parameters libthr: disable thread-safety warnings These warnings don't make sense for code that implements the locking primitives. libthr: change CHECK_AND_INIT_RWLOCK to an inline function This was prompted by a compiler warning about 'ret' shadowing a local variable in the callers of the macro. libthr: Use CLI flags instead of pragmas to disable warnings People tweaking the build system or compilers tend to look into the Makefile and not into the source. Having some warning controls in the Makefile and some in the source code is surprising. Pragmas have the advantage that they leave the warnings enabled for more code, but that advantage isn't very relevant in these cases. libthr: fix warnings from GCC when WARNS=6 Fix warnings about: - redundant declarations - a local variable shadowing a global function (dlinfo) - an old-style function definition (with an empty parameter list) - a variable that is possibly used uninitialized libthr: prevent setcontext() from masking SIGTHR __thr_setcontext() mistakenly tested for the presence of SIGCANCEL in its local ucontext_t instead of the parameter. Therefore, if a thread calls setcontext() with a context whose signal mask contains SIGTHR (a.k.a. SIGCANCEL), that signal will be blocked, preventing the thread from being cancelled or suspended. Sponsored by: Dell EMC
77 lines
2.0 KiB
Makefile
77 lines
2.0 KiB
Makefile
# $FreeBSD$
|
|
#
|
|
# All library objects contain FreeBSD revision strings by default; they may be
|
|
# excluded as a space-saving measure. To produce a library that does
|
|
# not contain these strings, add -DSTRIP_FBSDID (see <sys/cdefs.h>) to CFLAGS
|
|
# below. Note, there are no IDs for syscall stubs whose sources are generated.
|
|
# To included legacy CSRG sccsid strings, add -DLIBC_SCCS and -DSYSLIBC_SCCS
|
|
# (for system call stubs) to CFLAGS below. -DSYSLIBC_SCCS affects just the
|
|
# system call stubs.
|
|
|
|
PACKAGE= clibs
|
|
SHLIBDIR?= /lib
|
|
|
|
.include <src.opts.mk>
|
|
MK_SSP= no
|
|
|
|
LIB=thr
|
|
SHLIB_MAJOR= 3
|
|
WARNS?= 3
|
|
NO_WTHREAD_SAFETY=1
|
|
CFLAGS+=-DPTHREAD_KERNEL
|
|
CFLAGS+=-I${SRCTOP}/lib/libc/include -I${.CURDIR}/thread \
|
|
-I${SRCTOP}/include
|
|
CFLAGS+=-I${.CURDIR}/arch/${MACHINE_CPUARCH}/include
|
|
CFLAGS+=-I${.CURDIR}/sys
|
|
CFLAGS+=-I${SRCTOP}/libexec/rtld-elf
|
|
CFLAGS+=-I${SRCTOP}/libexec/rtld-elf/${MACHINE_CPUARCH}
|
|
CFLAGS+=-I${SRCTOP}/lib/libthread_db
|
|
CFLAGS+=-Winline
|
|
|
|
CFLAGS.thr_stack.c+= -Wno-cast-align
|
|
.include <bsd.compiler.mk>
|
|
.if !(${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} < 40300)
|
|
CFLAGS.thr_symbols.c+= -Wno-missing-variable-declarations
|
|
.endif
|
|
|
|
.ifndef NO_THREAD_UNWIND_STACK
|
|
CFLAGS+=-fexceptions
|
|
CFLAGS+=-D_PTHREAD_FORCED_UNWIND
|
|
.endif
|
|
|
|
LDFLAGS+=-Wl,-znodelete
|
|
|
|
VERSION_DEF=${SRCTOP}/lib/libc/Versions.def
|
|
SYMBOL_MAPS=${.CURDIR}/pthread.map
|
|
|
|
MAN= libthr.3
|
|
|
|
# enable extra internal consistency checks
|
|
CFLAGS+=-D_PTHREADS_INVARIANTS
|
|
|
|
PRECIOUSLIB=
|
|
|
|
.PATH: ${.CURDIR}/arch/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
|
|
|
|
.if exists(${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc)
|
|
.include "${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc"
|
|
.endif
|
|
.include "${.CURDIR}/sys/Makefile.inc"
|
|
.include "${.CURDIR}/thread/Makefile.inc"
|
|
|
|
.if ${MK_INSTALLLIB} != "no"
|
|
SYMLINKS+=lib${LIB}.a ${LIBDIR}/libpthread.a
|
|
.endif
|
|
.if !defined(NO_PIC)
|
|
SYMLINKS+=lib${LIB}.so ${LIBDIR}/libpthread.so
|
|
.endif
|
|
.if ${MK_PROFILE} != "no"
|
|
SYMLINKS+=lib${LIB}_p.a ${LIBDIR}/libpthread_p.a
|
|
.endif
|
|
|
|
.if ${MK_TESTS} != "no"
|
|
SUBDIR+= tests
|
|
.endif
|
|
|
|
.include <bsd.lib.mk>
|