[coreboot-gerrit] New patch to review for coreboot: 90c6f69 x86 romstage.ld: handle the AGESA special case in the linker script
Patrick Georgi (pgeorgi@google.com)
gerrit at coreboot.org
Sat Nov 1 00:06:22 CET 2014
Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7307
-gerrit
commit 90c6f69ae987d51cabacdfcbadbde80168103b93
Author: Patrick Georgi <pgeorgi at google.com>
Date: Sat Nov 1 00:02:50 2014 +0100
x86 romstage.ld: handle the AGESA special case in the linker script
Move the .illegal_globals definition lower in the romstage linker script
to make some versions of ld happy.
Also add a special case for AGESA files (which host a bunch of globals
that could be const, but aren't) here, so they're ignored from the start
instead of failing the test, then have the Makefile ignore the test result.
Change-Id: Ib533b7516135d2d3cab2bfda50d69c132c68e261
Signed-off-by: Patrick Georgi <pgeorgi at google.com>
---
src/arch/x86/Makefile.inc | 2 +-
src/arch/x86/init/romstage.ld | 28 +++++++++++++++-------------
2 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index 7ca3ca4..55266f6 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -217,7 +217,7 @@ endif
$(OBJCOPY_romstage) --only-section .illegal_globals $(@) $(objcbfs)/romstage_null.offenders && \
$(NM_romstage) $(objcbfs)/romstage_null.offenders | grep -q ""; if [ $$? -eq 0 ]; then \
echo "Forbidden global variables in romstage:"; \
- $(NM_romstage) $(objcbfs)/romstage_null.offenders; test "$(CONFIG_CPU_AMD_AGESA)" = y; \
+ $(NM_romstage) $(objcbfs)/romstage_null.offenders; false; \
else true; fi
$(objcbfs)/romstage_xip.debug: $$(romstage-objs) $(objgenerated)/romstage_xip.ld $$(romstage-libs)
diff --git a/src/arch/x86/init/romstage.ld b/src/arch/x86/init/romstage.ld
index f4a4dde..56b096e 100644
--- a/src/arch/x86/init/romstage.ld
+++ b/src/arch/x86/init/romstage.ld
@@ -43,19 +43,6 @@ SECTIONS
_erom = .;
}
- /* Global variables are not allowed in romstage
- * This section is checked during stage creation to ensure
- * that there are no global variables present
- */
- .illegal_globals . : {
- *(.data)
- *(.data.*)
- *(.bss)
- *(.bss.*)
- *(.sbss)
- *(.sbss.*)
- }
-
/DISCARD/ : {
*(.comment)
*(.note)
@@ -78,5 +65,20 @@ SECTIONS
preram_cbmem_console = .;
}
+ /* Global variables are not allowed in romstage
+ * This section is checked during stage creation to ensure
+ * that there are no global variables present
+ */
+
+ . = 0xffffff00;
+ .illegal_globals . : {
+ *(EXCLUDE_FILE (*/libagesa.*.a: */buildOpts.romstage.o */agesawrapper.romstage.o) .data)
+ *(.data.*)
+ *(.bss)
+ *(.bss.*)
+ *(.sbss)
+ *(.sbss.*)
+ }
+
_bogus = ASSERT((SIZEOF(.car.data) + CONFIG_CONSOLE_PRERAM_BUFFER_SIZE <= CONFIG_DCACHE_RAM_SIZE), "Cache as RAM area is too full");
}
More information about the coreboot-gerrit
mailing list