summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authoraozima <[email protected]>2013-07-11 23:07:16 +0800
committeraozima <[email protected]>2013-07-11 23:07:16 +0800
commitcc8301d0f17210cf0e74232b8d58cde81e28e5e9 (patch)
treee1bb093782f169b5a8f41ec7442d8ddad8698b61 /bsp
parent51532ae425b4b468ba78c956ef95f214dd427c1b (diff)
update linker script for components auto initial.
Diffstat (limited to 'bsp')
-rwxr-xr-xbsp/at91sam9260/at91sam9260_ram.ld144
-rw-r--r--bsp/efm32/efm32g_rom.ld219
-rw-r--r--bsp/lm3s8962/lm3s_rom.ld6
-rw-r--r--bsp/lm3s9b9x/lm3s_rom.ld6
-rw-r--r--bsp/lm4f232/lm4f_rom.ld8
-rw-r--r--bsp/lpc176x/rtthread-lpc17xx.ld3
-rw-r--r--bsp/lpc178x/rtthread-lpc178x.ld6
-rw-r--r--bsp/lpc2148/lpc2148_rom.ld150
-rw-r--r--bsp/lpc2478/lpc2478_rom.lds50
-rw-r--r--bsp/mb9bf500r/fm3_rom.ld6
-rw-r--r--bsp/mb9bf506r/rtthread-mb9bf506.ld179
-rw-r--r--bsp/mini2440/mini2440_ram.ld144
-rw-r--r--bsp/sam7x/sam7x_rom.ld84
-rw-r--r--bsp/stm32f0x/stm32_rom.ld19
-rw-r--r--bsp/stm32f107/stm32_rom.ld19
-rw-r--r--bsp/stm32f10x/stm32_rom.ld19
-rw-r--r--bsp/stm32f20x/stm32_rom.ld21
-rw-r--r--bsp/stm32f40x/stm32_rom.ld19
-rw-r--r--bsp/xplorer4330/m4/lpc4330_xplorer_spifi32mb.ld6
19 files changed, 613 insertions, 495 deletions
diff --git a/bsp/at91sam9260/at91sam9260_ram.ld b/bsp/at91sam9260/at91sam9260_ram.ld
index 9f3fbfc45c..501287d981 100755
--- a/bsp/at91sam9260/at91sam9260_ram.ld
+++ b/bsp/at91sam9260/at91sam9260_ram.ld
@@ -3,83 +3,89 @@ OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
- . = 0x20000000;
+ . = 0x20000000;
- . = ALIGN(4);
- .text :
- {
- *(.init)
- *(.text)
- *(.gnu.linkonce.t*)
-
- /* section information for finsh shell */
- . = ALIGN(4);
- __fsymtab_start = .;
- KEEP(*(FSymTab))
- __fsymtab_end = .;
- . = ALIGN(4);
- __vsymtab_start = .;
- KEEP(*(VSymTab))
- __vsymtab_end = .;
- . = ALIGN(4);
+ . = ALIGN(4);
+ .text :
+ {
+ *(.init)
+ *(.text)
+ *(.gnu.linkonce.t*)
+
+ /* section information for finsh shell */
+ . = ALIGN(4);
+ __fsymtab_start = .;
+ KEEP(*(FSymTab))
+ __fsymtab_end = .;
+ . = ALIGN(4);
+ __vsymtab_start = .;
+ KEEP(*(VSymTab))
+ __vsymtab_end = .;
+ . = ALIGN(4);
- /* section information for modules */
- . = ALIGN(4);
- __rtmsymtab_start = .;
- KEEP(*(RTMSymTab))
- __rtmsymtab_end = .;
- }
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
- . = ALIGN(4);
- .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) *(.eh_frame) }
+ /* section information for modules */
+ . = ALIGN(4);
+ __rtmsymtab_start = .;
+ KEEP(*(RTMSymTab))
+ __rtmsymtab_end = .;
+ }
- . = ALIGN(4);
- .ctors :
- {
- PROVIDE(__ctors_start__ = .);
- KEEP(*(SORT(.ctors.*)))
- KEEP(*(.ctors))
- PROVIDE(__ctors_end__ = .);
- }
+ . = ALIGN(4);
+ .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) *(.eh_frame) }
- .dtors :
- {
- PROVIDE(__dtors_start__ = .);
- KEEP(*(SORT(.dtors.*)))
- KEEP(*(.dtors))
- PROVIDE(__dtors_end__ = .);
- }
+ . = ALIGN(4);
+ .ctors :
+ {
+ PROVIDE(__ctors_start__ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(__ctors_end__ = .);
+ }
- . = ALIGN(4);
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- }
+ .dtors :
+ {
+ PROVIDE(__dtors_start__ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(__dtors_end__ = .);
+ }
- . = ALIGN(4);
- .nobss : { *(.nobss) }
+ . = ALIGN(4);
+ .data :
+ {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d*)
+ }
- . = 0x20300000;
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- __bss_end = .;
+ . = ALIGN(4);
+ .nobss : { *(.nobss) }
- /* stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_info 0 : { *(.debug_info) }
- .debug_line 0 : { *(.debug_line) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- .debug_aranges 0 : { *(.debug_aranges) }
+ . = 0x20300000;
+ . = ALIGN(4);
+ __bss_start = .;
+ .bss : { *(.bss) }
+ __bss_end = .;
- _end = .;
+ /* stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_info 0 : { *(.debug_info) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ .debug_aranges 0 : { *(.debug_aranges) }
+
+ _end = .;
}
diff --git a/bsp/efm32/efm32g_rom.ld b/bsp/efm32/efm32g_rom.ld
index ce3a6a408f..6279e63571 100644
--- a/bsp/efm32/efm32g_rom.ld
+++ b/bsp/efm32/efm32g_rom.ld
@@ -1,8 +1,8 @@
/***************************************************************************//**
- * @file efm32_rom_g.ld
- * @brief Linker script for EFM32 gecko
- * COPYRIGHT (C) 2012, RT-Thread Development Team
- * @author Bernard, onelife
+ * @file efm32_rom_g.ld
+ * @brief Linker script for EFM32 gecko
+ * COPYRIGHT (C) 2012, RT-Thread Development Team
+ * @author Bernard, onelife
* @version 1.0
*******************************************************************************
* @section License
@@ -10,11 +10,11 @@
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
- * Date Author Notes
- * 2009-10-14 Bernard first version
- * 2010-12-22 onelife Modify for EFM32
- * 2011-07-06 onelife Modify to make use the start code in libraries
- * 2012-05-15 onelife Modified to compatible with CMSIS v3
+ * Date Author Notes
+ * 2009-10-14 Bernard first version
+ * 2010-12-22 onelife Modify for EFM32
+ * 2011-07-06 onelife Modify to make use the start code in libraries
+ * 2012-05-15 onelife Modified to compatible with CMSIS v3
******************************************************************************/
MEMORY
{
@@ -53,122 +53,129 @@ ENTRY(Reset_Handler)
SECTIONS
{
- .text :
- {
- KEEP(*(.isr_vector))
- *(.text*)
+ .text :
+ {
+ KEEP(*(.isr_vector))
+ *(.text*)
- KEEP(*(.init))
- KEEP(*(.fini))
+ KEEP(*(.init))
+ KEEP(*(.fini))
- /* .ctors */
- *crtbegin.o(.ctors)
- *crtbegin?.o(.ctors)
- *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
- *(SORT(.ctors.*))
- *(.ctors)
+ /* .ctors */
+ *crtbegin.o(.ctors)
+ *crtbegin?.o(.ctors)
+ *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+ *(SORT(.ctors.*))
+ *(.ctors)
- /* .dtors */
- *crtbegin.o(.dtors)
- *crtbegin?.o(.dtors)
- *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
- *(SORT(.dtors.*))
- *(.dtors)
+ /* .dtors */
+ *crtbegin.o(.dtors)
+ *crtbegin?.o(.dtors)
+ *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ *(SORT(.dtors.*))
+ *(.dtors)
- *(.rodata*)
+ *(.rodata*)
- KEEP(*(.eh_frame*))
+ KEEP(*(.eh_frame*))
- /* section information for finsh shell */
- . = ALIGN(4);
- __fsymtab_start = .;
- KEEP(*(FSymTab))
- __fsymtab_end = .;
- . = ALIGN(4);
- __vsymtab_start = .;
- KEEP(*(VSymTab))
- __vsymtab_end = .;
- } > FLASH = 0
+ /* section information for finsh shell */
+ . = ALIGN(4);
+ __fsymtab_start = .;
+ KEEP(*(FSymTab))
+ __fsymtab_end = .;
+ . = ALIGN(4);
+ __vsymtab_start = .;
+ KEEP(*(VSymTab))
+ __vsymtab_end = .;
- .ARM.extab :
- {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > FLASH
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
- __exidx_start = .;
- .ARM.exidx :
- {
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- } > FLASH
- __exidx_end = .;
+ } > FLASH = 0
- __etext = .;
+ .ARM.extab :
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } > FLASH
- .data : AT (__etext)
- {
- __data_start__ = .;
- *(vtable)
- *(.data*)
- *(.ram)
+ __exidx_start = .;
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > FLASH
+ __exidx_end = .;
- . = ALIGN(4);
- /* preinit data */
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP(*(.preinit_array))
- PROVIDE_HIDDEN (__preinit_array_end = .);
+ __etext = .;
- . = ALIGN(4);
- /* init data */
- PROVIDE_HIDDEN (__init_array_start = .);
- KEEP(*(SORT(.init_array.*)))
- KEEP(*(.init_array))
- PROVIDE_HIDDEN (__init_array_end = .);
+ .data : AT (__etext)
+ {
+ __data_start__ = .;
+ *(vtable)
+ *(.data*)
+ *(.ram)
+ . = ALIGN(4);
+ /* preinit data */
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP(*(.preinit_array))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
- . = ALIGN(4);
- /* finit data */
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP(*(SORT(.fini_array.*)))
- KEEP(*(.fini_array))
- PROVIDE_HIDDEN (__fini_array_end = .);
+ . = ALIGN(4);
+ /* init data */
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP(*(SORT(.init_array.*)))
+ KEEP(*(.init_array))
+ PROVIDE_HIDDEN (__init_array_end = .);
- . = ALIGN(4);
- /* All data end */
- __data_end__ = .;
- } > RAM
+ . = ALIGN(4);
+ /* finit data */
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP(*(SORT(.fini_array.*)))
+ KEEP(*(.fini_array))
+ PROVIDE_HIDDEN (__fini_array_end = .);
- .bss :
- {
- __bss_start__ = .;
- *(.bss*)
- *(COMMON)
- __bss_end__ = .;
- } > RAM
+ . = ALIGN(4);
+ /* All data end */
+ __data_end__ = .;
- .heap :
- {
- __end__ = .;
- end = __end__;
- _end = __end__;
- *(.heap*)
- __HeapLimit = .;
- } > RAM
+ } > RAM
- /* .stack_dummy section doesn't contains any symbols. It is only
- * used for linker to calculate size of stack sections, and assign
- * values to stack symbols later */
- .stack_dummy :
- {
- *(.stack)
- } > RAM
+ .bss :
+ {
+ __bss_start__ = .;
+ *(.bss*)
+ *(COMMON)
+ __bss_end__ = .;
+ } > RAM
- /* Set stack top to end of RAM, and stack limit move down by
- * size of stack_dummy section */
- __StackTop = ORIGIN(RAM) + LENGTH(RAM);
- __StackLimit = __StackTop - SIZEOF(.stack_dummy);
- PROVIDE(__stack = __StackTop);
+ .heap :
+ {
+ __end__ = .;
+ end = __end__;
+ _end = __end__;
+ *(.heap*)
+ __HeapLimit = .;
+ } > RAM
- /* Check if data + heap + stack exceeds RAM limit */
- ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+ /* .stack_dummy section doesn't contains any symbols. It is only
+ * used for linker to calculate size of stack sections, and assign
+ * values to stack symbols later */
+ .stack_dummy :
+ {
+ *(.stack)
+ } > RAM
+
+ /* Set stack top to end of RAM, and stack limit move down by
+ * size of stack_dummy section */
+ __StackTop = ORIGIN(RAM) + LENGTH(RAM);
+ __StackLimit = __StackTop - SIZEOF(.stack_dummy);
+ PROVIDE(__stack = __StackTop);
+
+ /* Check if data + heap + stack exceeds RAM limit */
+ ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}
diff --git a/bsp/lm3s8962/lm3s_rom.ld b/bsp/lm3s8962/lm3s_rom.ld
index 607c400193..5572ae4186 100644
--- a/bsp/lm3s8962/lm3s_rom.ld
+++ b/bsp/lm3s8962/lm3s_rom.ld
@@ -37,6 +37,12 @@ SECTIONS
__vsymtab_end = .;
. = ALIGN(4);
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
_etext = .;
} > CODE = 0
diff --git a/bsp/lm3s9b9x/lm3s_rom.ld b/bsp/lm3s9b9x/lm3s_rom.ld
index 607c400193..5572ae4186 100644
--- a/bsp/lm3s9b9x/lm3s_rom.ld
+++ b/bsp/lm3s9b9x/lm3s_rom.ld
@@ -37,6 +37,12 @@ SECTIONS
__vsymtab_end = .;
. = ALIGN(4);
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
_etext = .;
} > CODE = 0
diff --git a/bsp/lm4f232/lm4f_rom.ld b/bsp/lm4f232/lm4f_rom.ld
index fe66bc9e34..16bb52b569 100644
--- a/bsp/lm4f232/lm4f_rom.ld
+++ b/bsp/lm4f232/lm4f_rom.ld
@@ -50,7 +50,13 @@ SECTIONS
__vsymtab_end = .;
. = ALIGN(4);
- } > FLASH
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
+ } > FLASH
.data : AT(ADDR(.text) + SIZEOF(.text))
{
diff --git a/bsp/lpc176x/rtthread-lpc17xx.ld b/bsp/lpc176x/rtthread-lpc17xx.ld
index 3eb7f962ef..928a27fa02 100644
--- a/bsp/lpc176x/rtthread-lpc17xx.ld
+++ b/bsp/lpc176x/rtthread-lpc17xx.ld
@@ -36,9 +36,10 @@ SECTIONS
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
+
. = ALIGN(4);
__rt_init_start = .;
- KEEP(*(.rti_fn*))
+ KEEP(*(SORT(.rti_fn*)))
__rt_init_end = .;
. = ALIGN(4);
diff --git a/bsp/lpc178x/rtthread-lpc178x.ld b/bsp/lpc178x/rtthread-lpc178x.ld
index 021d51a504..fd28d382c3 100644
--- a/bsp/lpc178x/rtthread-lpc178x.ld
+++ b/bsp/lpc178x/rtthread-lpc178x.ld
@@ -39,6 +39,12 @@ SECTIONS
. = ALIGN(4);
. = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
+ . = ALIGN(4);
_etext = .;
} > CODE = 0
diff --git a/bsp/lpc2148/lpc2148_rom.ld b/bsp/lpc2148/lpc2148_rom.ld
index 2dbe82514f..3bcd1c7165 100644
--- a/bsp/lpc2148/lpc2148_rom.ld
+++ b/bsp/lpc2148/lpc2148_rom.ld
@@ -4,8 +4,8 @@ OUTPUT_ARCH(arm)
MEMORY
{
- CODE (rx) : ORIGIN = 0x00000000, LENGTH = 512k /* 512KB flash */
- DATA (rw) : ORIGIN = 0x40000000, LENGTH = 32k /* 32K sram */
+ CODE (rx) : ORIGIN = 0x00000000, LENGTH = 512k /* 512KB flash */
+ DATA (rw) : ORIGIN = 0x40000000, LENGTH = 32k /* 32K sram */
}
ENTRY(_start)
@@ -18,49 +18,55 @@ _svc_tack_size = 0x400;
SECTIONS
{
- . = 0;
+ . = 0;
- . = ALIGN(4);
- .text :
- {
- *(.init)
- *(.text)
- *(.rodata)
- *(.rodata*)
- *(.glue_7)
- *(.glue_7t)
+ . = ALIGN(4);
+ .text :
+ {
+ *(.init)
+ *(.text)
+ *(.rodata)
+ *(.rodata*)
+ *(.glue_7)
+ *(.glue_7t)
+
+ /* section information for finsh shell */
+ . = ALIGN(4);
+ __fsymtab_start = .;
+ KEEP(*(FSymTab))
+ __fsymtab_end = .;
+ . = ALIGN(4);
+ __vsymtab_start = .;
+ KEEP(*(VSymTab))
+ __vsymtab_end = .;
+ . = ALIGN(4);
- /* section information for finsh shell */
- . = ALIGN(4);
- __fsymtab_start = .;
- KEEP(*(FSymTab))
- __fsymtab_end = .;
- . = ALIGN(4);
- __vsymtab_start = .;
- KEEP(*(VSymTab))
- __vsymtab_end = .;
- . = ALIGN(4);
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
- } >CODE
+ } >CODE
- . = ALIGN(4);
- .ctors :
- {
- PROVIDE(__ctors_start__ = .);
- KEEP(*(SORT(.ctors.*)))
- KEEP(*(.ctors))
- PROVIDE(__ctors_end__ = .);
- } > CODE
+ . = ALIGN(4);
+ .ctors :
+ {
+ PROVIDE(__ctors_start__ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(__ctors_end__ = .);
+ } > CODE
- .dtors :
- {
- PROVIDE(__dtors_start__ = .);
- KEEP(*(SORT(.dtors.*)))
- KEEP(*(.dtors))
- PROVIDE(__dtors_end__ = .);
- } > CODE
+ .dtors :
+ {
+ PROVIDE(__dtors_start__ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(__dtors_end__ = .);
+ } > CODE
- __end_of_text__ = .;
+ __end_of_text__ = .;
/* .ARM.exidx is sorted, so has to go in its own output section. */
__exidx_start = .;
@@ -73,7 +79,7 @@ SECTIONS
} > CODE
__exidx_end = .;
- /* .data section which is used for initialized data */
+ /* .data section which is used for initialized data */
.data : AT (_sidata)
{
. = ALIGN(4);
@@ -88,36 +94,36 @@ SECTIONS
/* This is used by the startup in order to initialize the .data secion */
_edata = . ;
} >DATA
- __data_end = .;
+ __data_end = .;
- .noinit :
- {
- *(.bss.noinit)
- } > DATA
+ .noinit :
+ {
+ *(.bss.noinit)
+ } > DATA
- .stack :
- {
- . = ALIGN(4);
- _undefined_stack_base = .;
- . = . + _undefined_tack_size;
- _undefined_stack_top = .;
-
- _abort_stack_base = .;
- . = . + _abort_tack_size;
- _abort_stack_top = .;
-
- _fiq_stack_base = .;
- . = . + _fiq_tack_size;
- _fiq_stack_top = .;
-
- _irq_stack_base = .;
- . = . + _irq_tack_size;
- _irq_stack_top = .;
-
- _svc_stack_base = .;
- . = . + _svc_tack_size;
- _svc_stack_top = .;
- } >DATA
+ .stack :
+ {
+ . = ALIGN(4);
+ _undefined_stack_base = .;
+ . = . + _undefined_tack_size;
+ _undefined_stack_top = .;
+
+ _abort_stack_base = .;
+ . = . + _abort_tack_size;
+ _abort_stack_top = .;
+
+ _fiq_stack_base = .;
+ . = . + _fiq_tack_size;
+ _fiq_stack_top = .;
+
+ _irq_stack_base = .;
+ . = . + _irq_tack_size;
+ _irq_stack_top = .;
+
+ _svc_stack_base = .;
+ . = . + _svc_tack_size;
+ _svc_stack_top = .;
+ } >DATA
__bss_start = .;
.bss :
@@ -135,8 +141,8 @@ SECTIONS
} > DATA
__bss_end = .;
- /* Align here to ensure that the .bss section occupies space up to
- _end. Align after .bss to ensure correct alignment even if the
- .bss section disappears because there are no input sections. */
- . = ALIGN(32 / 8);
+ /* Align here to ensure that the .bss section occupies space up to
+ _end. Align after .bss to ensure correct alignment even if the
+ .bss section disappears because there are no input sections. */
+ . = ALIGN(32 / 8);
}
diff --git a/bsp/lpc2478/lpc2478_rom.lds b/bsp/lpc2478/lpc2478_rom.lds
index ced52b9fc8..f6e3672ff1 100644
--- a/bsp/lpc2478/lpc2478_rom.lds
+++ b/bsp/lpc2478/lpc2478_rom.lds
@@ -15,8 +15,8 @@ SECTIONS
{
.text :
{
- *(.init)
- *(.text)
+ *(.init)
+ *(.text)
*(.text.*) /* remaining code */
*(.rodata) /* read-only data (constants) */
*(.rodata*)
@@ -36,25 +36,31 @@ SECTIONS
. = ALIGN(4);
. = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
+ . = ALIGN(4);
_etext = .;
} > CODE = 0
- . = ALIGN(4);
- .ctors :
- {
- PROVIDE(__ctors_start__ = .);
- KEEP(*(SORT(.ctors.*)))
- KEEP(*(.ctors))
- PROVIDE(__ctors_end__ = .);
- } > CODE
+ . = ALIGN(4);
+ .ctors :
+ {
+ PROVIDE(__ctors_start__ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(__ctors_end__ = .);
+ } > CODE
- .dtors :
- {
- PROVIDE(__dtors_start__ = .);
- KEEP(*(SORT(.dtors.*)))
- KEEP(*(.dtors))
- PROVIDE(__dtors_end__ = .);
- } > CODE
+ .dtors :
+ {
+ PROVIDE(__dtors_start__ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(__dtors_end__ = .);
+ } > CODE
/* .ARM.exidx is sorted, so has to go in its own output section. */
__exidx_start = .;
@@ -82,12 +88,12 @@ SECTIONS
/* This is used by the startup in order to initialize the .data secion */
_edata = . ;
} >DATA
- __data_end = .;
+ __data_end = .;
- .noinit :
- {
- *(.bss.noinit)
- } > DATA
+ .noinit :
+ {
+ *(.bss.noinit)
+ } > DATA
__bss_start = .;
.bss :
diff --git a/bsp/mb9bf500r/fm3_rom.ld b/bsp/mb9bf500r/fm3_rom.ld
index f5f204d35e..67f1a973b3 100644
--- a/bsp/mb9bf500r/fm3_rom.ld
+++ b/bsp/mb9bf500r/fm3_rom.ld
@@ -33,6 +33,12 @@ SECTIONS
. = ALIGN(4);
. = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
+ . = ALIGN(4);
_etext = .;
} > CODE = 0
diff --git a/bsp/mb9bf506r/rtthread-mb9bf506.ld b/bsp/mb9bf506r/rtthread-mb9bf506.ld
index 0676c45251..b407d22ddf 100644
--- a/bsp/mb9bf506r/rtthread-mb9bf506.ld
+++ b/bsp/mb9bf506r/rtthread-mb9bf506.ld
@@ -41,76 +41,76 @@ PROVIDE(__cs3_heap_end = __cs3_region_start_ram + __cs3_region_size_ram);
SECTIONS
{
- .text :
- {
- CREATE_OBJECT_SYMBOLS
- __cs3_region_start_rom = .;
- *(.cs3.region-head.rom)
- __cs3_interrupt_vector = __cs3_interrupt_vector_cortex_m;
- *(.cs3.interrupt_vector)
- /* Make sure we pulled in an interrupt vector. */
- ASSERT (. != __cs3_interrupt_vector_cortex_m, "No interrupt vector");
- *(.rom)
- *(.rom.b)
+ .text :
+ {
+ CREATE_OBJECT_SYMBOLS
+ __cs3_region_start_rom = .;
+ *(.cs3.region-head.rom)
+ __cs3_interrupt_vector = __cs3_interrupt_vector_cortex_m;
+ *(.cs3.interrupt_vector)
+ /* Make sure we pulled in an interrupt vector. */
+ ASSERT (. != __cs3_interrupt_vector_cortex_m, "No interrupt vector");
+ *(.rom)
+ *(.rom.b)
- __cs3_reset = __cs3_reset_cortex_m;
- *(.cs3.reset)
- /* Make sure we pulled in some reset code. */
- ASSERT (. != __cs3_reset, "No reset code");
+ __cs3_reset = __cs3_reset_cortex_m;
+ *(.cs3.reset)
+ /* Make sure we pulled in some reset code. */
+ ASSERT (. != __cs3_reset, "No reset code");
- *(.text .text.* .gnu.linkonce.t.*)
- *(.plt)
- *(.gnu.warning)
- *(.glue_7t) *(.glue_7) *(.vfp11_veneer)
+ *(.text .text.* .gnu.linkonce.t.*)
+ *(.plt)
+ *(.gnu.warning)
+ *(.glue_7t) *(.glue_7) *(.vfp11_veneer)
- *(.rodata .rodata.* .gnu.linkonce.r.*)
+ *(.rodata .rodata.* .gnu.linkonce.r.*)
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- *(.gcc_except_table)
- *(.eh_frame_hdr)
- *(.eh_frame)
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ *(.gcc_except_table)
+ *(.eh_frame_hdr)
+ *(.eh_frame)
- . = ALIGN(4);
- KEEP(*(.init))
+ . = ALIGN(4);
+ KEEP(*(.init))
- . = ALIGN(4);
- __preinit_array_start = .;
- KEEP (*(.preinit_array))
- __preinit_array_end = .;
+ . = ALIGN(4);
+ __preinit_array_start = .;
+ KEEP (*(.preinit_array))
+ __preinit_array_end = .;
- . = ALIGN(4);
- __init_array_start = .;
- KEEP (*(SORT(.init_array.*)))
- KEEP (*(.init_array))
- __init_array_end = .;
+ . = ALIGN(4);
+ __init_array_start = .;
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array))
+ __init_array_end = .;
- . = ALIGN(0x4);
- KEEP (*crtbegin.o(.ctors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*crtend.o(.ctors))
+ . = ALIGN(0x4);
+ KEEP (*crtbegin.o(.ctors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*crtend.o(.ctors))
- . = ALIGN(4);
- KEEP(*(.fini))
+ . = ALIGN(4);
+ KEEP(*(.fini))
- . = ALIGN(4);
- __fini_array_start = .;
- KEEP (*(.fini_array))
- KEEP (*(SORT(.fini_array.*)))
- __fini_array_end = .;
+ . = ALIGN(4);
+ __fini_array_start = .;
+ KEEP (*(.fini_array))
+ KEEP (*(SORT(.fini_array.*)))
+ __fini_array_end = .;
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*crtend.o(.dtors))
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*crtend.o(.dtors))
- . = ALIGN(4);
- __cs3_regions = .;
- LONG (0)
- LONG (__cs3_region_init_ram)
- LONG (__cs3_region_start_ram)
- LONG (__cs3_region_init_size_ram)
- LONG (__cs3_region_zero_size_ram)
+ . = ALIGN(4);
+ __cs3_regions = .;
+ LONG (0)
+ LONG (__cs3_region_init_ram)
+ LONG (__cs3_region_start_ram)
+ LONG (__cs3_region_init_size_ram)
+ LONG (__cs3_region_zero_size_ram)
/* section information for finsh shell */
. = ALIGN(4);
@@ -122,35 +122,43 @@ SECTIONS
KEEP(*(VSymTab))
__vsymtab_end = .;
. = ALIGN(4);
- }
- /* .ARM.exidx is sorted, so has to go in its own output section. */
- __exidx_start = .;
- .ARM.exidx :
- {
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- } >rom
- __exidx_end = .;
- .text.align :
- {
- . = ALIGN(8);
- _etext = .;
- } >rom
- __cs3_region_size_rom = LENGTH(rom);
- __cs3_region_num = 1;
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
+ }
+
+ /* .ARM.exidx is sorted, so has to go in its own output section. */
+ __exidx_start = .;
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } >rom
+ __exidx_end = .;
+ .text.align :
+ {
+ . = ALIGN(8);
+ _etext = .;
+ } >rom
+ __cs3_region_size_rom = LENGTH(rom);
+ __cs3_region_num = 1;
+
+ .data :
+ {
+ __cs3_region_start_ram = .;
+ *(.cs3.region-head.ram)
+ KEEP(*(.jcr))
+ *(.got.plt) *(.got)
+ *(.shdata)
+ *(.data .data.* .gnu.linkonce.d.*)
+ *(.ram)
+ . = ALIGN (8);
+ _edata = .;
+ } >ram AT>rom
- .data :
- {
- __cs3_region_start_ram = .;
- *(.cs3.region-head.ram)
- KEEP(*(.jcr))
- *(.got.plt) *(.got)
- *(.shdata)
- *(.data .data.* .gnu.linkonce.d.*)
- *(.ram)
- . = ALIGN (8);
- _edata = .;
- } >ram AT>rom
.bss :
{
*(.shbss)
@@ -161,6 +169,7 @@ SECTIONS
_end = .;
__end = .;
} >ram AT>rom
+
.heap :
{
*(.heap)
diff --git a/bsp/mini2440/mini2440_ram.ld b/bsp/mini2440/mini2440_ram.ld
index 37c06324e0..f5b8bc58a3 100644
--- a/bsp/mini2440/mini2440_ram.ld
+++ b/bsp/mini2440/mini2440_ram.ld
@@ -3,83 +3,89 @@ OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
- . = 0x30000000;
+ . = 0x30000000;
- . = ALIGN(4);
- .text :
- {
- *(.init)
- *(.text)
- *(.gnu.linkonce.t*)
-
- /* section information for finsh shell */
- . = ALIGN(4);
- __fsymtab_start = .;
- KEEP(*(FSymTab))
- __fsymtab_end = .;
- . = ALIGN(4);
- __vsymtab_start = .;
- KEEP(*(VSymTab))
- __vsymtab_end = .;
- . = ALIGN(4);
+ . = ALIGN(4);
+ .text :
+ {
+ *(.init)
+ *(.text)
+ *(.gnu.linkonce.t*)
+
+ /* section information for finsh shell */
+ . = ALIGN(4);
+ __fsymtab_start = .;
+ KEEP(*(FSymTab))
+ __fsymtab_end = .;
+ . = ALIGN(4);
+ __vsymtab_start = .;
+ KEEP(*(VSymTab))
+ __vsymtab_end = .;
+ . = ALIGN(4);
- /* section information for modules */
- . = ALIGN(4);
- __rtmsymtab_start = .;
- KEEP(*(RTMSymTab))
- __rtmsymtab_end = .;
- }
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
- . = ALIGN(4);
- .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) *(.eh_frame) }
+ /* section information for modules */
+ . = ALIGN(4);
+ __rtmsymtab_start = .;
+ KEEP(*(RTMSymTab))
+ __rtmsymtab_end = .;
+ }
- . = ALIGN(4);
- .ctors :
- {
- PROVIDE(__ctors_start__ = .);
- KEEP(*(SORT(.ctors.*)))
- KEEP(*(.ctors))
- PROVIDE(__ctors_end__ = .);
- }
+ . = ALIGN(4);
+ .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) *(.eh_frame) }
- .dtors :
- {
- PROVIDE(__dtors_start__ = .);
- KEEP(*(SORT(.dtors.*)))
- KEEP(*(.dtors))
- PROVIDE(__dtors_end__ = .);
- }
+ . = ALIGN(4);
+ .ctors :
+ {
+ PROVIDE(__ctors_start__ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(__ctors_end__ = .);
+ }
- . = ALIGN(4);
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- }
+ .dtors :
+ {
+ PROVIDE(__dtors_start__ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(__dtors_end__ = .);
+ }
- . = ALIGN(4);
- .nobss : { *(.nobss) }
+ . = ALIGN(4);
+ .data :
+ {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d*)
+ }
- . = 0x30200000;
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- __bss_end = .;
+ . = ALIGN(4);
+ .nobss : { *(.nobss) }
- /* stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_info 0 : { *(.debug_info) }
- .debug_line 0 : { *(.debug_line) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- .debug_aranges 0 : { *(.debug_aranges) }
+ . = 0x30200000;
+ . = ALIGN(4);
+ __bss_start = .;
+ .bss : { *(.bss) }
+ __bss_end = .;
- _end = .;
+ /* stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_info 0 : { *(.debug_info) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ .debug_aranges 0 : { *(.debug_aranges) }
+
+ _end = .;
}
diff --git a/bsp/sam7x/sam7x_rom.ld b/bsp/sam7x/sam7x_rom.ld
index 41522bc2cd..2ceb8ee9e1 100644
--- a/bsp/sam7x/sam7x_rom.ld
+++ b/bsp/sam7x/sam7x_rom.ld
@@ -2,48 +2,54 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
MEMORY
{
- CODE (rx) : ORIGIN = 0x00100000, LENGTH = 0x00040000
- /* DATA (rw) : ORIGIN = 0x00200000, LENGTH = 0x00010000 */
- DATA (rw) : ORIGIN = 0x00204000, LENGTH = 0x0000C000
+ CODE (rx) : ORIGIN = 0x00100000, LENGTH = 0x00040000
+ /* DATA (rw) : ORIGIN = 0x00200000, LENGTH = 0x00010000 */
+ DATA (rw) : ORIGIN = 0x00204000, LENGTH = 0x0000C000
}
ENTRY(_start)
SECTIONS
{
- .text :
- {
- *(.init)
- *(.text)
- *(.rodata)
+ .text :
+ {
+ *(.init)
+ *(.text)
+ *(.rodata)
- /* section information for finsh shell */
- . = ALIGN(4);
- __fsymtab_start = .;
- KEEP(*(FSymTab))
- __fsymtab_end = .;
- . = ALIGN(4);
- __vsymtab_start = .;
- KEEP(*(VSymTab))
- __vsymtab_end = .;
- . = ALIGN(4);
+ /* section information for finsh shell */
+ . = ALIGN(4);
+ __fsymtab_start = .;
+ KEEP(*(FSymTab))
+ __fsymtab_end = .;
+ . = ALIGN(4);
+ __vsymtab_start = .;
+ KEEP(*(VSymTab))
+ __vsymtab_end = .;
+ . = ALIGN(4);
- } > CODE = 0
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
- . = ALIGN(4);
- .ctors :
- {
- PROVIDE(__ctors_start__ = .);
- KEEP(*(SORT(.ctors.*)))
- KEEP(*(.ctors))
- PROVIDE(__ctors_end__ = .);
- } > CODE
+ } > CODE = 0
- .dtors :
- {
- PROVIDE(__dtors_start__ = .);
- KEEP(*(SORT(.dtors.*)))
- KEEP(*(.dtors))
- PROVIDE(__dtors_end__ = .);
- } > CODE
+ . = ALIGN(4);
+ .ctors :
+ {
+ PROVIDE(__ctors_start__ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(__ctors_end__ = .);
+ } > CODE
+
+ .dtors :
+ {
+ PROVIDE(__dtors_start__ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(__dtors_end__ = .);
+ } > CODE
/* .ARM.exidx is sorted, so has to go in its own output section. */
__exidx_start = .;
@@ -71,12 +77,12 @@ SECTIONS
/* This is used by the startup in order to initialize the .data secion */
_edata = . ;
} >DATA
- __data_end = .;
+ __data_end = .;
- .noinit :
- {
- *(.bss.noinit)
- } > DATA
+ .noinit :
+ {
+ *(.bss.noinit)
+ } > DATA
__bss_start = .;
.bss :
diff --git a/bsp/stm32f0x/stm32_rom.ld b/bsp/stm32f0x/stm32_rom.ld
index 4eaced033a..6070bf4af6 100644
--- a/bsp/stm32f0x/stm32_rom.ld
+++ b/bsp/stm32f0x/stm32_rom.ld
@@ -38,6 +38,13 @@ SECTIONS
__vsymtab_end = .;
. = ALIGN(4);
+ /* section information for initial. */
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
. = ALIGN(4);
_etext = .;
} > CODE = 0
@@ -70,12 +77,12 @@ SECTIONS
_edata = . ;
} >DATA
- .stack :
- {
- . = . + _system_stack_size;
- . = ALIGN(4);
- _estack = .;
- } >DATA
+ .stack :
+ {
+ . = . + _system_stack_size;
+ . = ALIGN(4);
+ _estack = .;
+ } >DATA
__bss_start = .;
.bss :
diff --git a/bsp/stm32f107/stm32_rom.ld b/bsp/stm32f107/stm32_rom.ld
index c4547e26eb..9b554cbdcf 100644
--- a/bsp/stm32f107/stm32_rom.ld
+++ b/bsp/stm32f107/stm32_rom.ld
@@ -39,6 +39,13 @@ SECTIONS
__vsymtab_end = .;
. = ALIGN(4);
+ /* section information for initial. */
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
. = ALIGN(4);
_etext = .;
} > CODE = 0
@@ -71,12 +78,12 @@ SECTIONS
_edata = . ;
} >DATA
- .stack :
- {
- . = . + _system_stack_size;
- . = ALIGN(4);
- _estack = .;
- } >DATA
+ .stack :
+ {
+ . = . + _system_stack_size;
+ . = ALIGN(4);
+ _estack = .;
+ } >DATA
__bss_start = .;
.bss :
diff --git a/bsp/stm32f10x/stm32_rom.ld b/bsp/stm32f10x/stm32_rom.ld
index 0d738fa0d6..20c27f6f1a 100644
--- a/bsp/stm32f10x/stm32_rom.ld
+++ b/bsp/stm32f10x/stm32_rom.ld
@@ -39,6 +39,13 @@ SECTIONS
__vsymtab_end = .;
. = ALIGN(4);
+ /* section information for initial. */
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
. = ALIGN(4);
_etext = .;
} > CODE = 0
@@ -71,12 +78,12 @@ SECTIONS
_edata = . ;
} >DATA
- .stack :
- {
- . = . + _system_stack_size;
- . = ALIGN(4);
- _estack = .;
- } >DATA
+ .stack :
+ {
+ . = . + _system_stack_size;
+ . = ALIGN(4);
+ _estack = .;
+ } >DATA
__bss_start = .;
.bss :
diff --git a/bsp/stm32f20x/stm32_rom.ld b/bsp/stm32f20x/stm32_rom.ld
index 9febc55f76..2c4914fb94 100644
--- a/bsp/stm32f20x/stm32_rom.ld
+++ b/bsp/stm32f20x/stm32_rom.ld
@@ -7,7 +7,7 @@
MEMORY
{
CODE (rx) : ORIGIN = 0x08000000, LENGTH = 512k /* 512KB flash */
- DATA (rw) : ORIGIN = 0x20000000, LENGTH = 128k /* 64K sram */
+ DATA (rw) : ORIGIN = 0x20000000, LENGTH = 128k /* 64K sram */
}
ENTRY(Reset_Handler)
_system_stack_size = 0x100;
@@ -39,6 +39,13 @@ SECTIONS
__vsymtab_end = .;
. = ALIGN(4);
+ /* section information for initial. */
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
. = ALIGN(4);
_etext = .;
} > CODE = 0
@@ -71,12 +78,12 @@ SECTIONS
_edata = . ;
} >DATA
- .stack :
- {
- . = . + _system_stack_size;
- . = ALIGN(4);
- _estack = .;
- } >DATA
+ .stack :
+ {
+ . = . + _system_stack_size;
+ . = ALIGN(4);
+ _estack = .;
+ } >DATA
__bss_start = .;
.bss :
diff --git a/bsp/stm32f40x/stm32_rom.ld b/bsp/stm32f40x/stm32_rom.ld
index 0d738fa0d6..20c27f6f1a 100644
--- a/bsp/stm32f40x/stm32_rom.ld
+++ b/bsp/stm32f40x/stm32_rom.ld
@@ -39,6 +39,13 @@ SECTIONS
__vsymtab_end = .;
. = ALIGN(4);
+ /* section information for initial. */
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
. = ALIGN(4);
_etext = .;
} > CODE = 0
@@ -71,12 +78,12 @@ SECTIONS
_edata = . ;
} >DATA
- .stack :
- {
- . = . + _system_stack_size;
- . = ALIGN(4);
- _estack = .;
- } >DATA
+ .stack :
+ {
+ . = . + _system_stack_size;
+ . = ALIGN(4);
+ _estack = .;
+ } >DATA
__bss_start = .;
.bss :
diff --git a/bsp/xplorer4330/m4/lpc4330_xplorer_spifi32mb.ld b/bsp/xplorer4330/m4/lpc4330_xplorer_spifi32mb.ld
index 9437d73135..08dc8f958e 100644
--- a/bsp/xplorer4330/m4/lpc4330_xplorer_spifi32mb.ld
+++ b/bsp/xplorer4330/m4/lpc4330_xplorer_spifi32mb.ld
@@ -39,6 +39,12 @@ SECTIONS
. = ALIGN(4);
. = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ . = ALIGN(4);
+
+ . = ALIGN(4);
_etext = .;
} > CODE = 0