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 fac4790491 ("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>
This commit is contained in:
Michal Simek 2020-11-04 14:01:45 +01:00
parent b80680633d
commit 9c2aa7e707
2 changed files with 6 additions and 3 deletions

View file

@ -9,6 +9,9 @@
CONFIG_STANDALONE_LOAD_ADDR ?= 0x80F00000 CONFIG_STANDALONE_LOAD_ADDR ?= 0x80F00000
PLATFORM_CPPFLAGS += -ffixed-r31 -D__microblaze__ PLATFORM_CPPFLAGS += -ffixed-r31 -D__microblaze__
PLATFORM_CPPFLAGS += -fdata-sections -ffunction-sections
LDFLAGS_FINAL += --gc-sections
ifeq ($(CONFIG_SPL_BUILD),) ifeq ($(CONFIG_SPL_BUILD),)
PLATFORM_CPPFLAGS += -fPIC PLATFORM_CPPFLAGS += -fPIC

View file

@ -14,7 +14,7 @@ SECTIONS
{ {
__text_start = .; __text_start = .;
arch/microblaze/cpu/start.o (.text) arch/microblaze/cpu/start.o (.text)
*(.text) *(.text*)
__text_end = .; __text_end = .;
} }
@ -28,7 +28,7 @@ SECTIONS
.data ALIGN(0x4): .data ALIGN(0x4):
{ {
__data_start = .; __data_start = .;
*(.data) *(.data*)
__data_end = .; __data_end = .;
} }
@ -51,7 +51,7 @@ SECTIONS
__bss_start = .; __bss_start = .;
*(.sbss) *(.sbss)
*(.scommon) *(.scommon)
*(.bss) *(.bss*)
*(COMMON) *(COMMON)
. = ALIGN(4); . = ALIGN(4);
__bss_end = .; __bss_end = .;