1OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
2OUTPUT_ARCH(arm)
3
4ENTRY(_boot)
5
6SECTIONS
7{
8    . = 0x80080000;
9
10    .text :
11    {
12
13        *(.boot)
14        . = ALIGN(64);
15
16        *(.vectors)
17        *(.text)
18        *(.text.*)
19
20        /* section information for utest */
21        . = ALIGN(4);
22        __rt_utest_tc_tab_start = .;
23        KEEP(*(UtestTcTab))
24        __rt_utest_tc_tab_end = .;
25
26
27        /* section information for finsh shell */
28        . = ALIGN(4);
29        __fsymtab_start = .;
30        KEEP(*(FSymTab))
31        __fsymtab_end = .;
32        . = ALIGN(4);
33        __vsymtab_start = .;
34        KEEP(*(VSymTab))
35        __vsymtab_end = .;
36        . = ALIGN(4);
37
38        /* section information for modules */
39        . = ALIGN(4);
40        __rtmsymtab_start = .;
41        KEEP(*(RTMSymTab))
42        __rtmsymtab_end = .;
43
44        /* section information for initialization */
45        . = ALIGN(4);
46        __rt_init_start = .;
47        KEEP(*(SORT(.rti_fn*)))
48        __rt_init_end = .;
49
50        /* section information for usb usbh_class_info */
51        . = ALIGN(4);
52        __usbh_class_info_start__ = .;
53        KEEP(*(.usbh_class_info))
54        . = ALIGN(4);
55        __usbh_class_info_end__ = .;
56    } =0
57    __text_end = .;
58
59    .ARM.exidx   :
60    {
61        __exidx_start = .;
62        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
63        __exidx_end = .;
64    }
65
66    __rodata_start = .;
67    .rodata   : { *(.rodata) *(.rodata.*) }
68    __rodata_end = .;
69
70    . = ALIGN(4);
71    .ctors :
72    {
73        PROVIDE(__ctors_start__ = .);
74        /* new GCC version uses .init_array */
75        KEEP(*(SORT(.init_array.*)))
76        KEEP(*(.init_array))
77        PROVIDE(__ctors_end__ = .);
78    }
79
80    .dtors :
81    {
82        PROVIDE(__dtors_start__ = .);
83        KEEP(*(SORT(.dtors.*)))
84        KEEP(*(.dtors))
85        PROVIDE(__dtors_end__ = .);
86    }
87
88    . = ALIGN(16 * 1024);
89    .l1_page_table :
90    {
91        __l1_page_table_start = .;
92        . += 16K;
93    }
94
95    . = ALIGN(8);
96    __data_start = .;
97    .data :
98    {
99        *(.data)
100        *(.data.*)
101    }
102    __data_end = .;
103
104    . = ALIGN(8);
105    __bss_start = .;
106    .bss       :
107    {
108    *(.bss)
109    *(.bss.*)
110    *(COMMON)
111    . = ALIGN(4);
112    }
113    . = ALIGN(4);
114    __bss_end = .;
115
116    .heap :
117    {
118        . = ALIGN(8);
119        __end__ = .;
120        PROVIDE(end = .);
121        __HeapBase = .;
122        . += 0x400;
123        __HeapLimit = .;
124        __heap_limit = .; /* Add for _sbrk */
125    }
126
127    /* Stabs debugging sections.  */
128    .stab 0 : { *(.stab) }
129    .stabstr 0 : { *(.stabstr) }
130    .stab.excl 0 : { *(.stab.excl) }
131    .stab.exclstr 0 : { *(.stab.exclstr) }
132    .stab.index 0 : { *(.stab.index) }
133    .stab.indexstr 0 : { *(.stab.indexstr) }
134    .comment 0 : { *(.comment) }
135
136    _end = .;
137}
138