On Fri, Apr 5, 2024 at 4:43 PM H.J. Lu wrote: > 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. > --- > 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/ > -- > 2.44.0 > LGTM Reviewed-by: Sunil K Pandey --Sunil