From: H.J. Lu Date: Fri, 5 Apr 2024 23:42:57 +0000 (-0700) Subject: Use crtbeginT.o and crtend.o for non-PIE static executables X-Git-Tag: glibc-2.40~280 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=727aacfd667c026762b9aaa1a3a293f815edebba;p=thirdparty%2Fglibc.git 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 --- 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/