7 /* No program code/data before _stext/_prog_img_start! */
9 /* Read-only sections, merged into text segment. The start address of
10 * the text segment is : */
15 *(.text .text.* .gnu.linkonce.t.*)
16 KEEP (*(.text.*personality*))
19 *(.rodata .rodata.* .gnu.linkonce.r.*)
22 PROVIDE (etext = .); /* don't fail if user defines this symbol */
25 /* Linux: exception section for uaccess mechanism */
31 .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
33 .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
36 .eh_frame_hdr : { *(.eh_frame_hdr) }
38 /* exception frames for C++ */
41 PROVIDE(__eh_frame_start__ = .);
43 KEEP (*(.eh_frame_terminator))
46 .gcc_except_table : { *(.gcc_except_table .gcc_except_table.*) }
47 /* ensure that data starts at a new L4 page */
51 *(.data .data.* .gnu.linkonce.d.*)
52 KEEP (*(.gnu.linkonce.d.*personality*))
57 /*KEEP (*(.mark_beg_ctors))*/
58 /* gcc uses crtbegin.o to find the start of
59 the constructors, so we make sure it is
60 first. Because this is a wildcard, it
61 doesn't matter if the user does not
62 actually link against crtbegin.o; the
63 linker won't look for a file to match a
64 wildcard. The wildcard also means that it
65 doesn't matter which directory crtbegin.o
67 KEEP (*crtbegin.o(.ctors))
68 KEEP (*crtbegin?.o(.ctors))
69 /* We don't want to include the .ctor section from
70 the crtend.o file until after the sorted ctors.
71 The .ctor section from the crtend file contains the
72 end of ctors marker and it must be last */
73 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
74 KEEP (*(SORT(.ctors.*)))
77 KEEP (*(.mark_end_ctors))
79 KEEP (*(.mark_beg_c_ctors))
80 KEEP (*(SORT(.c_ctors.?)))
81 KEEP (*(SORT(.c_ctors.??)))
82 KEEP (*(SORT(.c_ctors.???)))
83 KEEP (*(SORT(.c_ctors.????)))
84 KEEP (*(SORT(.c_ctors.?????)))
86 KEEP (*(.mark_end_c_ctors))
92 KEEP (*(.mark_beg_dtors))*/
93 KEEP (*crtbegin.o(.dtors))
94 KEEP (*crtbegin?.o(.dtors))
95 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
96 KEEP (*(SORT(.dtors.*)))
99 KEEP (*(.mark_end_dtors))
101 KEEP (*(.mark_beg_c_dtors))
102 KEEP (*(SORT(.c_dtors.?)))
103 KEEP (*(SORT(.c_dtors.??)))
104 KEEP (*(SORT(.c_dtors.???)))
105 KEEP (*(SORT(.c_dtors.????)))
106 KEEP (*(SORT(.c_dtors.?????)))
108 KEEP (*(.mark_end_c_dtors))*/
112 PROVIDE_HIDDEN (__preinit_array_start = .);
113 KEEP (*(.preinit_array))
114 PROVIDE_HIDDEN (__preinit_array_end = .);
118 PROVIDE_HIDDEN (__init_array_start = .);
119 KEEP (*(SORT(.init_array.*)))
120 KEEP (*(.init_array))
121 PROVIDE_HIDDEN (__init_array_end = .);
125 PROVIDE_HIDDEN (__fini_array_start = .);
126 KEEP (*(.fini_array))
127 KEEP (*(SORT(.fini_array.*)))
128 PROVIDE_HIDDEN (__fini_array_end = .);
131 .dynamic : { *(.dynamic) }
133 __alt_instructions = .;
134 .altinstructions : { *(.altinstructions) }
135 __alt_instructions_end = .;
136 .altinstr_replacement : { *(.altinstr_replacement) }
138 .got : { *(.got.plt) *(.got) }
141 PROVIDE (edata = .); /* don't fail if user defines this symbol */
147 *(.bss .bss.* .gnu.linkonce.b.*)
150 PROVIDE (end = .); /* don't fail if user defines this symbol */
154 /* Moved here to ensure that these sections are located _after_ the text
155 * section. In the other case we would get program sections with a virtual
158 .dynsym : { *(.dynsym) }
159 .dynstr : { *(.dynstr) }
160 .rel.dyn : { *(.rel.dyn) }
161 .rel.bss : { *(.rel.bss) }
162 .rel.plt : { *(.rel.plt) }
164 /* drop the following sections since we don't need them for DROPS */