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