]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/conf/ldscript.sparc64
x86: Correctly identify bhyve hypervisor
[FreeBSD/FreeBSD.git] / sys / conf / ldscript.sparc64
1 /* $FreeBSD$ */
2 OUTPUT_FORMAT("elf64-sparc-freebsd", "elf64-sparc-freebsd",
3               "elf64-sparc-freebsd")
4 OUTPUT_ARCH(sparc:v9)
5 ENTRY(_start)
6 SEARCH_DIR(/usr/lib);
7 SECTIONS
8 {
9   /* Read-only sections, merged into text segment: */
10   . = kernbase + SIZEOF_HEADERS;
11   .interp     : { *(.interp)    }
12   .hash          : { *(.hash)           }
13   .dynsym        : { *(.dynsym)         }
14   .dynstr        : { *(.dynstr)         }
15   .gnu.version   : { *(.gnu.version)    }
16   .gnu.version_d   : { *(.gnu.version_d)        }
17   .gnu.version_r   : { *(.gnu.version_r)        }
18   .rel.init      : { *(.rel.init)       }
19   .rela.init     : { *(.rela.init)      }
20   .rel.text      :
21     {
22       *(.rel.text)
23       *(.rel.text.*)
24       *(.rel.gnu.linkonce.t.*)
25     }
26   .rela.text     :
27     {
28       *(.rela.text)
29       *(.rela.text.*)
30       *(.rela.gnu.linkonce.t.*)
31     }
32   .rel.fini      : { *(.rel.fini)       }
33   .rela.fini     : { *(.rela.fini)      }
34   .rel.rodata    :
35     {
36       *(.rel.rodata)
37       *(.rel.rodata.*)
38       *(.rel.gnu.linkonce.r.*)
39     }
40   .rela.rodata   :
41     {
42       *(.rela.rodata)
43       *(.rela.rodata.*)
44       *(.rela.gnu.linkonce.r.*)
45     }
46   .rel.data      :
47     {
48       *(.rel.data)
49       *(.rel.data.*)
50       *(.rel.gnu.linkonce.d.*)
51     }
52   .rela.data     :
53     {
54       *(.rela.data)
55       *(.rela.data.*)
56       *(.rela.gnu.linkonce.d.*)
57     }
58   .rel.ctors     : { *(.rel.ctors)      }
59   .rela.ctors    : { *(.rela.ctors)     }
60   .rel.dtors     : { *(.rel.dtors)      }
61   .rela.dtors    : { *(.rela.dtors)     }
62   .rel.got       : { *(.rel.got)                }
63   .rela.got      : { *(.rela.got)               }
64   .rel.sdata     :
65     {
66       *(.rel.sdata)
67       *(.rel.sdata.*)
68       *(.rel.gnu.linkonce.s.*)
69     }
70   .rela.sdata     :
71     {
72       *(.rela.sdata)
73       *(.rela.sdata.*)
74       *(.rela.gnu.linkonce.s.*)
75     }
76   .rel.sbss      :
77     { 
78       *(.rel.sbss)
79       *(.rel.sbss.*)
80       *(.rel.gnu.linkonce.sb.*)
81     }
82   .rela.sbss     :
83     {
84       *(.rela.sbss)
85       *(.rela.sbss.*)
86       *(.rel.gnu.linkonce.sb.*)
87     }
88   .rel.sdata2    : 
89     { 
90       *(.rel.sdata2)
91       *(.rel.sdata2.*)
92       *(.rel.gnu.linkonce.s2.*)
93     }
94   .rela.sdata2   : 
95     {
96       *(.rela.sdata2)
97       *(.rela.sdata2.*)
98       *(.rela.gnu.linkonce.s2.*)
99     }
100   .rel.sbss2     : 
101     { 
102       *(.rel.sbss2)     
103       *(.rel.sbss2.*)
104       *(.rel.gnu.linkonce.sb2.*)
105     }
106   .rela.sbss2    : 
107     { 
108       *(.rela.sbss2)    
109       *(.rela.sbss2.*)
110       *(.rela.gnu.linkonce.sb2.*)
111     }
112   .rel.bss       : 
113     { 
114       *(.rel.bss)
115       *(.rel.bss.*)
116       *(.rel.gnu.linkonce.b.*)
117     }
118   .rela.bss      : 
119     { 
120       *(.rela.bss)
121       *(.rela.bss.*)
122       *(.rela.gnu.linkonce.b.*)
123     }
124   .rel.plt       : { *(.rel.plt)                }
125   .rela.plt      : { *(.rela.plt)               }
126   .init          : 
127   { 
128     KEEP (*(.init))
129   } =0x1000000
130   .text      :
131   {
132     *(.trap)
133     *(.text)
134     *(.text.*)
135     *(.stub)
136     /* .gnu.warning sections are handled specially by elf32.em.  */
137     *(.gnu.warning)
138     *(.gnu.linkonce.t.*)
139   } =0x1000000
140   .fini      :
141   {
142     KEEP (*(.fini))
143   } =0x1000000
144   PROVIDE (__etext = .);
145   PROVIDE (_etext = .);
146   PROVIDE (etext = .);
147   .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) }
148   .rodata1   : { *(.rodata1) }
149   .sdata2   : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) }
150   .sbss2   : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) }
151   . = ALIGN(0x2000) + (. & (0x2000 - 1));
152   .data    :
153   {
154     *(.data)
155     *(.data.*)
156     *(.gnu.linkonce.d.*)
157   }
158   .data1   : { *(.data1) }
159   .eh_frame : { KEEP (*(.eh_frame)) }
160   .gcc_except_table : { *(.gcc_except_table) }
161   .ctors   : 
162   {
163     /* gcc uses crtbegin.o to find the start of
164        the constructors, so we make sure it is
165        first.  Because this is a wildcard, it
166        doesn't matter if the user does not
167        actually link against crtbegin.o; the
168        linker won't look for a file to match a
169        wildcard.  The wildcard also means that it
170        doesn't matter which directory crtbegin.o
171        is in.  */
172     KEEP (*crtbegin.o(.ctors))
173     /* We don't want to include the .ctor section from
174        from the crtend.o file until after the sorted ctors.
175        The .ctor section from the crtend file contains the
176        end of ctors marker and it must be last */
177     KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
178     KEEP (*(SORT(.ctors.*)))
179     KEEP (*(.ctors))
180   }
181    .dtors         :
182   {
183     KEEP (*crtbegin.o(.dtors))
184     KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
185     KEEP (*(SORT(.dtors.*)))
186     KEEP (*(.dtors))
187   }
188   .plt      : { *(.plt) }
189   .got            : { *(.got.plt) *(.got) }
190   .dynamic       : { *(.dynamic) }
191   /* We want the small data sections together, so single-instruction offsets
192      can access them all, and initialized data all before uninitialized, so
193      we can shorten the on-disk segment size.  */
194   .sdata     : 
195   {
196     *(.sdata) 
197     *(.sdata.*)
198     *(.gnu.linkonce.s.*)
199   }
200   _edata = .;
201   PROVIDE (edata = .);
202   __bss_start = .;
203   .sbss      :
204   {
205     PROVIDE (__sbss_start = .);
206     PROVIDE (___sbss_start = .);
207     *(.dynsbss)
208     *(.sbss)
209     *(.sbss.*)
210     *(.gnu.linkonce.sb.*)
211     *(.scommon)
212     PROVIDE (__sbss_end = .);
213     PROVIDE (___sbss_end = .);
214   }
215   .bss       :
216   {
217    *(.dynbss)
218    *(.bss)
219    *(.bss.*)
220    *(.gnu.linkonce.b.*)
221    *(COMMON)
222    /* Align here to ensure that the .bss section occupies space up to
223       _end.  Align after .bss to ensure correct alignment even if the
224       .bss section disappears because there are no input sections.  */
225    . = ALIGN(64 / 8);
226   }
227   . = ALIGN(64 / 8);
228   _end = .;
229   PROVIDE (end = .);
230   /* Stabs debugging sections.  */
231   .stab 0 : { *(.stab) }
232   .stabstr 0 : { *(.stabstr) }
233   .stab.excl 0 : { *(.stab.excl) }
234   .stab.exclstr 0 : { *(.stab.exclstr) }
235   .stab.index 0 : { *(.stab.index) }
236   .stab.indexstr 0 : { *(.stab.indexstr) }
237   .comment 0 : { *(.comment) }
238   /* DWARF debug sections.
239      Symbols in the DWARF debugging sections are relative to the beginning
240      of the section so we begin them at 0.  */
241   /* DWARF 1 */
242   .debug          0 : { *(.debug) }
243   .line           0 : { *(.line) }
244   /* GNU DWARF 1 extensions */
245   .debug_srcinfo  0 : { *(.debug_srcinfo) }
246   .debug_sfnames  0 : { *(.debug_sfnames) }
247   /* DWARF 1.1 and DWARF 2 */
248   .debug_aranges  0 : { *(.debug_aranges) }
249   .debug_pubnames 0 : { *(.debug_pubnames) }
250   /* DWARF 2 */
251   .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
252   .debug_abbrev   0 : { *(.debug_abbrev) }
253   .debug_line     0 : { *(.debug_line) }
254   .debug_frame    0 : { *(.debug_frame) }
255   .debug_str      0 : { *(.debug_str) }
256   .debug_loc      0 : { *(.debug_loc) }
257   .debug_macinfo  0 : { *(.debug_macinfo) }
258   /* SGI/MIPS DWARF 2 extensions */
259   .debug_weaknames 0 : { *(.debug_weaknames) }
260   .debug_funcnames 0 : { *(.debug_funcnames) }
261   .debug_typenames 0 : { *(.debug_typenames) }
262   .debug_varnames  0 : { *(.debug_varnames) }
263   /* These must appear regardless of  .  */
264 }