2 /* Section Definitions */
6 * Vectors, code and constant data.
10 PROVIDE (pios_isr_vector_table_base = .);
11 KEEP(*(.cpu_vectors)) /* CPU exception vectors */
12 KEEP(*(.io_vectors)) /* I/O interrupt vectors */
13 *(.text .text.* .gnu.linkonce.t.*)
14 *(.glue_7t) *(.glue_7)
15 *(.rodata .rodata* .gnu.linkonce.r.*)
19 * Init section for UAVObjects.
21 .initcalluavobj.init :
24 __uavobj_initcall_start = .;
25 KEEP(*(.initcalluavobj.init))
27 __uavobj_initcall_end = .;
31 * Module init section section
33 .initcallmodule.init :
36 __module_initcall_start = .;
37 KEEP(*(.initcallmodule.init))
39 __module_initcall_end = .;
42 /* settings init sections */
43 .initcallsettings.init :
46 __settings_initcall_start = .;
47 KEEP(*(.initcallsettings.init))
49 __settings_initcall_end = .;
53 * C++ exception handling.
57 *(.ARM.extab* .gnu.linkonce.armextab.*)
62 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
67 * Markers for the end of the 'text' section and the in-flash start of
75 * Board info structure, normally only generated by the bootloader but can
76 * be read by the application.
78 PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO));
83 . = ALIGN(ORIGIN(BD_INFO)+LENGTH(BD_INFO));
87 * Place the IRQ/bootstrap stack at the bottom of SRAM so that an overflow
88 * results in a hard fault.
100 * Non-const initialised data.
112 * Uninitialised data (BSS + commons).
120 PROVIDE ( _end = _ebss ) ;
124 * The heap consumes the remainder of the SRAM.
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
138 /* extend the heap up to the top of SRAM */
139 . = ORIGIN(SRAM) + LENGTH(SRAM) - ABSOLUTE(_sheap);
144 * 'Fast' memory goes in the CCM SRAM
159 * This allows us to declare an object or objects up to the minimum acceptable
160 * heap size and receive a linker error if the space available for the heap is
165 /* extend the fastheap up to the top of CCSRAM */
166 . = ORIGIN(CCSRAM) + LENGTH(CCSRAM) - ABSOLUTE(_sfastheap);
170 /* Stabs debugging sections. */
171 .stab 0 : { *(.stab) }
172 .stabstr 0 : { *(.stabstr) }
173 .stab.excl 0 : { *(.stab.excl) }
174 .stab.exclstr 0 : { *(.stab.exclstr) }
175 .stab.index 0 : { *(.stab.index) }
176 .stab.indexstr 0 : { *(.stab.indexstr) }
177 .comment 0 : { *(.comment) }
178 /* DWARF debug sections.
179 Symbols in the DWARF debugging sections are relative to the beginning
180 of the section so we begin them at 0. */
182 .debug 0 : { *(.debug) }
183 .line 0 : { *(.line) }
184 /* GNU DWARF 1 extensions */
185 .debug_srcinfo 0 : { *(.debug_srcinfo) }
186 .debug_sfnames 0 : { *(.debug_sfnames) }
187 /* DWARF 1.1 and DWARF 2 */
188 .debug_aranges 0 : { *(.debug_aranges) }
189 .debug_pubnames 0 : { *(.debug_pubnames) }
191 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
192 .debug_abbrev 0 : { *(.debug_abbrev) }
193 .debug_line 0 : { *(.debug_line) }
194 .debug_frame 0 : { *(.debug_frame) }
195 .debug_str 0 : { *(.debug_str) }
196 .debug_loc 0 : { *(.debug_loc) }
197 .debug_macinfo 0 : { *(.debug_macinfo) }
198 /* SGI/MIPS DWARF 2 extensions */
199 .debug_weaknames 0 : { *(.debug_weaknames) }
200 .debug_funcnames 0 : { *(.debug_funcnames) }
201 .debug_typenames 0 : { *(.debug_typenames) }
202 .debug_varnames 0 : { *(.debug_varnames) }