update credits
[librepilot.git] / flight / pios / stm32f30x / link_sections.lds
blob50480fe37f2ff0202d16dc693d38fafc668d2d19
1 /* Section Definitions */
2 SECTIONS
4     /*
5      * Vectors, code and constant data.
6      */
7     .text :
8     {
9         PROVIDE (pios_isr_vector_table_base = .);
10         KEEP(*(.cpu_vectors))    /* CPU exception vectors */
11         KEEP(*(.io_vectors))    /* I/O interrupt vectors */
12         *(.text .text.* .gnu.linkonce.t.*)
13         *(.glue_7t) *(.glue_7)
14         *(.rodata .rodata* .gnu.linkonce.r.*)
15         KEEP(*(.keep))
16     } > FLASH
18     /* 
19      * Init section for UAVObjects. 
20      */
21     .initcalluavobj.init :
22     {
23         . = ALIGN(4);
24                 __uavobj_initcall_start = .;
25         KEEP(*(.initcalluavobj.init))
26                 . = ALIGN(4);
27                 __uavobj_initcall_end   = .;
28     } >FLASH
30     /* 
31      * Module init section section
32      */
33     .initcallmodule.init :
34     {
35         . = ALIGN(4);
36                 __module_initcall_start = .;
37         KEEP(*(.initcallmodule.init))
38                 . = ALIGN(4);
39                 __module_initcall_end   = .;
40     } >FLASH
42     /* settings init sections */
43     .initcallsettings.init :
44     {
45         . = ALIGN(4);
46         __settings_initcall_start = .;
47         KEEP(*(.initcallsettings.init))
48         . = ALIGN(4);
49         __settings_initcall_end   = .;
50     } >FLASH
52     /*
53      * C++ exception handling.
54      */
55     .ARM.extab :
56     {
57         *(.ARM.extab* .gnu.linkonce.armextab.*)
58     } > FLASH
59     .ARM.exidx :
60     {
61         __exidx_start = .;
62         *(.ARM.exidx* .gnu.linkonce.armexidx.*)
63         __exidx_end = .;
64     } > FLASH
66     /*
67      * Markers for the end of the 'text' section and the in-flash start of 
68      * non-constant data 
69      */
70     . = ALIGN(4);
71     _etext = .;
72     _sidata = .;
74     /*
75      * Board info structure, normally only generated by the bootloader but can
76      * be read by the application.
77      */
78     PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO));
79     .boardinfo :
80     {
81         . = ALIGN(4);
82         KEEP(*(.boardinfo))
83         . = ALIGN(ORIGIN(BD_INFO)+LENGTH(BD_INFO));
84     } > BD_INFO
86     /*
87         * Place the IRQ/bootstrap stack at the bottom of SRAM so that an overflow
88         * results in a hard fault.
89         */
90     .istack (NOLOAD) :
91     {
92         . = ALIGN(4);
93         _irq_stack_end = . ;
94         *(.irqstack)
95         _irq_stack_top = . ;
96     } > CCSRAM
97     
99     /*
100      * Non-const initialised data.
101      */
102     .data : AT (_sidata)
103     {
104         . = ALIGN(4);
105         _sdata = .;
106         *(.data .data.*)
107         . = ALIGN(4);
108         _edata = . ;
109     } > SRAM
111     /*
112      * Uninitialised data (BSS + commons).
113      */
114     .bss (NOLOAD) :
115     {
116         _sbss = . ;
117         *(SORT_BY_ALIGNMENT(.bss*))
118         *(COMMON)
119         _ebss = . ;
120         PROVIDE ( _end = _ebss ) ;    
121     } > SRAM
123     /*
124      * The heap consumes the remainder of the SRAM.
125      */
126     .heap (NOLOAD) :
127     {
128         . = ALIGN(4);
129         _sheap = . ;
130         
131         /*
132          * This allows us to declare an object or objects up to the minimum acceptable
133          * heap size and receive a linker error if the space available for the heap is
134          * not sufficient.
135          */
136         *(.heap)
137         
138         /* extend the heap up to the top of SRAM */
139         . = ORIGIN(SRAM) + LENGTH(SRAM) - ABSOLUTE(_sheap);
140         _eheap = .;
141     } > SRAM
143     /*
144      * 'Fast' memory goes in the CCM SRAM
145      */
146     .fast (NOLOAD) :
147     {
148         _sfast = . ;
149         *(.fast)
150         _efast = . ;
151     } > CCSRAM
153     /*
154      * The fastheap consumes the remainder of the CCSRAM.
155      */
156     .fastheap (NOLOAD) :
157     {
158         . = ALIGN(4);
159         _sfastheap = . ;
160         
161         /*
162          * This allows us to declare an object or objects up to the minimum acceptable
163          * heap size and receive a linker error if the space available for the heap is
164          * not sufficient.
165          */
166         *(.fastheap)
167         
168         /* extend the heap up to the top of SRAM */
169         . = ORIGIN(CCSRAM) + LENGTH(CCSRAM) - ABSOLUTE(_sfastheap);
170         _efastheap = .;
171     } > CCSRAM
173     /* Stabs debugging sections.  */
174     .stab          0 : { *(.stab) }
175     .stabstr       0 : { *(.stabstr) }
176     .stab.excl     0 : { *(.stab.excl) }
177     .stab.exclstr  0 : { *(.stab.exclstr) }
178     .stab.index    0 : { *(.stab.index) }
179     .stab.indexstr 0 : { *(.stab.indexstr) }
180     .comment       0 : { *(.comment) }
181     /* DWARF debug sections.
182        Symbols in the DWARF debugging sections are relative to the beginning
183        of the section so we begin them at 0.  */
184     /* DWARF 1 */
185     .debug          0 : { *(.debug) }
186     .line           0 : { *(.line) }
187     /* GNU DWARF 1 extensions */
188     .debug_srcinfo  0 : { *(.debug_srcinfo) }
189     .debug_sfnames  0 : { *(.debug_sfnames) }
190     /* DWARF 1.1 and DWARF 2 */
191     .debug_aranges  0 : { *(.debug_aranges) }
192     .debug_pubnames 0 : { *(.debug_pubnames) }
193     /* DWARF 2 */
194     .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
195     .debug_abbrev   0 : { *(.debug_abbrev) }
196     .debug_line     0 : { *(.debug_line) }
197     .debug_frame    0 : { *(.debug_frame) }
198     .debug_str      0 : { *(.debug_str) }
199     .debug_loc      0 : { *(.debug_loc) }
200     .debug_macinfo  0 : { *(.debug_macinfo) }
201     /* SGI/MIPS DWARF 2 extensions */
202     .debug_weaknames 0 : { *(.debug_weaknames) }
203     .debug_funcnames 0 : { *(.debug_funcnames) }
204     .debug_typenames 0 : { *(.debug_typenames) }
205     .debug_varnames  0 : { *(.debug_varnames) }