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:
@ -43,9 +43,9 @@
|
||||
#define ARCH_STAGE_HAS_BSS_SECTION 1
|
||||
#endif
|
||||
|
||||
/* Default is that currently ramstage and smm only has a heap. */
|
||||
/* Default is that currently ramstage, smm, and rmodules have a heap. */
|
||||
#ifndef ARCH_STAGE_HAS_HEAP_SECTION
|
||||
#define ARCH_STAGE_HAS_HEAP_SECTION (ENV_RAMSTAGE || ENV_SMM)
|
||||
#define ARCH_STAGE_HAS_HEAP_SECTION (ENV_RAMSTAGE || ENV_SMM || ENV_RMODULE)
|
||||
#endif
|
||||
|
||||
#define STR(x) #x
|
||||
|
@ -73,9 +73,9 @@ struct rmodule {
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_RELOCATABLE_MODULES)
|
||||
/* Rmodules have an entry point of named __rmodule_entry. */
|
||||
/* Rmodules have an entry point of named _start. */
|
||||
#define RMODULE_ENTRY(entry_) \
|
||||
void __rmodule_entry(void *) __attribute__((alias (STRINGIFY(entry_))))
|
||||
void _start(void *) __attribute__((alias (STRINGIFY(entry_))))
|
||||
#else
|
||||
#define RMODULE_ENTRY(entry_)
|
||||
#endif
|
||||
|
@ -30,6 +30,7 @@
|
||||
#define ENV_SMM 0
|
||||
#define ENV_SECMON 0
|
||||
#define ENV_VERSTAGE 0
|
||||
#define ENV_RMODULE 0
|
||||
|
||||
#elif defined(__ROMSTAGE__)
|
||||
#define ENV_BOOTBLOCK 0
|
||||
@ -38,6 +39,7 @@
|
||||
#define ENV_SMM 0
|
||||
#define ENV_SECMON 0
|
||||
#define ENV_VERSTAGE 0
|
||||
#define ENV_RMODULE 0
|
||||
|
||||
#elif defined(__SMM__)
|
||||
#define ENV_BOOTBLOCK 0
|
||||
@ -46,6 +48,7 @@
|
||||
#define ENV_SMM 1
|
||||
#define ENV_SECMON 0
|
||||
#define ENV_VERSTAGE 0
|
||||
#define ENV_RMODULE 0
|
||||
|
||||
#elif defined(__SECMON__)
|
||||
#define ENV_BOOTBLOCK 0
|
||||
@ -54,6 +57,7 @@
|
||||
#define ENV_SMM 0
|
||||
#define ENV_SECMON 1
|
||||
#define ENV_VERSTAGE 0
|
||||
#define ENV_RMODULE 0
|
||||
|
||||
#elif defined(__VERSTAGE__)
|
||||
#define ENV_BOOTBLOCK 0
|
||||
@ -62,6 +66,7 @@
|
||||
#define ENV_SMM 0
|
||||
#define ENV_SECMON 0
|
||||
#define ENV_VERSTAGE 1
|
||||
#define ENV_RMODULE 0
|
||||
|
||||
#elif defined(__RAMSTAGE__)
|
||||
#define ENV_BOOTBLOCK 0
|
||||
@ -70,6 +75,16 @@
|
||||
#define ENV_SMM 0
|
||||
#define ENV_SECMON 0
|
||||
#define ENV_VERSTAGE 0
|
||||
#define ENV_RMODULE 0
|
||||
|
||||
#elif defined(__RMODULE__)
|
||||
#define ENV_BOOTBLOCK 0
|
||||
#define ENV_ROMSTAGE 0
|
||||
#define ENV_RAMSTAGE 0
|
||||
#define ENV_SMM 0
|
||||
#define ENV_SECMON 0
|
||||
#define ENV_VERSTAGE 0
|
||||
#define ENV_RMODULE 1
|
||||
|
||||
#else
|
||||
/*
|
||||
@ -84,6 +99,7 @@
|
||||
#define ENV_SMM 0
|
||||
#define ENV_SECMON 0
|
||||
#define ENV_VERSTAGE 0
|
||||
#define ENV_RMODULE 0
|
||||
#endif
|
||||
|
||||
/* For romstage and ramstage always build with simple device model, ie.
|
||||
|
Reference in New Issue
Block a user