lib/program.ld: Account for large code model sections
Starting with version 18 LLVM puts code and data generated with -ffunction-section -mcmodel=large inside sections with an 'l' prefix. Change-Id: Ib755673dfa9e71172bbef0a5aec075154c89a97b Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/81675 Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
@@ -72,6 +72,8 @@
|
|||||||
/* Allow global uninitialized variables for stages without CAR teardown. */
|
/* Allow global uninitialized variables for stages without CAR teardown. */
|
||||||
*(.bss)
|
*(.bss)
|
||||||
*(.bss.*)
|
*(.bss.*)
|
||||||
|
*(.lbss)
|
||||||
|
*(.lbss.*)
|
||||||
*(.sbss)
|
*(.sbss)
|
||||||
*(.sbss.*)
|
*(.sbss.*)
|
||||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||||
@@ -97,6 +99,8 @@ _bogus = ASSERT(_etext == ALIGN(_etext, ARCH_POINTER_ALIGN_SIZE), "Cache-As-RAM
|
|||||||
_data = .;
|
_data = .;
|
||||||
*(.data);
|
*(.data);
|
||||||
*(.data.*);
|
*(.data.*);
|
||||||
|
*(.ldata);
|
||||||
|
*(.ldata.*);
|
||||||
*(.sdata);
|
*(.sdata);
|
||||||
*(.sdata.*);
|
*(.sdata.*);
|
||||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||||
|
@@ -10,6 +10,11 @@
|
|||||||
* SoC's entry points due to artificial alignment restrictions, see
|
* SoC's entry points due to artificial alignment restrictions, see
|
||||||
* https://sourceware.org/binutils/docs/ld/Output-Section-Address.html
|
* https://sourceware.org/binutils/docs/ld/Output-Section-Address.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Starting with version 18 LLVM the combination -ffunction-section -mcmodel=large
|
||||||
|
* puts code and data in '.ltext, '.lrodata', '.ldata' and '.lbss'
|
||||||
|
*/
|
||||||
|
|
||||||
.text . : {
|
.text . : {
|
||||||
_program = .;
|
_program = .;
|
||||||
_text = .;
|
_text = .;
|
||||||
@@ -23,6 +28,8 @@
|
|||||||
KEEP(*(.metadata_hash_anchor));
|
KEEP(*(.metadata_hash_anchor));
|
||||||
*(.text);
|
*(.text);
|
||||||
*(.text.*);
|
*(.text.*);
|
||||||
|
*(.ltext);
|
||||||
|
*(.ltext.*);
|
||||||
|
|
||||||
#if ENV_HAS_CBMEM
|
#if ENV_HAS_CBMEM
|
||||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||||
@@ -55,6 +62,8 @@
|
|||||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||||
*(.rodata);
|
*(.rodata);
|
||||||
*(.rodata.*);
|
*(.rodata.*);
|
||||||
|
*(.lrodata);
|
||||||
|
*(.lrodata.*);
|
||||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||||
_etext = .;
|
_etext = .;
|
||||||
RECORD_SIZE(text)
|
RECORD_SIZE(text)
|
||||||
@@ -93,6 +102,8 @@
|
|||||||
|
|
||||||
*(.data);
|
*(.data);
|
||||||
*(.data.*);
|
*(.data.*);
|
||||||
|
*(.ldata);
|
||||||
|
*(.ldata.*);
|
||||||
*(.sdata);
|
*(.sdata);
|
||||||
*(.sdata.*);
|
*(.sdata.*);
|
||||||
|
|
||||||
@@ -122,6 +133,8 @@
|
|||||||
_bss = .;
|
_bss = .;
|
||||||
*(.bss)
|
*(.bss)
|
||||||
*(.bss.*)
|
*(.bss.*)
|
||||||
|
*(.lbss)
|
||||||
|
*(.lbss.*)
|
||||||
*(.sbss)
|
*(.sbss)
|
||||||
*(.sbss.*)
|
*(.sbss.*)
|
||||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||||
|
Reference in New Issue
Block a user