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 .eh_frame_hdr : { *(.eh_frame_hdr) }
33 /* exception frames for C++ */
40 /* ensure that data starts at a new L4 page */
44 *(.data .data.* .gnu.linkonce.d.*)
45 KEEP (*(.gnu.linkonce.d.*personality*))
50 PROVIDE(_SDA_BASE_ = 32768);
51 *(.sdata .sdata.* .gnu.linkonce.s.*)
55 *(.sbss .sbss.* .gnu.linkonce.b.*)
61 /*KEEP (*(.mark_beg_ctors))*/
62 /* gcc uses crtbegin.o to find the start of
63 the constructors, so we make sure it is
64 first. Because this is a wildcard, it
65 doesn't matter if the user does not
66 actually link against crtbegin.o; the
67 linker won't look for a file to match a
68 wildcard. The wildcard also means that it
69 doesn't matter which directory crtbegin.o
71 KEEP (*crtbegin.o(.ctors))
72 KEEP (*crtbegin?.o(.ctors))
73 /* We don't want to include the .ctor section from
74 the crtend.o file until after the sorted ctors.
75 The .ctor section from the crtend file contains the
76 end of ctors marker and it must be last */
77 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
78 KEEP (*(SORT(.ctors.*)))
81 KEEP (*(.mark_end_ctors))
83 KEEP (*(.mark_beg_c_ctors))
84 KEEP (*(SORT(.c_ctors.?)))
85 KEEP (*(SORT(.c_ctors.??)))
86 KEEP (*(SORT(.c_ctors.???)))
87 KEEP (*(SORT(.c_ctors.????)))
88 KEEP (*(SORT(.c_ctors.?????)))
90 KEEP (*(.mark_end_c_ctors))
96 KEEP (*(.mark_beg_dtors))*/
97 KEEP (*crtbegin.o(.dtors))
98 KEEP (*crtbegin?.o(.dtors))
99 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
100 KEEP (*(SORT(.dtors.*)))
103 KEEP (*(.mark_end_dtors))
105 KEEP (*(.mark_beg_c_dtors))
106 KEEP (*(SORT(.c_dtors.?)))
107 KEEP (*(SORT(.c_dtors.??)))
108 KEEP (*(SORT(.c_dtors.???)))
109 KEEP (*(SORT(.c_dtors.????)))
110 KEEP (*(SORT(.c_dtors.?????)))
112 KEEP (*(.mark_end_c_dtors))*/
116 PROVIDE_HIDDEN (__preinit_array_start = .);
117 KEEP (*(.preinit_array))
118 PROVIDE_HIDDEN (__preinit_array_end = .);
122 PROVIDE_HIDDEN (__init_array_start = .);
123 KEEP (*(SORT(.init_array.*)))
124 KEEP (*(.init_array))
125 PROVIDE_HIDDEN (__init_array_end = .);
129 PROVIDE_HIDDEN (__fini_array_start = .);
130 KEEP (*(.fini_array))
131 KEEP (*(SORT(.fini_array.*)))
132 PROVIDE_HIDDEN (__fini_array_end = .);
135 .gcc_except_table : { KEEP(*(.gcc_except_table)) }
136 .dynamic : { *(.dynamic) }
138 __alt_instructions = .;
139 .altinstructions : { *(.altinstructions) }
140 __alt_instructions_end = .;
141 .altinstr_replacement : { *(.altinstr_replacement) }
143 .got : { *(.got.plt) *(.got) }
146 PROVIDE (edata = .); /* don't fail if user defines this symbol */
152 *(.bss .bss.* .gnu.linkonce.b.*)
155 PROVIDE (end = .); /* don't fail if user defines this symbol */
159 /* Moved here to ensure that these sections are located _after_ the text
160 * section. In the other case we would get program sections with a virtual
163 .dynsym : { *(.dynsym) }
164 .dynstr : { *(.dynstr) }
165 .rel.dyn : { *(.rel.dyn) }
166 .rel.bss : { *(.rel.bss) }
167 .rel.plt : { *(.rel.plt) }
169 /* drop the following sections since we don't need them for DROPS */