summaryrefslogtreecommitdiff
path: root/arch/microblaze
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2020-11-04 14:01:45 +0100
committerMichal Simek <michal.simek@xilinx.com>2020-11-20 10:42:53 +0100
commit9c2aa7e7070a3e7c4341c83c375b47e48108a8ff (patch)
treebff3436efa5ed57468f4fb300e54ddafae922b05 /arch/microblaze
parentb80680633dc954d32f81f3afacd3d1f2f3d290b0 (diff)
microblaze: Enable GCC garbage collector for full U-Boot
GCC's garbage collector works for Microblaze for quite a long time but none has enabled it. The same change has be done for example by commit fac4790491f6 ("arc: Eliminate unused code and data with GCC's garbage collector"). Before: text data bss dec hex filename 588760 33592 39192 661544 a1828 u-boot After: text data bss dec hex filename 504504 32164 38608 575276 8c72c u-boot Which saves almost 15% of memory footprint. Also group symbols/functions to proper section. Reported-by: Tom Rini <trini@konsulko.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'arch/microblaze')
-rw-r--r--arch/microblaze/config.mk3
-rw-r--r--arch/microblaze/cpu/u-boot.lds6
2 files changed, 6 insertions, 3 deletions
diff --git a/arch/microblaze/config.mk b/arch/microblaze/config.mk
index 96c39b1278..de5b97e719 100644
--- a/arch/microblaze/config.mk
+++ b/arch/microblaze/config.mk
@@ -9,6 +9,9 @@
CONFIG_STANDALONE_LOAD_ADDR ?= 0x80F00000
PLATFORM_CPPFLAGS += -ffixed-r31 -D__microblaze__
+PLATFORM_CPPFLAGS += -fdata-sections -ffunction-sections
+
+LDFLAGS_FINAL += --gc-sections
ifeq ($(CONFIG_SPL_BUILD),)
PLATFORM_CPPFLAGS += -fPIC
diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds
index 9282643349..5dc09dbad2 100644
--- a/arch/microblaze/cpu/u-boot.lds
+++ b/arch/microblaze/cpu/u-boot.lds
@@ -14,7 +14,7 @@ SECTIONS
{
__text_start = .;
arch/microblaze/cpu/start.o (.text)
- *(.text)
+ *(.text*)
__text_end = .;
}
@@ -28,7 +28,7 @@ SECTIONS
.data ALIGN(0x4):
{
__data_start = .;
- *(.data)
+ *(.data*)
__data_end = .;
}
@@ -51,7 +51,7 @@ SECTIONS
__bss_start = .;
*(.sbss)
*(.scommon)
- *(.bss)
+ *(.bss*)
*(COMMON)
. = ALIGN(4);
__bss_end = .;