From 7b5924184566bcdcc01966905ffdcabcd6ea4b32 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Fri, 8 Apr 2022 21:56:02 -0500 Subject: [PATCH] fix(build): disable default PIE when linking Commit f7ec31db2d ("Disable PIE compilation option") allowed building a non-relocatable firmware with a default-PIE toolchain by disabling PIE at compilation time. This prevents the compiler from generating relocations against a GOT. However, when a default-PIE GCC is used as the linker, the final binary will still be a PIE, containing an (unused) GOT and dynamic symbol table. These structures do not affect execution, but they waste space in the firmware binary. Disable PIE at link time to recover this space. Change-Id: I2be7ac9c1a957f6db8d75efe6e601e9a5760a925 Signed-off-by: Samuel Holland --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 5916963b5..20f25534b 100644 --- a/Makefile +++ b/Makefile @@ -600,6 +600,9 @@ endif PIE_FOUND := $(findstring --enable-default-pie,${GCC_V_OUTPUT}) ifneq ($(PIE_FOUND),) TF_CFLAGS += -fno-PIE +ifneq ($(findstring gcc,$(notdir $(LD))),) + TF_LDFLAGS += -no-pie +endif endif ifneq ($(findstring gcc,$(notdir $(LD))),)