git: 6d3f4dcda2fb - main - libsys: make PSEUDO take a bare syscall name

From: Brooks Davis <brooks_at_FreeBSD.org>
Date: Thu, 29 Feb 2024 19:19:21 UTC
The branch main has been updated by brooks:

URL: https://cgit.FreeBSD.org/src/commit/?id=6d3f4dcda2fb6d05dd5a25956b8c7cf012e0265f

commit 6d3f4dcda2fb6d05dd5a25956b8c7cf012e0265f
Author:     Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2024-02-29 19:19:01 +0000
Commit:     Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2024-02-29 19:19:01 +0000

    libsys: make PSEUDO take a bare syscall name
    
    Rather than having PSEUDO be a list of object files when all consumers
    want syscall names or source files, make it a list of bare syscall
    names like INTERPOSED (which is built on PSEUDO).
    
    Improve document of variables developers can set.
    
    Reviewed by:    kib
    Differential Revision:  https://reviews.freebsd.org/D44108
---
 lib/libsys/Makefile.sys | 42 +++++++++++++++++++++++++++---------------
 1 file changed, 27 insertions(+), 15 deletions(-)

diff --git a/lib/libsys/Makefile.sys b/lib/libsys/Makefile.sys
index 8af379be92e2..706adc974feb 100644
--- a/lib/libsys/Makefile.sys
+++ b/lib/libsys/Makefile.sys
@@ -1,5 +1,22 @@
-
-# sys sources
+# Implement symbols common to libc and libsys.
+#
+# When dynamically linked, the libc symbols are filtered by the actual
+# implementations in libsys.  When statically linked, both libc and
+# libsys contain full implementations to preserve the API of libc.a.
+#
+# The following variable are programmer-defined:
+#
+# MDASM		Override the default syscall implementation in MIASM
+#		(from syscall.mk below).  Each entry is a source file
+#		name (e.g., vfork.S).
+#		Generally defined in <arch>/Makefile.sys.
+# NOASM		Don't generate system call stubs.  Each entry is an
+#		object file name (e.g., yeild.o).  Don't add more of these.
+# PSEUDO	Generate _<sys> and __sys_<sys> symbols, but not <sys>.
+#		Each entry is a bare syscall name (e.g., "clock_gettime").
+# INTERPOSED	Like PSEUDO, but <sys>.c is added to SRCS.
+#		Used for syscalls intercepted by the threading library.
+#
 .PATH: ${LIBSYS_SRCTOP}/${LIBC_ARCH} ${LIBSYS_SRCTOP}
 
 # Include the generated makefile containing the *complete* list
@@ -7,11 +24,6 @@
 .include "${SRCTOP}/sys/sys/syscall.mk"
 
 # Include machine dependent definitions.
-#
-# MDASM names override the default syscall names in MIASM.
-# NOASM will prevent the default syscall code from being generated.
-# PSEUDO generates _<sys>() and __sys_<sys>() symbols, but not <sys>().
-#
 .include "${LIBSYS_SRCTOP}/${LIBC_ARCH}/Makefile.sys"
 .if ${LIBC_ARCH} == "i386" || ${LIBC_ARCH} == "amd64"
 .include "${LIBSYS_SRCTOP}/x86/Makefile.sys"
@@ -53,11 +65,11 @@ STATICOBJS+=	auxv.o
 NOASM=	yield.o
 
 PSEUDO= \
-	_clock_gettime.o \
-	_exit.o \
-	_getlogin.o \
-	_gettimeofday.o \
-	_sched_getcpu.o
+	clock_gettime \
+	exit \
+	getlogin \
+	gettimeofday \
+	sched_getcpu
 
 INTERPOSED = \
 	accept \
@@ -101,7 +113,7 @@ INTERPOSED = \
 	writev
 
 SRCS+=	${INTERPOSED:S/$/.c/}
-PSEUDO+=	${INTERPOSED:C/^.*$/_&.o/}
+PSEUDO+=	${INTERPOSED}
 
 # Add machine dependent asm sources:
 SRCS+=${MDASM}
@@ -111,14 +123,14 @@ SRCS+=${MDASM}
 # without a trival <sys> symbol (PSEUDO).  Add each syscall that satisfies
 # these conditions to the ASM list.
 .for _asm in ${MIASM}
-.if !${MDASM:R:M${_asm:R}} && !${NOASM:R:M${_asm:R}} && !${PSEUDO:R:M_${_asm:R}}
+.if !${MDASM:R:M${_asm:R}} && !${NOASM:R:M${_asm:R}} && !${PSEUDO:M${_asm:R}}
 ASM+=$(_asm)
 .endif
 .endfor
 
 SASM=	${ASM:S/.o/.S/}
 
-SPSEUDO= ${PSEUDO:S/.o/.S/}
+SPSEUDO= ${PSEUDO:C/^.*$/_&.S/}
 
 SRCS+=	${SASM} ${SPSEUDO}