git: 6d3f4dcda2fb - main - libsys: make PSEUDO take a bare syscall name
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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}