CoreValidation: Aligned GNU linker scripts with templates.
Change-Id: I06f65b96dfffdb1970d5cb22e66e45721154c70a
diff --git a/CMSIS/CoreValidation/Tests/bootloader/config/core_m/rtebuild.ld b/CMSIS/CoreValidation/Tests/bootloader/config/core_m/rtebuild.ld
index 5f7fee7..88bfa8a 100644
--- a/CMSIS/CoreValidation/Tests/bootloader/config/core_m/rtebuild.ld
+++ b/CMSIS/CoreValidation/Tests/bootloader/config/core_m/rtebuild.ld
@@ -2,7 +2,7 @@
* @file gcc_arm.ld
* @brief GNU Linker Script for Cortex-M based device
* @version V2.0.0
- * @date 20. May 2019
+ * @date 21. May 2019
******************************************************************************/
/*
* Copyright (c) 2009-2019 Arm Limited. All rights reserved.
@@ -21,41 +21,41 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-/*
-;-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
-*/
-/*--------------------- Flash Configuration ----------------------------------
-; <h> Flash Configuration
-; <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
-; <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
- -----------------------------------------------------------------------------*/
+/*
+ *-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
+ */
+
+/*---------------------- Flash Configuration ----------------------------------
+ <h> Flash Configuration
+ <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
+ <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
+ -----------------------------------------------------------------------------*/
__ROM_BASE = 0x00000000;
__ROM_SIZE = 0x00200000;
-/*--------------------- Embedded RAM Configuration ---------------------------
-; <h> RAM Configuration
-; <o0> RAM Base Address <0x0-0xFFFFFFFF:8>
-; <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
+/*--------------------- Embedded RAM Configuration ----------------------------
+ <h> RAM Configuration
+ <o0> RAM Base Address <0x0-0xFFFFFFFF:8>
+ <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
-----------------------------------------------------------------------------*/
__RAM_BASE = 0x20000000;
__RAM_SIZE = 0x00200000;
-/*--------------------- Stack / Heap Configuration ---------------------------
-; <h> Stack / Heap Configuration
-; <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
- -----------------------------------------------------------------------------*/
+/*--------------------- Stack / Heap Configuration ----------------------------
+ <h> Stack / Heap Configuration
+ <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
+ -----------------------------------------------------------------------------*/
__STACK_SIZE = 0x00000400;
__HEAP_SIZE = 0x00000C00;
/*
-;-------------------- <<< end of configuration section >>> --------------------
-*/
+ *-------------------- <<< end of configuration section >>> -------------------
+ */
MEMORY
{
@@ -97,196 +97,199 @@
SECTIONS
{
- .text :
- {
- KEEP(*(.vectors))
- *(.text*)
+ .text :
+ {
+ KEEP(*(.vectors))
+ *(.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*))
- } > FLASH
+ KEEP(*(.eh_frame*))
+ } > FLASH
-/* SG veneers:
- All SG veneers are placed in the special output section .gnu.sgstubs. Its start address
- must be set, either with the command line option ‘--section-start’ or in a linker script,
- to indicate where to place these veneers in memory.
- */
+ /*
+ * SG veneers:
+ * All SG veneers are placed in the special output section .gnu.sgstubs. Its start address
+ * must be set, either with the command line option ‘--section-start’ or in a linker script,
+ * to indicate where to place these veneers in memory.
+ */
/*
- .gnu.sgstubs :
- {
- . = ALIGN(32);
- } > FLASH
+ .gnu.sgstubs :
+ {
+ . = ALIGN(32);
+ } > FLASH
*/
- .ARM.extab :
- {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > FLASH
+ .ARM.extab :
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } > FLASH
- __exidx_start = .;
- .ARM.exidx :
- {
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- } > FLASH
- __exidx_end = .;
+ __exidx_start = .;
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > FLASH
+ __exidx_end = .;
- .copy.table :
- {
- . = ALIGN(4);
- __copy_table_start__ = .;
- LONG (__etext)
- LONG (__data_start__)
- LONG (__data_end__ - __data_start__)
- /** Add each additional data section here */
- /*
- LONG (__etext2)
- LONG (__data2_start__)
- LONG (__data2_end__ - __data2_start__)
- */
- __copy_table_end__ = .;
- } > FLASH
+ .copy.table :
+ {
+ . = ALIGN(4);
+ __copy_table_start__ = .;
+ LONG (__etext)
+ LONG (__data_start__)
+ LONG (__data_end__ - __data_start__)
+ /* Add each additional data section here */
+/*
+ LONG (__etext2)
+ LONG (__data2_start__)
+ LONG (__data2_end__ - __data2_start__)
+*/
+ __copy_table_end__ = .;
+ } > FLASH
- .zero.table :
- {
- . = ALIGN(4);
- __zero_table_start__ = .;
- /** Add each additional bss section here */
- /*
+ .zero.table :
+ {
+ . = ALIGN(4);
+ __zero_table_start__ = .;
+ /* Add each additional bss section here */
+/*
LONG (__bss2_start__)
- LONG (__bss2_end__ - __bss2_start__)
- */
- __zero_table_end__ = .;
- } > FLASH
+ LONG (__bss2_end__ - __bss2_start__)
+*/
+ __zero_table_end__ = .;
+ } > FLASH
- /* Location counter can end up 2byte aligned with narrow Thumb code but
- __etext is assumed by startup code to be the LMA of a section in RAM
- which must be 4byte aligned */
- __etext = ALIGN (4);
+ /**
+ * Location counter can end up 2byte aligned with narrow Thumb code but
+ * __etext is assumed by startup code to be the LMA of a section in RAM
+ * which must be 4byte aligned
+ */
+ __etext = ALIGN (4);
- .data : AT (__etext)
- {
- __data_start__ = .;
- *(vtable)
- *(.data)
+ .data : AT (__etext)
+ {
+ __data_start__ = .;
+ *(vtable)
+ *(.data)
*(.data.*)
-
- . = ALIGN(4);
- /* preinit data */
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP(*(.preinit_array))
- PROVIDE_HIDDEN (__preinit_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);
+ /* preinit data */
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP(*(.preinit_array))
+ PROVIDE_HIDDEN (__preinit_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);
- /* finit data */
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP(*(SORT(.fini_array.*)))
- KEEP(*(.fini_array))
- PROVIDE_HIDDEN (__fini_array_end = .);
+ . = ALIGN(4);
+ /* finit data */
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP(*(SORT(.fini_array.*)))
+ KEEP(*(.fini_array))
+ PROVIDE_HIDDEN (__fini_array_end = .);
- KEEP(*(.jcr*))
- . = ALIGN(4);
- /* All data end */
- __data_end__ = .;
+ KEEP(*(.jcr*))
+ . = ALIGN(4);
+ /* All data end */
+ __data_end__ = .;
- } > RAM
+ } > RAM
- /**
- * Secondary data section, optional
- *
+ /*
+ * Secondary data section, optional
+ *
* Remember to add each additional data section
* to the .copy.table above to asure proper
* initialization during startup.
*/
- /*
+/*
__etext2 = ALIGN (4);
- .data2 : AT (__etext2)
- {
+ .data2 : AT (__etext2)
+ {
. = ALIGN(4);
- __data2_start__ = .;
+ __data2_start__ = .;
*(.data2)
*(.data2.*)
- . = ALIGN(4);
- __data2_end__ = .;
+ . = ALIGN(4);
+ __data2_end__ = .;
- } > RAM
- */
-
- .bss (NOLOAD) :
- {
- . = ALIGN(4);
- __bss_start__ = .;
+ } > RAM2
+*/
+
+ .bss :
+ {
+ . = ALIGN(4);
+ __bss_start__ = .;
*(.bss)
- *(.bss.*)
- *(COMMON)
- . = ALIGN(4);
- __bss_end__ = .;
- } > RAM
+ *(.bss.*)
+ *(COMMON)
+ . = ALIGN(4);
+ __bss_end__ = .;
+ } > RAM AT > RAM
- /**
- * Secondary bss section, optional
+ /*
+ * Secondary bss section, optional
*
* Remember to add each additional bss section
* to the .zero.table above to asure proper
* initialization during startup.
*/
- /*
- .bss2 (NOLOAD) :
- {
- . = ALIGN(4);
- __bss2_start__ = .;
+/*
+ .bss2 :
+ {
+ . = ALIGN(4);
+ __bss2_start__ = .;
*(.bss2)
- *(.bss2.*)
- . = ALIGN(4);
- __bss2_end__ = .;
- } > RAM2
- */
+ *(.bss2.*)
+ . = ALIGN(4);
+ __bss2_end__ = .;
+ } > RAM2 AT > RAM2
+*/
- .heap (COPY) :
- {
+ .heap (COPY) :
+ {
. = ALIGN(8);
- __end__ = .;
- PROVIDE(end = .);
- . = . + __HEAP_SIZE;
+ __end__ = .;
+ PROVIDE(end = .);
+ . = . + __HEAP_SIZE;
. = ALIGN(8);
- __HeapLimit = .;
- } > RAM
+ __HeapLimit = .;
+ } > RAM
- .stack (ORIGIN(RAM) + LENGTH(RAM) - __STACK_SIZE) (COPY) :
- {
+ .stack (ORIGIN(RAM) + LENGTH(RAM) - __STACK_SIZE) (COPY) :
+ {
. = ALIGN(8);
__StackLimit = .;
. = . + __STACK_SIZE;
. = ALIGN(8);
__StackTop = .;
- } > RAM
+ } > RAM
PROVIDE(__stack = __StackTop);
- /* Check if data + heap + stack exceeds RAM limit */
- ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+ /* Check if data + heap + stack exceeds RAM limit */
+ ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}
diff --git a/CMSIS/CoreValidation/Tests/config/core_m/rtebuild.ld b/CMSIS/CoreValidation/Tests/config/core_m/rtebuild.ld
index 624e305..88bfa8a 100644
--- a/CMSIS/CoreValidation/Tests/config/core_m/rtebuild.ld
+++ b/CMSIS/CoreValidation/Tests/config/core_m/rtebuild.ld
@@ -2,7 +2,7 @@
* @file gcc_arm.ld
* @brief GNU Linker Script for Cortex-M based device
* @version V2.0.0
- * @date 20. May 2019
+ * @date 21. May 2019
******************************************************************************/
/*
* Copyright (c) 2009-2019 Arm Limited. All rights reserved.
@@ -21,41 +21,41 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-/*
-;-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
-*/
-/*--------------------- Flash Configuration ----------------------------------
-; <h> Flash Configuration
-; <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
-; <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
- -----------------------------------------------------------------------------*/
+/*
+ *-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
+ */
+
+/*---------------------- Flash Configuration ----------------------------------
+ <h> Flash Configuration
+ <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
+ <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
+ -----------------------------------------------------------------------------*/
__ROM_BASE = 0x00000000;
__ROM_SIZE = 0x00200000;
-/*--------------------- Embedded RAM Configuration ---------------------------
-; <h> RAM Configuration
-; <o0> RAM Base Address <0x0-0xFFFFFFFF:8>
-; <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
+/*--------------------- Embedded RAM Configuration ----------------------------
+ <h> RAM Configuration
+ <o0> RAM Base Address <0x0-0xFFFFFFFF:8>
+ <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
-----------------------------------------------------------------------------*/
__RAM_BASE = 0x20000000;
__RAM_SIZE = 0x00200000;
-/*--------------------- Stack / Heap Configuration ---------------------------
-; <h> Stack / Heap Configuration
-; <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
- -----------------------------------------------------------------------------*/
+/*--------------------- Stack / Heap Configuration ----------------------------
+ <h> Stack / Heap Configuration
+ <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
+ -----------------------------------------------------------------------------*/
__STACK_SIZE = 0x00000400;
__HEAP_SIZE = 0x00000C00;
/*
-;-------------------- <<< end of configuration section >>> --------------------
-*/
+ *-------------------- <<< end of configuration section >>> -------------------
+ */
MEMORY
{
@@ -97,196 +97,199 @@
SECTIONS
{
- .text :
- {
- KEEP(*(.vectors))
- *(.text*)
+ .text :
+ {
+ KEEP(*(.vectors))
+ *(.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*))
- } > FLASH
+ KEEP(*(.eh_frame*))
+ } > FLASH
-/* SG veneers:
- All SG veneers are placed in the special output section .gnu.sgstubs. Its start address
- must be set, either with the command line option ‘--section-start’ or in a linker script,
- to indicate where to place these veneers in memory.
- */
+ /*
+ * SG veneers:
+ * All SG veneers are placed in the special output section .gnu.sgstubs. Its start address
+ * must be set, either with the command line option ‘--section-start’ or in a linker script,
+ * to indicate where to place these veneers in memory.
+ */
/*
- .gnu.sgstubs :
- {
- . = ALIGN(32);
- } > FLASH
+ .gnu.sgstubs :
+ {
+ . = ALIGN(32);
+ } > FLASH
*/
- .ARM.extab :
- {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > FLASH
+ .ARM.extab :
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } > FLASH
- __exidx_start = .;
- .ARM.exidx :
- {
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- } > FLASH
- __exidx_end = .;
+ __exidx_start = .;
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > FLASH
+ __exidx_end = .;
- .copy.table :
- {
- . = ALIGN(4);
- __copy_table_start__ = .;
- LONG (__etext)
- LONG (__data_start__)
- LONG (__data_end__ - __data_start__)
- /** Add each additional data section here */
- /*
- LONG (__etext2)
- LONG (__data2_start__)
- LONG (__data2_end__ - __data2_start__)
- */
- __copy_table_end__ = .;
- } > FLASH
+ .copy.table :
+ {
+ . = ALIGN(4);
+ __copy_table_start__ = .;
+ LONG (__etext)
+ LONG (__data_start__)
+ LONG (__data_end__ - __data_start__)
+ /* Add each additional data section here */
+/*
+ LONG (__etext2)
+ LONG (__data2_start__)
+ LONG (__data2_end__ - __data2_start__)
+*/
+ __copy_table_end__ = .;
+ } > FLASH
- .zero.table :
- {
- . = ALIGN(4);
- __zero_table_start__ = .;
- /** Add each additional bss section here */
- /*
+ .zero.table :
+ {
+ . = ALIGN(4);
+ __zero_table_start__ = .;
+ /* Add each additional bss section here */
+/*
LONG (__bss2_start__)
- LONG (__bss2_end__ - __bss2_start__)
- */
- __zero_table_end__ = .;
- } > FLASH
+ LONG (__bss2_end__ - __bss2_start__)
+*/
+ __zero_table_end__ = .;
+ } > FLASH
- /* Location counter can end up 2byte aligned with narrow Thumb code but
- __etext is assumed by startup code to be the LMA of a section in RAM
- which must be 4byte aligned */
- __etext = ALIGN (4);
+ /**
+ * Location counter can end up 2byte aligned with narrow Thumb code but
+ * __etext is assumed by startup code to be the LMA of a section in RAM
+ * which must be 4byte aligned
+ */
+ __etext = ALIGN (4);
- .data : AT (__etext)
- {
- __data_start__ = .;
- *(vtable)
- *(.data)
+ .data : AT (__etext)
+ {
+ __data_start__ = .;
+ *(vtable)
+ *(.data)
*(.data.*)
-
- . = ALIGN(4);
- /* preinit data */
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP(*(.preinit_array))
- PROVIDE_HIDDEN (__preinit_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);
+ /* preinit data */
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP(*(.preinit_array))
+ PROVIDE_HIDDEN (__preinit_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);
- /* finit data */
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP(*(SORT(.fini_array.*)))
- KEEP(*(.fini_array))
- PROVIDE_HIDDEN (__fini_array_end = .);
+ . = ALIGN(4);
+ /* finit data */
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP(*(SORT(.fini_array.*)))
+ KEEP(*(.fini_array))
+ PROVIDE_HIDDEN (__fini_array_end = .);
- KEEP(*(.jcr*))
- . = ALIGN(4);
- /* All data end */
- __data_end__ = .;
+ KEEP(*(.jcr*))
+ . = ALIGN(4);
+ /* All data end */
+ __data_end__ = .;
- } > RAM
+ } > RAM
- /**
- * Secondary data section, optional
- *
+ /*
+ * Secondary data section, optional
+ *
* Remember to add each additional data section
* to the .copy.table above to asure proper
* initialization during startup.
*/
- /*
+/*
__etext2 = ALIGN (4);
- .data2 : AT (__etext2)
- {
+ .data2 : AT (__etext2)
+ {
. = ALIGN(4);
- __data2_start__ = .;
+ __data2_start__ = .;
*(.data2)
*(.data2.*)
- . = ALIGN(4);
- __data2_end__ = .;
+ . = ALIGN(4);
+ __data2_end__ = .;
- } > RAM
- */
-
- .bss (NOLOAD) :
- {
- . = ALIGN(4);
- __bss_start__ = .;
+ } > RAM2
+*/
+
+ .bss :
+ {
+ . = ALIGN(4);
+ __bss_start__ = .;
*(.bss)
- *(.bss.*)
- *(COMMON)
- . = ALIGN(4);
- __bss_end__ = .;
- } > RAM
+ *(.bss.*)
+ *(COMMON)
+ . = ALIGN(4);
+ __bss_end__ = .;
+ } > RAM AT > RAM
- /**
- * Secondary bss section, optional
+ /*
+ * Secondary bss section, optional
*
* Remember to add each additional bss section
* to the .zero.table above to asure proper
* initialization during startup.
*/
- /*
- .bss2 (NOLOAD) :
- {
- . = ALIGN(4);
- __bss2_start__ = .;
+/*
+ .bss2 :
+ {
+ . = ALIGN(4);
+ __bss2_start__ = .;
*(.bss2)
- *(.bss2.*)
- . = ALIGN(4);
- __bss2_end__ = .;
- } > RAM2
- */
+ *(.bss2.*)
+ . = ALIGN(4);
+ __bss2_end__ = .;
+ } > RAM2 AT > RAM2
+*/
- .heap (COPY) :
- {
+ .heap (COPY) :
+ {
. = ALIGN(8);
- __end__ = .;
- PROVIDE(end = .);
- . = . + __HEAP_SIZE;
+ __end__ = .;
+ PROVIDE(end = .);
+ . = . + __HEAP_SIZE;
. = ALIGN(8);
- __HeapLimit = .;
- } > RAM
+ __HeapLimit = .;
+ } > RAM
- .stack (ORIGIN(RAM) + LENGTH(RAM) - __STACK_SIZE) (COPY) :
- {
+ .stack (ORIGIN(RAM) + LENGTH(RAM) - __STACK_SIZE) (COPY) :
+ {
. = ALIGN(8);
__StackLimit = .;
. = . + __STACK_SIZE;
. = ALIGN(8);
__StackTop = .;
- } > RAM
+ } > RAM
PROVIDE(__stack = __StackTop);
- /* Check if data + heap + stack exceeds RAM limit */
- ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+ /* Check if data + heap + stack exceeds RAM limit */
+ ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}
diff --git a/CMSIS/CoreValidation/Tests/config/core_m/rtebuild_ns.ld b/CMSIS/CoreValidation/Tests/config/core_m/rtebuild_ns.ld
index d868cb0..780ef81 100644
--- a/CMSIS/CoreValidation/Tests/config/core_m/rtebuild_ns.ld
+++ b/CMSIS/CoreValidation/Tests/config/core_m/rtebuild_ns.ld
@@ -2,7 +2,7 @@
* @file gcc_arm.ld
* @brief GNU Linker Script for Cortex-M based device
* @version V2.0.0
- * @date 20. May 2019
+ * @date 21. May 2019
******************************************************************************/
/*
* Copyright (c) 2009-2019 Arm Limited. All rights reserved.
@@ -21,41 +21,41 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-/*
-;-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
-*/
-/*--------------------- Flash Configuration ----------------------------------
-; <h> Flash Configuration
-; <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
-; <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
- -----------------------------------------------------------------------------*/
+/*
+ *-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
+ */
+
+/*---------------------- Flash Configuration ----------------------------------
+ <h> Flash Configuration
+ <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
+ <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
+ -----------------------------------------------------------------------------*/
__ROM_BASE = 0x00200000;
__ROM_SIZE = 0x00200000;
-/*--------------------- Embedded RAM Configuration ---------------------------
-; <h> RAM Configuration
-; <o0> RAM Base Address <0x0-0xFFFFFFFF:8>
-; <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
+/*--------------------- Embedded RAM Configuration ----------------------------
+ <h> RAM Configuration
+ <o0> RAM Base Address <0x0-0xFFFFFFFF:8>
+ <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
-----------------------------------------------------------------------------*/
__RAM_BASE = 0x20200000;
__RAM_SIZE = 0x00200000;
-/*--------------------- Stack / Heap Configuration ---------------------------
-; <h> Stack / Heap Configuration
-; <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
- -----------------------------------------------------------------------------*/
+/*--------------------- Stack / Heap Configuration ----------------------------
+ <h> Stack / Heap Configuration
+ <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+ </h>
+ -----------------------------------------------------------------------------*/
__STACK_SIZE = 0x00000400;
__HEAP_SIZE = 0x00000C00;
/*
-;-------------------- <<< end of configuration section >>> --------------------
-*/
+ *-------------------- <<< end of configuration section >>> -------------------
+ */
MEMORY
{
@@ -97,196 +97,199 @@
SECTIONS
{
- .text :
- {
- KEEP(*(.vectors))
- *(.text*)
+ .text :
+ {
+ KEEP(*(.vectors))
+ *(.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*))
- } > FLASH
+ KEEP(*(.eh_frame*))
+ } > FLASH
-/* SG veneers:
- All SG veneers are placed in the special output section .gnu.sgstubs. Its start address
- must be set, either with the command line option ‘--section-start’ or in a linker script,
- to indicate where to place these veneers in memory.
- */
+ /*
+ * SG veneers:
+ * All SG veneers are placed in the special output section .gnu.sgstubs. Its start address
+ * must be set, either with the command line option ‘--section-start’ or in a linker script,
+ * to indicate where to place these veneers in memory.
+ */
/*
- .gnu.sgstubs :
- {
- . = ALIGN(32);
- } > FLASH
+ .gnu.sgstubs :
+ {
+ . = ALIGN(32);
+ } > FLASH
*/
- .ARM.extab :
- {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > FLASH
+ .ARM.extab :
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } > FLASH
- __exidx_start = .;
- .ARM.exidx :
- {
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- } > FLASH
- __exidx_end = .;
+ __exidx_start = .;
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > FLASH
+ __exidx_end = .;
- .copy.table :
- {
- . = ALIGN(4);
- __copy_table_start__ = .;
- LONG (__etext)
- LONG (__data_start__)
- LONG (__data_end__ - __data_start__)
- /** Add each additional data section here */
- /*
- LONG (__etext2)
- LONG (__data2_start__)
- LONG (__data2_end__ - __data2_start__)
- */
- __copy_table_end__ = .;
- } > FLASH
+ .copy.table :
+ {
+ . = ALIGN(4);
+ __copy_table_start__ = .;
+ LONG (__etext)
+ LONG (__data_start__)
+ LONG (__data_end__ - __data_start__)
+ /* Add each additional data section here */
+/*
+ LONG (__etext2)
+ LONG (__data2_start__)
+ LONG (__data2_end__ - __data2_start__)
+*/
+ __copy_table_end__ = .;
+ } > FLASH
- .zero.table :
- {
- . = ALIGN(4);
- __zero_table_start__ = .;
- /** Add each additional bss section here */
- /*
+ .zero.table :
+ {
+ . = ALIGN(4);
+ __zero_table_start__ = .;
+ /* Add each additional bss section here */
+/*
LONG (__bss2_start__)
- LONG (__bss2_end__ - __bss2_start__)
- */
- __zero_table_end__ = .;
- } > FLASH
+ LONG (__bss2_end__ - __bss2_start__)
+*/
+ __zero_table_end__ = .;
+ } > FLASH
- /* Location counter can end up 2byte aligned with narrow Thumb code but
- __etext is assumed by startup code to be the LMA of a section in RAM
- which must be 4byte aligned */
- __etext = ALIGN (4);
+ /**
+ * Location counter can end up 2byte aligned with narrow Thumb code but
+ * __etext is assumed by startup code to be the LMA of a section in RAM
+ * which must be 4byte aligned
+ */
+ __etext = ALIGN (4);
- .data : AT (__etext)
- {
- __data_start__ = .;
- *(vtable)
- *(.data)
+ .data : AT (__etext)
+ {
+ __data_start__ = .;
+ *(vtable)
+ *(.data)
*(.data.*)
-
- . = ALIGN(4);
- /* preinit data */
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP(*(.preinit_array))
- PROVIDE_HIDDEN (__preinit_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);
+ /* preinit data */
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP(*(.preinit_array))
+ PROVIDE_HIDDEN (__preinit_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);
- /* finit data */
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP(*(SORT(.fini_array.*)))
- KEEP(*(.fini_array))
- PROVIDE_HIDDEN (__fini_array_end = .);
+ . = ALIGN(4);
+ /* finit data */
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP(*(SORT(.fini_array.*)))
+ KEEP(*(.fini_array))
+ PROVIDE_HIDDEN (__fini_array_end = .);
- KEEP(*(.jcr*))
- . = ALIGN(4);
- /* All data end */
- __data_end__ = .;
+ KEEP(*(.jcr*))
+ . = ALIGN(4);
+ /* All data end */
+ __data_end__ = .;
- } > RAM
+ } > RAM
- /**
- * Secondary data section, optional
- *
+ /*
+ * Secondary data section, optional
+ *
* Remember to add each additional data section
* to the .copy.table above to asure proper
* initialization during startup.
*/
- /*
+/*
__etext2 = ALIGN (4);
- .data2 : AT (__etext2)
- {
+ .data2 : AT (__etext2)
+ {
. = ALIGN(4);
- __data2_start__ = .;
+ __data2_start__ = .;
*(.data2)
*(.data2.*)
- . = ALIGN(4);
- __data2_end__ = .;
+ . = ALIGN(4);
+ __data2_end__ = .;
- } > RAM
- */
-
- .bss (NOLOAD) :
- {
- . = ALIGN(4);
- __bss_start__ = .;
+ } > RAM2
+*/
+
+ .bss :
+ {
+ . = ALIGN(4);
+ __bss_start__ = .;
*(.bss)
- *(.bss.*)
- *(COMMON)
- . = ALIGN(4);
- __bss_end__ = .;
- } > RAM
+ *(.bss.*)
+ *(COMMON)
+ . = ALIGN(4);
+ __bss_end__ = .;
+ } > RAM AT > RAM
- /**
- * Secondary bss section, optional
+ /*
+ * Secondary bss section, optional
*
* Remember to add each additional bss section
* to the .zero.table above to asure proper
* initialization during startup.
*/
- /*
- .bss2 (NOLOAD) :
- {
- . = ALIGN(4);
- __bss2_start__ = .;
+/*
+ .bss2 :
+ {
+ . = ALIGN(4);
+ __bss2_start__ = .;
*(.bss2)
- *(.bss2.*)
- . = ALIGN(4);
- __bss2_end__ = .;
- } > RAM2
- */
+ *(.bss2.*)
+ . = ALIGN(4);
+ __bss2_end__ = .;
+ } > RAM2 AT > RAM2
+*/
- .heap (COPY) :
- {
+ .heap (COPY) :
+ {
. = ALIGN(8);
- __end__ = .;
- PROVIDE(end = .);
- . = . + __HEAP_SIZE;
+ __end__ = .;
+ PROVIDE(end = .);
+ . = . + __HEAP_SIZE;
. = ALIGN(8);
- __HeapLimit = .;
- } > RAM
+ __HeapLimit = .;
+ } > RAM
- .stack (ORIGIN(RAM) + LENGTH(RAM) - __STACK_SIZE) (COPY) :
- {
+ .stack (ORIGIN(RAM) + LENGTH(RAM) - __STACK_SIZE) (COPY) :
+ {
. = ALIGN(8);
__StackLimit = .;
. = . + __STACK_SIZE;
. = ALIGN(8);
__StackTop = .;
- } > RAM
+ } > RAM
PROVIDE(__stack = __StackTop);
- /* Check if data + heap + stack exceeds RAM limit */
- ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+ /* Check if data + heap + stack exceeds RAM limit */
+ ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}