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. Change-Id: Iaa0fd428bf975c82d4e6b0e75a17e6fd231fbaa9 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/207261 Reviewed-by: Stefan Reinauer <reinauer@google.com> Reviewed-by: Furquan Shaikh <furquan@chromium.org>
This commit is contained in:
parent
5e32d73803
commit
7c1a3e63e3
1 changed files with 5 additions and 5 deletions
|
|
@ -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.*)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue