|
@@ -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)
|
|
|
-
|
|
|
- __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)
|
|
|
-
|
|
|
- *(.rodata .rodata.* .gnu.linkonce.r.*)
|
|
|
-
|
|
|
- *(.ARM.extab* .gnu.linkonce.armextab.*)
|
|
|
- *(.gcc_except_table)
|
|
|
- *(.eh_frame_hdr)
|
|
|
- *(.eh_frame)
|
|
|
-
|
|
|
- . = ALIGN(4);
|
|
|
- KEEP(*(.init))
|
|
|
-
|
|
|
- . = 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(0x4);
|
|
|
- KEEP (*crtbegin.o(.ctors))
|
|
|
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
|
|
|
- KEEP (*(SORT(.ctors.*)))
|
|
|
- KEEP (*crtend.o(.ctors))
|
|
|
-
|
|
|
- . = ALIGN(4);
|
|
|
- KEEP(*(.fini))
|
|
|
-
|
|
|
- . = 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))
|
|
|
-
|
|
|
- . = 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)
|
|
|
+ .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");
|
|
|
+
|
|
|
+ *(.text .text.* .gnu.linkonce.t.*)
|
|
|
+ *(.plt)
|
|
|
+ *(.gnu.warning)
|
|
|
+ *(.glue_7t) *(.glue_7) *(.vfp11_veneer)
|
|
|
+
|
|
|
+ *(.rodata .rodata.* .gnu.linkonce.r.*)
|
|
|
+
|
|
|
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
|
|
|
+ *(.gcc_except_table)
|
|
|
+ *(.eh_frame_hdr)
|
|
|
+ *(.eh_frame)
|
|
|
+
|
|
|
+ . = ALIGN(4);
|
|
|
+ KEEP(*(.init))
|
|
|
+
|
|
|
+ . = 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(0x4);
|
|
|
+ KEEP (*crtbegin.o(.ctors))
|
|
|
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
|
|
|
+ KEEP (*(SORT(.ctors.*)))
|
|
|
+ KEEP (*crtend.o(.ctors))
|
|
|
+
|
|
|
+ . = ALIGN(4);
|
|
|
+ KEEP(*(.fini))
|
|
|
+
|
|
|
+ . = 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))
|
|
|
+
|
|
|
+ . = 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)
|