aboutsummaryrefslogtreecommitdiff
path: root/libexec/rtld-elf
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2025-05-23 23:33:51 +0000
committerBrooks Davis <brooks@FreeBSD.org>2025-05-23 23:37:17 +0000
commit387783da979eb5862f8453e15505c240cbfe28ce (patch)
tree5569ff6ebdc117131f4a382e5c9bb5a9f908327a /libexec/rtld-elf
parentb15f5c8fa584720e01f8a1b9320b5c9063e9c5a9 (diff)
Diffstat (limited to 'libexec/rtld-elf')
-rw-r--r--libexec/rtld-elf/rtld-libc/Makefile.inc30
1 files changed, 19 insertions, 11 deletions
diff --git a/libexec/rtld-elf/rtld-libc/Makefile.inc b/libexec/rtld-elf/rtld-libc/Makefile.inc
index 79d68a1e803c..b16f84f398d0 100644
--- a/libexec/rtld-elf/rtld-libc/Makefile.inc
+++ b/libexec/rtld-elf/rtld-libc/Makefile.inc
@@ -52,22 +52,23 @@ CFLAGS.strspn.c+=-Wno-sign-compare
CFLAGS.strstr.c+=-Wno-cast-qual -Wno-sign-compare
CFLAGS.strtok.c+=-Wno-cast-qual
-# Also use all the syscall .o files from libc_nossp_pic:
-_libc_other_objects= sigsetjmp lstat stat fstat fstatat fstatfs syscall \
+# Also use all the syscall .o files from libsys_pic (libsys is always NO_SSP):
+_libsys_other_objects= fstat fstatat fstatfs syscall \
cerror geteuid getegid sigfastblock munmap mprotect \
sysarch __sysctl issetugid __getcwd utrace getpid \
thr_self thr_kill pread mmap lseek _exit \
getdirentries _close _fcntl _open _openat _read \
- _sigprocmask _write readlink ___realpathat _setjmp setjmp setjmperr
+ _sigprocmask _write readlink ___realpathat
+# A few other bits from libc_nossp_pic:
+_libc_other_objects= sigsetjmp lstat stat _setjmp setjmp setjmperr
-
-# Finally add additional architecture-dependent libc dependencies
+# Finally add additional architecture-dependent libc and libsys dependencies
.if ${LIBC_ARCH} == "arm"
# ARM needs aeabi_unwind_cpp for _setjmp
_libc_other_objects+=aeabi_unwind_cpp
.elif ${LIBC_ARCH} == "i386"
# i386 needs i386_set_gsbase for allocate_initial_tls()
-_libc_other_objects+=i386_set_gsbase
+_libsys_other_objects+=i386_set_gsbase
.elif ${LIBC_ARCH} == "powerpc" || ${LIBC_ARCH} == "powerpcspe"
# ppc needs __syncicache and abs for reloc.c
_libc_other_objects+=syncicache abs
@@ -76,23 +77,30 @@ _libc_other_objects+=syncicache abs
_libc_other_objects+=syncicache
.endif
-# Extract all the .o files from libc_nossp_pic.a. This ensures that
-# we don't accidentally pull in the interposing table or similar by linking
-# directly against libc_nossp_pic.a
+# Extract all the .o files from libc_nossp_pic.a and libsys_pic.a. This
+# ensures that we don't accidentally pull in the interposing table or
+# similar by linking directly against libc_nossp_pic.a
_rtld_libc_objs=
.for _obj in ${_libc_other_objects}
_rtld_libc_objs+=${_obj}.nossppico
CLEANFILES+=${_obj}.nossppico
# LDFLAGS+= -Wl,--trace-symbol=${_obj}
.endfor
+_rtld_libsys_objs=
+.for _obj in ${_libsys_other_objects}
+_rtld_libsys_objs+=${_obj}.pico
+CLEANFILES+=${_obj}.pico
+# LDFLAGS+= -Wl,--trace-symbol=${_obj}
+.endfor
# LDFLAGS+= -Wl,--trace
# We insert all the .o files from libc_nossp_pic.a into a new rtld_libc.a file
# to ensure that only .o files that are actually used end up being included.
-rtld_libc.a: ${LIBC_NOSSP_PIC} ${SRCTOP}/libexec/rtld-elf/rtld-libc/Makefile.inc
+rtld_libc.a: ${LIBC_NOSSP_PIC} ${LIBSYS_PIC} ${SRCTOP}/libexec/rtld-elf/rtld-libc/Makefile.inc
@rm -f ${.TARGET}
${AR} x ${LIBC_NOSSP_PIC} ${_rtld_libc_objs}
- ${AR} cr ${.TARGET} ${_rtld_libc_objs}
+ ${AR} x ${LIBSYS_PIC} ${_rtld_libsys_objs}
+ ${AR} cr ${.TARGET} ${_rtld_libc_objs} ${_rtld_libsys_objs}
CLEANFILES+=rtld_libc.a
LDADD+=${.OBJDIR}/rtld_libc.a
beforelinking: rtld_libc.a