mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
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: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Acked-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
0f832b9cdc
commit
07f5b966aa
2 changed files with 93 additions and 2 deletions
|
@ -65,7 +65,7 @@ else
|
|||
PF_ABICALLS := -mabicalls
|
||||
PF_PIC := -fpic
|
||||
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
|
||||
endif
|
||||
|
||||
|
@ -74,4 +74,5 @@ PLATFORM_CPPFLAGS += -msoft-float
|
|||
PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib
|
||||
PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
|
||||
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)
|
||||
|
|
90
arch/mips/cpu/u-boot-spl.lds
Normal file
90
arch/mips/cpu/u-boot-spl.lds
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* 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)
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue