summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Gagniuc <mr.nuke.me@gmail.com>2015-10-02 12:17:56 -0700
committerAlexandru Gagniuc <mr.nuke.me@gmail.com>2015-10-08 16:27:50 +0000
commitdbeedbef701d404b8e48380d6a5617dc6c1d9b2c (patch)
tree2966c5e1c710f0a40bc4d15e96e425934260055c
parent0017b0045d5ea15f821a1030b02030590aa245ae (diff)
downloadcoreboot-dbeedbef701d404b8e48380d6a5617dc6c1d9b2c.tar.xz
arch/x86/bootblock: Link in object files selected with bootblock-y
As part of preparing for systems with non-memory-mapped media, we want to be able to call into C code. This change allows us to link C code directly into the bootblock. The steps of going from bootblock main() to CAR setup to C code will be implemented in subsequent patches. Note that a few files selected with bootblock-y will now be compiled for the bootblock as well, but since we enabled garbage collection, they will not be included in the final binary. Change-Id: I5ca6dcaf176f5469c6a3bb925859399123493bc6 Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Reviewed-on: http://review.coreboot.org/11783 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins)
-rw-r--r--src/arch/x86/Makefile.inc6
-rw-r--r--src/arch/x86/failover.ld4
2 files changed, 8 insertions, 2 deletions
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index 6b71b4a003..ff3b4fec1a 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -110,9 +110,11 @@ $(objgenerated)/bootblock.inc: $(src)/arch/x86/$(subst ",,$(CONFIG_BOOTBLOCK_SOU
$< > $(objgenerated)/bootblock.inc.d
$(ROMCC) -c -S $(bootblock_romccflags) -I. $(CPPFLAGS_bootblock) $< -o $@
-$(objcbfs)/bootblock.debug: $(obj)/arch/x86/bootblock.bootblock.o $(obj)/arch/x86/bootblock.bootblock.ld
+# $(obj)/arch/x86/bootblock.bootblock.ld is part of $(bootblock-objs)
+$(objcbfs)/bootblock.debug: $$(bootblock-objs)
@printf " LINK $(subst $(obj)/,,$(@))\n"
- $(LD_bootblock) $(LDFLAGS_bootblock) -static -o $@ -L$(obj) $< \
+ $(LD_bootblock) $(LDFLAGS_bootblock) -o $@ -L$(obj) \
+ $(filter-out %.ld,$(bootblock-objs)) \
-T $(obj)/arch/x86/bootblock.bootblock.ld
diff --git a/src/arch/x86/failover.ld b/src/arch/x86/failover.ld
index 94d5263bfb..bbff36e4fa 100644
--- a/src/arch/x86/failover.ld
+++ b/src/arch/x86/failover.ld
@@ -43,6 +43,9 @@ SECTIONS
*(.rom.text);
*(.rom.data);
*(.rom.data.*);
+ *(.text);
+ *(.text.*);
+ *(.rodata);
*(.rodata.*);
_erom = .;
} >rom = 0xff
@@ -65,6 +68,7 @@ SECTIONS
*(.note)
*(.comment.*)
*(.note.*)
+ *(.eh_frame)
*(.iplt)
*(.rel.*)
*(.igot.*)