rmodule: use program.ld for linking
Bring rmodule linking into the common linking method. The __rmodule_entry symbol was removed while using a more common _start symbol. The rmodtool will honor the entry point found within the ELF header. Add ENV_RMODULE so that one can distinguish the environment when generating linker scripts for rmodules. Lastly, directly use program.ld for the rmodule.ld linker script. BUG=chrome-os-partner:44827 BRANCH=None TEST=Built rambi and analyzed the relocatable ramstage, sipi_vector, and smm rmodules. Change-Id: Iaa499eb229d8171272add9ee6d27cff75e7534ac Signed-off-by: Aaron Durbin <adubin@chromium.org> Reviewed-on: http://review.coreboot.org/11517 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
@ -38,14 +38,14 @@
|
||||
*(.text);
|
||||
*(.text.*);
|
||||
|
||||
#if ENV_RAMSTAGE || ENV_ROMSTAGE
|
||||
#if ENV_RAMSTAGE || ENV_ROMSTAGE || ENV_RMODULE
|
||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||
_cbmem_init_hooks = .;
|
||||
KEEP(*(.rodata.cbmem_init_hooks));
|
||||
_ecbmem_init_hooks = .;
|
||||
#endif
|
||||
|
||||
#if ENV_RAMSTAGE
|
||||
#if ENV_RAMSTAGE || ENV_RMODULE
|
||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||
_pci_drivers = .;
|
||||
KEEP(*(.rodata.pci_driver));
|
||||
@ -79,13 +79,20 @@
|
||||
.data : {
|
||||
. = ALIGN(ARCH_CACHELINE_ALIGN_SIZE);
|
||||
_data = .;
|
||||
|
||||
#if ENV_RMODULE
|
||||
_rmodule_params = .;
|
||||
KEEP(*(.module_parameters));
|
||||
_ermodule_params = .;
|
||||
#endif
|
||||
|
||||
*(.data);
|
||||
*(.data.*);
|
||||
|
||||
#ifdef __PRE_RAM__
|
||||
PROVIDE(_preram_cbmem_console = .);
|
||||
PROVIDE(_epreram_cbmem_console = _preram_cbmem_console);
|
||||
#elif ENV_RAMSTAGE
|
||||
#elif ENV_RAMSTAGE || ENV_RMODULE
|
||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||
_bs_init_begin = .;
|
||||
KEEP(*(.bs_init));
|
||||
@ -116,7 +123,7 @@
|
||||
.heap : {
|
||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||
_heap = .;
|
||||
. += CONFIG_HEAP_SIZE;
|
||||
. += (ENV_RMODULE ? __heap_size : CONFIG_HEAP_SIZE);
|
||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||
_eheap = .;
|
||||
}
|
||||
|
Reference in New Issue
Block a user