Skip to content
Snippets Groups Projects
Commit 07f5b966 authored by Daniel Schwierzeck's avatar Daniel Schwierzeck
Browse files

MIPS: provide a default u-boot-spl.lds


Provide a default linker script for SPL binaries. Start address
and size of text section and BSS section are configurable. All
sections are arranged in a way that only relevant sections are
kept in the code section for maximum size reduction. All other
sections are kept but moved outside the code section to help
with debugging.

Signed-off-by: default avatarDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Acked-by: default avatarMarek Vasut <marex@denx.de>
parent 0f832b9c
No related branches found
No related tags found
No related merge requests found
...@@ -65,7 +65,7 @@ else ...@@ -65,7 +65,7 @@ else
PF_ABICALLS := -mabicalls PF_ABICALLS := -mabicalls
PF_PIC := -fpic PF_PIC := -fpic
PF_PIE := -pie PF_PIE := -pie
PF_OBJCOPY := -j .got -j .u_boot_list -j .rel.dyn -j .padding PF_OBJCOPY := -j .got -j .rel.dyn -j .padding
PF_OBJCOPY += -j .dtb.init.rodata PF_OBJCOPY += -j .dtb.init.rodata
endif endif
...@@ -74,4 +74,5 @@ PLATFORM_CPPFLAGS += -msoft-float ...@@ -74,4 +74,5 @@ PLATFORM_CPPFLAGS += -msoft-float
PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib
PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
LDFLAGS_FINAL += --gc-sections $(PF_PIE) LDFLAGS_FINAL += --gc-sections $(PF_PIE)
OBJCOPYFLAGS += -j .text -j .rodata -j .data $(PF_OBJCOPY) OBJCOPYFLAGS += -j .text -j .rodata -j .data -j .u_boot_list
OBJCOPYFLAGS += $(PF_OBJCOPY)
/*
* SPDX-License-Identifier: GPL-2.0+
*/
MEMORY { .spl_mem : ORIGIN = CONFIG_SPL_TEXT_BASE, \
LENGTH = CONFIG_SPL_MAX_SIZE }
MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
OUTPUT_ARCH(mips)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text : {
*(.text*)
} > .spl_mem
. = ALIGN(4);
.rodata : {
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
} > .spl_mem
. = ALIGN(4);
.data : {
*(SORT_BY_ALIGNMENT(.data*))
*(SORT_BY_ALIGNMENT(.sdata*))
} > .spl_mem
#ifdef CONFIG_SPL_DM
. = ALIGN(4);
.u_boot_list : {
KEEP(*(SORT(.u_boot_list*)));
} > .spl_mem
#endif
. = ALIGN(4);
__image_copy_end = .;
.bss (NOLOAD) : {
__bss_start = .;
*(.bss*)
*(.sbss*)
*(COMMON)
. = ALIGN(4);
__bss_end = .;
} > .bss_mem
.rel.dyn (NOLOAD) : {
*(.rel.dyn)
}
.dynsym : {
*(.dynsym)
}
.dynbss : {
*(.dynbss)
}
.dynstr : {
*(.dynstr)
}
.dynamic : {
*(.dynamic)
}
.plt : {
*(.plt)
}
.interp : {
*(.interp)
}
.gnu : {
*(.gnu*)
}
.MIPS.stubs : {
*(.MIPS.stubs)
}
.hash : {
*(.hash)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment