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