GNU ld linker script preview
1. A minimal linker script
MEMORY and SECTIONS blocks with region assignment
horizon-dark
/* a simple linker script */
ENTRY(_start)
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
}
SECTIONS
{
.text : {
*(.text*)
} > FLASH
.data : {
*(.data*)
} > RAM AT> FLASH
}
atom-one-dark
/* a simple linker script */
ENTRY(_start)
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
}
SECTIONS
{
.text : {
*(.text*)
} > FLASH
.data : {
*(.data*)
} > RAM AT> FLASH
}
github-dark
/* a simple linker script */
ENTRY(_start)
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
}
SECTIONS
{
.text : {
*(.text*)
} > FLASH
.data : {
*(.data*)
} > RAM AT> FLASH
}
dracula
/* a simple linker script */
ENTRY(_start)
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
}
SECTIONS
{
.text : {
*(.text*)
} > FLASH
.data : {
*(.data*)
} > RAM AT> FLASH
}
nord
/* a simple linker script */
ENTRY(_start)
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
}
SECTIONS
{
.text : {
*(.text*)
} > FLASH
.data : {
*(.data*)
} > RAM AT> FLASH
}
github
/* a simple linker script */
ENTRY(_start)
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
}
SECTIONS
{
.text : {
*(.text*)
} > FLASH
.data : {
*(.data*)
} > RAM AT> FLASH
}
2. Symbols and expressions
PROVIDE, ALIGN, and the location counter
horizon-dark
PROVIDE(_stack_top = ORIGIN(RAM) + LENGTH(RAM));
SECTIONS
{
.bss : {
. = ALIGN(4);
_bss_start = .;
*(.bss*)
_bss_end = .;
} > RAM
} atom-one-dark
PROVIDE(_stack_top = ORIGIN(RAM) + LENGTH(RAM));
SECTIONS
{
.bss : {
. = ALIGN(4);
_bss_start = .;
*(.bss*)
_bss_end = .;
} > RAM
} github-dark
PROVIDE(_stack_top = ORIGIN(RAM) + LENGTH(RAM));
SECTIONS
{
.bss : {
. = ALIGN(4);
_bss_start = .;
*(.bss*)
_bss_end = .;
} > RAM
} dracula
PROVIDE(_stack_top = ORIGIN(RAM) + LENGTH(RAM));
SECTIONS
{
.bss : {
. = ALIGN(4);
_bss_start = .;
*(.bss*)
_bss_end = .;
} > RAM
} nord
PROVIDE(_stack_top = ORIGIN(RAM) + LENGTH(RAM));
SECTIONS
{
.bss : {
. = ALIGN(4);
_bss_start = .;
*(.bss*)
_bss_end = .;
} > RAM
} github
PROVIDE(_stack_top = ORIGIN(RAM) + LENGTH(RAM));
SECTIONS
{
.bss : {
. = ALIGN(4);
_bss_start = .;
*(.bss*)
_bss_end = .;
} > RAM
} 3. Input and search paths
INPUT, GROUP, and SEARCH_DIR
horizon-dark
SEARCH_DIR("/usr/lib")
INPUT(libc.a libm.a)
GROUP(libgcc.a libc.a) atom-one-dark
SEARCH_DIR("/usr/lib")
INPUT(libc.a libm.a)
GROUP(libgcc.a libc.a) github-dark
SEARCH_DIR("/usr/lib")
INPUT(libc.a libm.a)
GROUP(libgcc.a libc.a) dracula
SEARCH_DIR("/usr/lib")
INPUT(libc.a libm.a)
GROUP(libgcc.a libc.a) nord
SEARCH_DIR("/usr/lib")
INPUT(libc.a libm.a)
GROUP(libgcc.a libc.a) github
SEARCH_DIR("/usr/lib")
INPUT(libc.a libm.a)
GROUP(libgcc.a libc.a)