From 4a05e69e19455677a3847433dc76b7775c478166 Mon Sep 17 00:00:00 2001 From: bricky149 Date: Wed, 4 Oct 2023 22:24:07 +0100 Subject: [PATCH] Retain space saving benefits when not using LTO --- Makefile | 10 ++++++++++ firmware.ld | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 303ec81..273ac07 100644 --- a/Makefile +++ b/Makefile @@ -170,9 +170,14 @@ CFLAGS = -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delet ifeq ($(ENABLE_LTO), 1) # CFLAGS += -flto CFLAGS += -flto=2 +else +# We get most of the space savings if LTO creates problems + CFLAGS += -ffunction-sections -fdata-sections endif +# May cause unhelpful build failures #CFLAGS += -Wpadded + CFLAGS += -DPRINTF_INCLUDE_CONFIG_H CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\" ifeq ($(ENABLE_SWD),1) @@ -280,6 +285,11 @@ LDFLAGS = -mcpu=cortex-m0 -nostartfiles -Wl,-T,firmware.ld # Use newlib-nano instead of newlib LDFLAGS += --specs=nano.specs +ifeq ($(ENABLE_LTO), 0) +# Throw away unneeded func/data sections like LTO does + LDFLAGS += -Wl,--gc-sections +endif + ifeq ($(DEBUG),1) ASFLAGS += -g CFLAGS += -g diff --git a/firmware.ld b/firmware.ld index c00d2ba..a7bd16b 100644 --- a/firmware.ld +++ b/firmware.ld @@ -17,7 +17,7 @@ SECTIONS .text : { . = ALIGN(4); - *(.text.isr) /* .text sections of code */ + KEEP(*(.text.isr)) /* .text sections of code */ *(.text) /* .text sections of code */ *(.text*) /* .text* sections of code */ *(.rodata) /* .rodata sections */