Merged in f5soh/librepilot/update_credits (pull request #529)
[librepilot.git] / flight / pios / stm32f4xx / link_STM32F4xx_RQ_sections_compat.ld
blob2f4300f4b701a8f652b7676f2e570e6599fcda2b
2 /* Section Definitions */
3 SECTIONS
5     /*
6      * Vectors, code and constant data.
7      */
8     .text :
9     {
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.*)
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     /*
43      * C++ exception handling.
44      */
45     .ARM.extab :
46     {
47         *(.ARM.extab* .gnu.linkonce.armextab.*)
48     } > FLASH
49     .ARM.exidx :
50     {
51         __exidx_start = .;
52         *(.ARM.exidx* .gnu.linkonce.armexidx.*)
53         __exidx_end = .;
54     } > FLASH
56     /*
57      * Markers for the end of the 'text' section and the in-flash start of 
58      * non-constant data 
59      */
60     . = ALIGN(4);
61     _etext = .;
62     _sidata = .;
64     /*
65      * Board info structure, normally only generated by the bootloader but can
66      * be read by the application.
67      */
68     PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO));
69     .boardinfo :
70     {
71         . = ALIGN(4);
72         KEEP(*(.boardinfo))
73         . = ALIGN(ORIGIN(BD_INFO)+LENGTH(BD_INFO));
74     } > BD_INFO
76     /*
77         * Place the IRQ/bootstrap stack at the bottom of SRAM so that an overflow
78         * results in a hard fault.
79         */
80        .istack (NOLOAD) :
81        {
82            . = ALIGN(4);
83         _irq_stack_end = . ;
84         *(.irqstack)
85         _irq_stack_top = . ;
86     } > SRAM
87     
89     /*
90      * Non-const initialised data.
91      */
92     .data : AT (_sidata)
93     {
94         . = ALIGN(4);
95         _sdata = .;
96         *(.data .data.*)
97         . = ALIGN(4);
98         _edata = . ;
99     } > SRAM
101     /*
102      * Uninitialised data (BSS + commons).
103      */
104     .bss (NOLOAD) :
105     {
106         _sbss = . ;
107         *(.bss .bss.*)
108         *(COMMON)
109         _ebss = . ;
110         PROVIDE ( _end = _ebss ) ;    
111     } > SRAM
113     /*
114      * The heap consumes the remainder of the SRAM.
115      */
116     .heap (NOLOAD) :
117     {
118         . = ALIGN(4);
119         _sheap = . ;
120         
121         /*
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
124          * not sufficient.
125          */
126         *(.heap)
127         
128         /* extend the heap up to the top of SRAM */
129         . = ORIGIN(SRAM) + LENGTH(SRAM) - ABSOLUTE(_sheap);
130         _eheap = .;
131     } > SRAM
133     /*
134      * 'Fast' memory goes in the CCM SRAM
135      */
136     .fast (NOLOAD) :
137     {
138         _sfast = . ;
139         *(.fast)
140         _efast = . ;
141     } > CCSRAM
143     /* Stabs debugging sections.  */
144     .stab          0 : { *(.stab) }
145     .stabstr       0 : { *(.stabstr) }
146     .stab.excl     0 : { *(.stab.excl) }
147     .stab.exclstr  0 : { *(.stab.exclstr) }
148     .stab.index    0 : { *(.stab.index) }
149     .stab.indexstr 0 : { *(.stab.indexstr) }
150     .comment       0 : { *(.comment) }
151     /* DWARF debug sections.
152        Symbols in the DWARF debugging sections are relative to the beginning
153        of the section so we begin them at 0.  */
154     /* DWARF 1 */
155     .debug          0 : { *(.debug) }
156     .line           0 : { *(.line) }
157     /* GNU DWARF 1 extensions */
158     .debug_srcinfo  0 : { *(.debug_srcinfo) }
159     .debug_sfnames  0 : { *(.debug_sfnames) }
160     /* DWARF 1.1 and DWARF 2 */
161     .debug_aranges  0 : { *(.debug_aranges) }
162     .debug_pubnames 0 : { *(.debug_pubnames) }
163     /* DWARF 2 */
164     .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
165     .debug_abbrev   0 : { *(.debug_abbrev) }
166     .debug_line     0 : { *(.debug_line) }
167     .debug_frame    0 : { *(.debug_frame) }
168     .debug_str      0 : { *(.debug_str) }
169     .debug_loc      0 : { *(.debug_loc) }
170     .debug_macinfo  0 : { *(.debug_macinfo) }
171     /* SGI/MIPS DWARF 2 extensions */
172     .debug_weaknames 0 : { *(.debug_weaknames) }
173     .debug_funcnames 0 : { *(.debug_funcnames) }
174     .debug_typenames 0 : { *(.debug_typenames) }
175     .debug_varnames  0 : { *(.debug_varnames) }