diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2022-05-16 06:17:14 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2022-05-18 13:04:13 -0700 |
commit | 2d5ec6692f5746ccb11db60976a6481ef8e9d74f (patch) | |
tree | 93ce3ec2b6d4fb72bcd3bac0432ea1405683c967 /Makeconfig | |
parent | 728894dba4a19578bd803906de184a8dd51ed13c (diff) | |
download | glibc-2d5ec6692f5746ccb11db60976a6481ef8e9d74f.zip glibc-2d5ec6692f5746ccb11db60976a6481ef8e9d74f.tar.gz glibc-2d5ec6692f5746ccb11db60976a6481ef8e9d74f.tar.bz2 |
Enable DT_RELR in glibc shared libraries and PIEs automatically
Enable DT_RELR in glibc shared libraries and position independent
executables (PIE) automatically if linker supports -z pack-relative-relocs.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Diffstat (limited to 'Makeconfig')
-rw-r--r-- | Makeconfig | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -362,6 +362,15 @@ relro-LDFLAGS = -Wl,-z,relro LDFLAGS.so += $(relro-LDFLAGS) LDFLAGS-rtld += $(relro-LDFLAGS) +# Linker options to enable and disable DT_RELR. +ifeq ($(have-dt-relr),yes) +dt-relr-ldflag = -Wl,-z,pack-relative-relocs +no-dt-relr-ldflag = -Wl,-z,nopack-relative-relocs +else +dt-relr-ldflag = +no-dt-relr-ldflag = +endif + ifeq (no,$(build-pie-default)) pie-default = $(no-pie-ccflag) else # build-pie-default @@ -370,6 +379,7 @@ pic-default = -DPIC pie-default = $(pie-ccflag) ifeq (yes,$(enable-static-pie)) +static-pie-dt-relr-ldflag = $(dt-relr-ldflag) ifeq (yes,$(have-static-pie)) static-pie-ldflag = -static-pie else @@ -404,6 +414,7 @@ link-extra-libs-tests = $(libsupport) # Command for linking PIE programs with the C library. ifndef +link-pie +link-pie-before-inputs = $(if $($(@F)-no-pie),$(no-pie-ldflag),-pie) \ + $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \ -Wl,-O1 -nostdlib -nostartfiles \ $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \ $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \ @@ -436,6 +447,7 @@ endif ifndef +link-static +link-static-before-inputs = -nostdlib -nostartfiles -static \ $(if $($(@F)-no-pie),$(no-pie-ldflag),$(static-pie-ldflag)) \ + $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(static-pie-dt-relr-ldflag)) \ $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \ $(firstword $(CRT-$(@F)) $(csu-objpfx)$(real-static-start-installed-name)) \ $(+preinit) $(+prectorT) |