git: 49d684369c66 - main - libthr: filter rather than link with libsys

From: Brooks Davis <brooks_at_FreeBSD.org>
Date: Wed, 07 Feb 2024 19:51:27 UTC
The branch main has been updated by brooks:

URL: https://cgit.FreeBSD.org/src/commit/?id=49d684369c6682eebca325c55a6c96b7c03f5aeb

commit 49d684369c6682eebca325c55a6c96b7c03f5aeb
Author:     Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2024-02-07 19:38:16 +0000
Commit:     Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2024-02-07 19:50:47 +0000

    libthr: filter rather than link with libsys
    
    The allows gcc + GNU ld to link programs with -m32 -pthread without
    erroring out due to _umtx_op_err being undefined (unless -lsys is added
    to the link command.
    
    We now always link _umtx_op_err into libthr (not just when it's static)
    and filter it with libsys so we call that implementation.  The dynamic
    implementations (at least the assembly ones) should likely become stubs
    as a further refinement.
    
    Reviewed by:    kib
    Differential Revision:  https://reviews.freebsd.org/D43783
---
 lib/libthr/Makefile    | 5 ++---
 lib/libthr/pthread.map | 3 +++
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/libthr/Makefile b/lib/libthr/Makefile
index 1d34f5cb5f09..932650885dea 100644
--- a/lib/libthr/Makefile
+++ b/lib/libthr/Makefile
@@ -13,8 +13,6 @@ MK_SSP=	no
 LIB=thr
 SHLIB_MAJOR= 3
 
-LIBADD=	sys
-
 NO_WTHREAD_SAFETY=1
 NO_WCAST_ALIGN.gcc=1    # for gcc 4.2
 CFLAGS+=-DPTHREAD_KERNEL
@@ -47,6 +45,7 @@ CFLAGS+=-D_PTHREAD_FORCED_UNWIND
 .endif
 
 LDFLAGS+=-Wl,-znodelete
+LDFLAGS+=-Wl,--auxiliary,libsys.so.7
 
 VERSION_DEF=${SRCTOP}/lib/libc/Versions.def
 SYMBOL_MAPS=${.CURDIR}/pthread.map
@@ -76,7 +75,7 @@ LIBSYS_SRCTOP=	${.CURDIR:H}/libsys
 .else
 .PATH: ${LIBSYS_SRCTOP}
 .endif
-STATICOBJS+=	_umtx_op_err.o
+OBJS+=	_umtx_op_err.o
 
 .if ${MK_INSTALLLIB} != "no"
 SYMLINKS+=lib${LIB}.a ${LIBDIR}/libpthread.a
diff --git a/lib/libthr/pthread.map b/lib/libthr/pthread.map
index 348fd48df398..aa9abb7e6114 100644
--- a/lib/libthr/pthread.map
+++ b/lib/libthr/pthread.map
@@ -298,6 +298,9 @@ FBSDprivate_1.0 {
 
 	/* ABI bug workaround, indicate that pli->rtli_version is valid */
 	_pli_rtli_version;
+
+	/* Expose stub for libsys filter */
+	_umtx_op_err;
 };
 
 FBSD_1.1 {