rtld: clean up Makefile.

Move all MD statements into $MACHINE_ARCH/Makefile.inc.
Unconditionally apply version script to rtld, the interpreter is not
functional without it for long time.

Reviewed by:	brooks, emaste
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D23083
This commit is contained in:
Konstantin Belousov 2020-01-11 09:18:58 +00:00
parent 1021c8d705
commit 7e3300e505
7 changed files with 18 additions and 32 deletions

View File

@ -37,11 +37,6 @@ RTLD_ARCH= ${MACHINE_ARCH}
RTLD_ARCH= ${MACHINE_CPUARCH}
.endif
CFLAGS+= -I${RTLD_ELF_DIR}/${RTLD_ARCH} -I${RTLD_ELF_DIR}
.if ${MACHINE_ARCH} == "powerpc64"
LDFLAGS+= -nostdlib -e _rtld_start
.else
LDFLAGS+= -nostdlib -e .rtld_start
.endif
NO_WCAST_ALIGN= yes
WARNS?= 6
@ -52,36 +47,14 @@ SYMLINKS= ../..${BINDIR}/${PROG} ${LIBEXECDIR}/${PROG}
MLINKS?= rtld.1 ld-elf.so.1.1 \
rtld.1 ld.so.1
.if ${MACHINE_CPUARCH} == "sparc64"
CFLAGS+= -fPIC
.else
CFLAGS+= -fpic
.endif
CFLAGS+= -DPIC $(DEBUG)
.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
CFLAGS+= -fvisibility=hidden
.endif
.if ${MACHINE_CPUARCH} == "mips"
CFLAGS.reloc.c+=-fno-jump-tables
.endif
LDFLAGS+= -shared -Wl,-Bsymbolic -Wl,-z,defs
CFLAGS+= -fpic -DPIC $(DEBUG)
LDFLAGS+= -shared -Wl,-Bsymbolic -Wl,-z,defs -nostdlib -e ${RTLD_ENTRY}
# Pull in the dependencies that we use from libc
.include "rtld-libc/Makefile.inc"
.if ${MK_TOOLCHAIN} == "no"
LDFLAGS+= -L${LIBCDIR}
.endif
.if ${MACHINE_CPUARCH} == "arm"
# Some of the required math functions (div & mod) are implemented in
# libcompiler_rt on ARM. The library also needs to be placed first to be
# correctly linked. As some of the functions are used before we have
# shared libraries.
LIBADD+= compiler_rt
.endif
.if ${MK_SYMVER} == "yes"
VERSION_DEF= ${LIBCSRCDIR}/Versions.def
SYMBOL_MAPS= ${RTLD_ELF_DIR}/Symbol.map
VERSION_MAP= Version.map
@ -90,9 +63,9 @@ LDFLAGS+= -Wl,--version-script=${VERSION_MAP}
.if exists(${RTLD_ELF_DIR}/${RTLD_ARCH}/Symbol.map)
SYMBOL_MAPS+= ${RTLD_ELF_DIR}/${RTLD_ARCH}/Symbol.map
.endif
.endif
.sinclude "${RTLD_ELF_DIR}/${RTLD_ARCH}/Makefile.inc"
RTLD_ENTRY?= .rtld_start
# Since moving rtld-elf to /libexec, we need to create a symlink.
# Fixup the existing binary that's there so we can symlink over it.

View File

@ -1,3 +1,3 @@
# $FreeBSD$
CFLAGS+= ${CFLAGS_NO_SIMD} -msoft-float
CFLAGS+= ${CFLAGS_NO_SIMD} -msoft-float -fvisibility=hidden

View File

@ -1 +1,7 @@
# $FreeBSD$
# Some of the required math functions (div & mod) are implemented in
# libcompiler_rt on ARM. The library also needs to be placed first to be
# correctly linked. As some of the functions are used before we have
# shared libraries.
LIBADD+= compiler_rt

View File

@ -1,3 +1,3 @@
# $FreeBSD$
CFLAGS+= ${CFLAGS_NO_SIMD} -msoft-float
CFLAGS+= ${CFLAGS_NO_SIMD} -msoft-float -fvisibility=hidden

View File

@ -0,0 +1,3 @@
# $FreeBSD$
CFLAGS.reloc.c+=-fno-jump-tables

View File

@ -1 +1,3 @@
# $FreeBSD$
RTLD_ENTRY= _rtld_start

View File

@ -1 +1,3 @@
# $FreeBSD$
CFLAGS:=${CFLAGS:S/-fpic/-fPIC/}