diff --git a/lib/libc/Makefile b/lib/libc/Makefile --- a/lib/libc/Makefile +++ b/lib/libc/Makefile @@ -62,6 +62,7 @@ # 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 --- a/lib/libc/tests/ssp/Makefile +++ b/lib/libc/tests/ssp/Makefile @@ -10,6 +10,7 @@ # 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 --- a/lib/libsys/Makefile +++ b/lib/libsys/Makefile @@ -57,6 +57,9 @@ 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 --- a/lib/libsys/Makefile.sys +++ b/lib/libsys/Makefile.sys @@ -47,8 +47,6 @@ NOASM+= sched_getcpu.o PSEUDO+= _sched_getcpu.o -SRCS+= auxv.c - SRCS+= brk.c SRCS+= closefrom.c SRCS+= pipe.c @@ -58,6 +56,12 @@ SRCS+= compat-stub.c +.if ${LIB} == "c" +SOBJS+= libc_stubs.pico + +STATICOBJS+= auxv.o +.endif + INTERPOSED = \ accept \ accept4 \ diff --git a/lib/libsys/Symbol.map b/lib/libsys/Symbol.map new file mode 100644 --- /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 --- a/lib/libsys/Symbol.sys.map +++ b/lib/libsys/Symbol.sys.map @@ -433,12 +433,10 @@ 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 --- /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/share/mk/src.libnames.mk b/share/mk/src.libnames.mk --- a/share/mk/src.libnames.mk +++ b/share/mk/src.libnames.mk @@ -394,7 +394,7 @@ _DP_ztest= geom m nvpair umem zpool pthread avl zfs_core spl zutil zfs uutil icp # The libc dependencies are not strictly needed but are defined to make the # assert happy. -_DP_c= compiler_rt +_DP_c= compiler_rt sys # Use libssp_nonshared only on i386 and power*. Other archs emit direct calls # to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared. .if ${MK_SSP} != "no" && \