From 727aacfd667c026762b9aaa1a3a293f815edebba Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 5 Apr 2024 16:42:57 -0700 Subject: Use crtbeginT.o and crtend.o for non-PIE static executables When static PIE is enabled by default, we shouldn't use crtbeginS.o and crtendS.o for non-PIE static executables. Check $($(@F)-no-pie) to use crtbeginT.o and crtend.o to create non-PIE static executables. Reviewed-by: Sunil K Pandey --- Makeconfig | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Makeconfig b/Makeconfig index 85e00cef94..e583765712 100644 --- a/Makeconfig +++ b/Makeconfig @@ -705,13 +705,15 @@ endif +prectorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginS.o` +postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o` # Variants of the two previous definitions for statically linking programs. +static-prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o` +static-postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o` ifeq (yes,$(enable-static-pie)) # Static PIE must use PIE variants. -+prectorT = $(+prectorS) -+postctorT = $(+postctorS) ++prectorT = $(if $($(@F)-no-pie),$(static-prector),$(+prectorS)) ++postctorT = $(if $($(@F)-no-pie),$(static-postctor),$(+postctorS)) else -+prectorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o` -+postctorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o` ++prectorT = $(static-prector) ++postctorT =$(static-postctor) endif csu-objpfx = $(common-objpfx)csu/ elf-objpfx = $(common-objpfx)elf/ -- cgit 1.4.1