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