[coreboot-gerrit] New patch to review for coreboot: 25b51a6 arm64: ensure vital sections aren't garbage collected

Marc Jones (marc.jones@se-eng.com) gerrit at coreboot.org
Wed Mar 4 02:11:41 CET 2015


Marc Jones (marc.jones at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8584

-gerrit

commit 25b51a63561c1303cca1d8aec599de072ce1f7fd
Author: Aaron Durbin <adurbin at 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 liner 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 at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/207261
    Original-Reviewed-by: Stefan Reinauer <reinauer at google.com>
    Original-Reviewed-by: Furquan Shaikh <furquan at chromium.org>
    (cherry picked from commit 7c1a3e63e398755de0c77524a0483e6f1019aac0)
    Signed-off-by: Marc Jones <marc.jones at 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.*)



More information about the coreboot-gerrit mailing list