summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2015-05-15 15:23:39 -0500
committerPatrick Georgi <pgeorgi@google.com>2015-05-19 10:36:48 +0200
commit58d5e21851ced6b475a87e3a4114b2c7e1125921 (patch)
treee40e3600e246bfd5d0639184ed6470d478a6b5c8 /src
parente645bcae7ccf1d7e4e75aa7d9149df5dae1d19c4 (diff)
downloadcoreboot-58d5e21851ced6b475a87e3a4114b2c7e1125921.tar.gz
coreboot-58d5e21851ced6b475a87e3a4114b2c7e1125921.tar.bz2
coreboot-58d5e21851ced6b475a87e3a4114b2c7e1125921.zip
x86: garbage collect SMM programs
The non-module SMM programs were not being garbage collected during linking. Do this so that one doesn't have to add dependencies for unused functions in SMM. TEST=Interrogated readelf -e smm.elf on both builds as well as diffed the symbol table. Runtime testing was not done. Change-Id: I31991496d92191e540df6340c587eec09c7022b3 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/10219 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/cpu/x86/smm/Makefile.inc2
-rw-r--r--src/cpu/x86/smm/smm.ld2
-rw-r--r--src/cpu/x86/smm/smm_tseg.ld2
3 files changed, 3 insertions, 3 deletions
diff --git a/src/cpu/x86/smm/Makefile.inc b/src/cpu/x86/smm/Makefile.inc
index 516497044128..a02be49ef43d 100644
--- a/src/cpu/x86/smm/Makefile.inc
+++ b/src/cpu/x86/smm/Makefile.inc
@@ -82,7 +82,7 @@ endif
else # CONFIG_SMM_MODULES
$(obj)/cpu/x86/smm/smm_wrap: $(obj)/cpu/x86/smm/smm.o $(src)/cpu/x86/smm/$(SMM_LDSCRIPT)
- $(LD_smm) $(SMM_LDFLAGS) -nostdlib -nostartfiles -static -o $(obj)/cpu/x86/smm/smm.elf -T $(src)/cpu/x86/smm/$(SMM_LDSCRIPT) $(obj)/cpu/x86/smm/smm.o
+ $(LD_smm) $(SMM_LDFLAGS) -nostdlib -nostartfiles --gc-sections -static -o $(obj)/cpu/x86/smm/smm.elf -T $(src)/cpu/x86/smm/$(SMM_LDSCRIPT) $(obj)/cpu/x86/smm/smm.o
$(NM_smm) -n $(obj)/cpu/x86/smm/smm.elf | sort > $(obj)/cpu/x86/smm/smm.map
$(OBJCOPY_smm) -O binary $(obj)/cpu/x86/smm/smm.elf $(obj)/cpu/x86/smm/smm
diff --git a/src/cpu/x86/smm/smm.ld b/src/cpu/x86/smm/smm.ld
index 6d33fbe984e3..3fde36e978e0 100644
--- a/src/cpu/x86/smm/smm.ld
+++ b/src/cpu/x86/smm/smm.ld
@@ -48,7 +48,7 @@ SECTIONS
*/
. = 0xa8000 - (( CPUS - 1) * 0x400);
.jumptable : {
- *(.jumptable)
+ KEEP(*(.jumptable));
}
/DISCARD/ : {
diff --git a/src/cpu/x86/smm/smm_tseg.ld b/src/cpu/x86/smm/smm_tseg.ld
index 4dedd2c43628..49c1a326f7af 100644
--- a/src/cpu/x86/smm/smm_tseg.ld
+++ b/src/cpu/x86/smm/smm_tseg.ld
@@ -19,7 +19,7 @@ SECTIONS
*/
. = 0x8000 - (( CPUS - 1) * 0x400);
.jumptable : {
- *(.jumptable)
+ KEEP(*(.jumptable));
}
/* Data used in early SMM TSEG handler. */