aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2024-02-19 22:44:08 +0000
committerBrooks Davis <brooks@FreeBSD.org>2024-02-19 22:44:08 +0000
commit99ea67573164637d633e8051eb0a5d52f1f9488e (patch)
tree4667fab344e8e566613ea269b999e3b37cc0d461 /lib
parentef75877fc2d93199aab2b509089136c433af1f20 (diff)
downloadsrc-99ea67573164637d633e8051eb0a5d52f1f9488e.tar.gz
src-99ea67573164637d633e8051eb0a5d52f1f9488e.zip
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/Makefile1
-rw-r--r--lib/libc/tests/ssp/Makefile1
-rw-r--r--lib/libsys/Makefile3
-rw-r--r--lib/libsys/Makefile.sys10
-rw-r--r--lib/libsys/Symbol.map5
-rw-r--r--lib/libsys/Symbol.sys.map2
-rw-r--r--lib/libsys/libc_stubs.c11
-rw-r--r--lib/libthr/Makefile2
8 files changed, 31 insertions, 4 deletions
diff --git a/lib/libc/Makefile b/lib/libc/Makefile
index 54748abfeff1..41cf0f6de72a 100644
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -62,6 +62,7 @@ CFLAGS+= -ftls-model=initial-exec
#
LDFLAGS+= -nodefaultlibs
LIBADD+= compiler_rt
+LIBADD+= sys
LDFLAGS+=-Wl,--auxiliary,libsys.so.7
diff --git a/lib/libc/tests/ssp/Makefile b/lib/libc/tests/ssp/Makefile
index c6f850ec1a33..22f48d7dfe54 100644
--- a/lib/libc/tests/ssp/Makefile
+++ b/lib/libc/tests/ssp/Makefile
@@ -10,6 +10,7 @@ CFLAGS.h_raw+= -fstack-protector-all -Wstack-protector
# override the sanitizer runtime libraries to be the ones installed on the
# target system.
CFLAGS.h_raw+= -fsanitize=bounds
+LIBADD+=sys
.elif ${COMPILER_TYPE} == "gcc"
CFLAGS.h_raw+= --param ssp-buffer-size=1
LDADD+= -lssp
diff --git a/lib/libsys/Makefile b/lib/libsys/Makefile
index 897e033267a4..598962185dcf 100644
--- a/lib/libsys/Makefile
+++ b/lib/libsys/Makefile
@@ -57,6 +57,9 @@ MDASM=
MIASM=
NOASM=
+SYM_MAPS+= ${LIBSYS_SRCTOP}/Symbol.map
+SRCS+= auxv.c
+
.include "${LIBSYS_SRCTOP}/Makefile.sys"
SYM_MAPS+= ${LIBSYS_SRCTOP}/Symbol.thr.map
diff --git a/lib/libsys/Makefile.sys b/lib/libsys/Makefile.sys
index b45aa3cf1aaf..cb9ca1749ba8 100644
--- a/lib/libsys/Makefile.sys
+++ b/lib/libsys/Makefile.sys
@@ -47,8 +47,6 @@ SRCS+= recv.c recvmmsg.c send.c sendmmsg.c
NOASM+= sched_getcpu.o
PSEUDO+= _sched_getcpu.o
-SRCS+= auxv.c
-
SRCS+= brk.c
SRCS+= closefrom.c
SRCS+= pipe.c
@@ -58,6 +56,14 @@ SRCS+= POSIX2x_Fork.c
SRCS+= compat-stub.c
+.if ${LIB} == "c"
+# Trapping stubs in dynamic libc to be filtered by libsys.
+SOBJS+= libc_stubs.pico
+
+# Link the full implementation of ELF auxargs for static libc.
+STATICOBJS+= auxv.o
+.endif
+
INTERPOSED = \
accept \
accept4 \
diff --git a/lib/libsys/Symbol.map b/lib/libsys/Symbol.map
new file mode 100644
index 000000000000..4f72ea204039
--- /dev/null
+++ b/lib/libsys/Symbol.map
@@ -0,0 +1,5 @@
+FBSDprivate_1.0 {
+ __elf_aux_vector;
+ __init_elf_aux_vector;
+ _elf_aux_info;
+};
diff --git a/lib/libsys/Symbol.sys.map b/lib/libsys/Symbol.sys.map
index 73a1cf297ca0..d59ac8674669 100644
--- a/lib/libsys/Symbol.sys.map
+++ b/lib/libsys/Symbol.sys.map
@@ -433,12 +433,10 @@ FBSD_1.8 {
FBSDprivate_1.0 {
/* Add entries in sort(1) order */
- __elf_aux_vector;
__libc_sigwait;
__libsys_interposing_slot;
__set_error_selector;
__sigwait;
- _elf_aux_info;
gssd_syscall;
nlm_syscall;
rpctls_syscall;
diff --git a/lib/libsys/libc_stubs.c b/lib/libsys/libc_stubs.c
new file mode 100644
index 000000000000..41d69a9355c3
--- /dev/null
+++ b/lib/libsys/libc_stubs.c
@@ -0,0 +1,11 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2024 SRI International
+ */
+
+#define STUB_FUNC(f) \
+ void (f)(void); \
+ void (f)(void) { __builtin_trap(); }
+
+STUB_FUNC(elf_aux_info);
diff --git a/lib/libthr/Makefile b/lib/libthr/Makefile
index 932650885dea..325a320d55ec 100644
--- a/lib/libthr/Makefile
+++ b/lib/libthr/Makefile
@@ -7,6 +7,8 @@
PACKAGE= clibs
SHLIBDIR?= /lib
+LIBADD= c sys
+
.include <src.opts.mk>
MK_SSP= no