summaryrefslogtreecommitdiff
path: root/src/arch/arm/bootblock.ld
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2013-10-15 17:36:17 -0700
committerIsaac Christensen <isaac.christensen@se-eng.com>2014-09-22 18:41:54 +0200
commitc505837e67aa4fb89964c849d905fa8d44459152 (patch)
treef7e18fbcb50e54509c3a2a6365cf9a3365dfde67 /src/arch/arm/bootblock.ld
parent08539b3b986a1eb564815f72897b448e2bd69b5b (diff)
downloadcoreboot-c505837e67aa4fb89964c849d905fa8d44459152.tar.xz
arm: Have the linker garbage-collect unused functions and variables
This patch activates -ffunction-sections and -fdata-sections for the compiler and --gc-sections for the linker. This will strip out all unused functions and static/global variables from the final binaries and reduce the amount of data we need to read over SPI. A quick test with ToT images shows a 2.5k (13%) / 10k (29%) / 12k (28%) reduction on Nyan and 3k (38%) / 23k (50%) / 13k (29%) on Pit, respectively for bootblock / romstage / ramstage. Change-Id: I052411d4ad190d0395921ac4d4677341fb91568a Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/177111 (cherry picked from commit 5635b138778dea67a5f179e13003132be07f7e59) Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com> Reviewed-on: http://review.coreboot.org/6904 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'src/arch/arm/bootblock.ld')
-rw-r--r--src/arch/arm/bootblock.ld22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/arch/arm/bootblock.ld b/src/arch/arm/bootblock.ld
index 706f0a2c2e..2b04b22475 100644
--- a/src/arch/arm/bootblock.ld
+++ b/src/arch/arm/bootblock.ld
@@ -28,23 +28,25 @@ PHDRS
to_load PT_LOAD;
}
+ENTRY(_start)
TARGET(binary)
SECTIONS
{
- ROMLOC = CONFIG_BOOTBLOCK_BASE;
+ . = CONFIG_BOOTBLOCK_BASE;
- /* This section might be better named .setup */
- .rom ROMLOC : {
- _rom = .;
+ .bootblock . : {
*(.start);
- *(.id);
+ KEEP(*(.id));
*(.text);
*(.text.*);
- *(.rom.text);
- *(.rom.data);
- *(.rom.data.*);
+ *(.rodata);
*(.rodata.*);
- _erom = .;
+ *(.data);
+ *(.data.*);
+ *(.bss);
+ *(.bss.*);
+ *(.sbss);
+ *(.sbss.*);
} : to_load = 0xff
/DISCARD/ : {
@@ -54,4 +56,4 @@ SECTIONS
*(.note.*)
*(.ARM.*)
}
-}
+} \ No newline at end of file