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 = .;
43 * C++ exception handling.
47 *(.ARM.extab* .gnu.linkonce.armextab.*)
52 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
57 * Markers for the end of the 'text' section and the in-flash start of
65 * Board info structure, normally only generated by the bootloader but can
66 * be read by the application.
68 PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO));
73 . = ALIGN(ORIGIN(BD_INFO)+LENGTH(BD_INFO));
77 * Place the IRQ/bootstrap stack at the bottom of SRAM so that an overflow
78 * results in a hard fault.
90 * Non-const initialised data.
102 * Uninitialised data (BSS + commons).
110 PROVIDE ( _end = _ebss ) ;
114 * The heap consumes the remainder of the SRAM.
122 * This allows us to declare an object or objects up to the minimum acceptable
123 * heap size and receive a linker error if the space available for the heap is
128 /* extend the heap up to the top of SRAM */
129 . = ORIGIN(SRAM) + LENGTH(SRAM) - ABSOLUTE(_sheap);
134 * 'Fast' memory goes in the CCM SRAM
149 * This allows us to declare an object or objects up to the minimum acceptable
150 * heap size and receive a linker error if the space available for the heap is
155 /* extend the fastheap up to the top of CCSRAM */
156 . = ORIGIN(CCSRAM) + LENGTH(CCSRAM) - ABSOLUTE(_sfastheap);
160 /* Stabs debugging sections. */
161 .stab 0 : { *(.stab) }
162 .stabstr 0 : { *(.stabstr) }
163 .stab.excl 0 : { *(.stab.excl) }
164 .stab.exclstr 0 : { *(.stab.exclstr) }
165 .stab.index 0 : { *(.stab.index) }
166 .stab.indexstr 0 : { *(.stab.indexstr) }
167 .comment 0 : { *(.comment) }
168 /* DWARF debug sections.
169 Symbols in the DWARF debugging sections are relative to the beginning
170 of the section so we begin them at 0. */
172 .debug 0 : { *(.debug) }
173 .line 0 : { *(.line) }
174 /* GNU DWARF 1 extensions */
175 .debug_srcinfo 0 : { *(.debug_srcinfo) }
176 .debug_sfnames 0 : { *(.debug_sfnames) }
177 /* DWARF 1.1 and DWARF 2 */
178 .debug_aranges 0 : { *(.debug_aranges) }
179 .debug_pubnames 0 : { *(.debug_pubnames) }
181 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
182 .debug_abbrev 0 : { *(.debug_abbrev) }
183 .debug_line 0 : { *(.debug_line) }
184 .debug_frame 0 : { *(.debug_frame) }
185 .debug_str 0 : { *(.debug_str) }
186 .debug_loc 0 : { *(.debug_loc) }
187 .debug_macinfo 0 : { *(.debug_macinfo) }
188 /* SGI/MIPS DWARF 2 extensions */
189 .debug_weaknames 0 : { *(.debug_weaknames) }
190 .debug_funcnames 0 : { *(.debug_funcnames) }
191 .debug_typenames 0 : { *(.debug_typenames) }
192 .debug_varnames 0 : { *(.debug_varnames) }