Marc Jones (marc.jones@se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8584
-gerrit
commit a7a9bcf3f822362b61278f2df4d232a21001fd01 Author: Aaron Durbin adurbin@chromium.org Date: Thu Jul 10 12:32:17 2014 -0500
arm64: ensure vital sections aren't garbage collected
The driver structures live in special sections which have no direct reference to the symbols. Therefore, when garbage collecting sections in the linker the drivers are tossed out resulting in no drivers being linked into ramstage. Fix this by adding the KEEP() directive to those special sections.
BUG=chrome-os-partner:29923 BRANCH=None TEST=Built and noted console starts working in ramstage.
Original-Change-Id: Iaa0fd428bf975c82d4e6b0e75a17e6fd231fbaa9 Original-Signed-off-by: Aaron Durbin adurbin@chromium.org Original-Reviewed-on: https://chromium-review.googlesource.com/207261 Original-Reviewed-by: Stefan Reinauer reinauer@google.com Original-Reviewed-by: Furquan Shaikh furquan@chromium.org (cherry picked from commit 7c1a3e63e398755de0c77524a0483e6f1019aac0) Signed-off-by: Marc Jones marc.jones@se-eng.com
Change-Id: I1e30e73be754ec849cb3cfac3bcb12e95b0f60d4 --- src/arch/arm64/ramstage.ld | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/arch/arm64/ramstage.ld b/src/arch/arm64/ramstage.ld index e878820..5dc55ba 100644 --- a/src/arch/arm64/ramstage.ld +++ b/src/arch/arm64/ramstage.ld @@ -49,7 +49,7 @@ SECTIONS .ctors : { . = ALIGN(0x100); __CTOR_LIST__ = .; - *(.ctors); + KEEP(*(.ctors)); LONG(0); __CTOR_END__ = .; } @@ -58,17 +58,17 @@ SECTIONS _rodata = .; . = ALIGN(4); console_drivers = .; - *(.rodata.console_drivers) + KEEP(*(.rodata.console_drivers)); econsole_drivers = . ; . = ALIGN(4); pci_drivers = . ; - *(.rodata.pci_driver) + KEEP(*(.rodata.pci_driver)); epci_drivers = . ; cpu_drivers = . ; - *(.rodata.cpu_driver) + KEEP(*(.rodata.cpu_driver)); ecpu_drivers = . ; _bs_init_begin = .; - *(.bs_init) + KEEP(*(.bs_init)); _bs_init_end = .; *(.rodata) *(.rodata.*)