source: trunk/libs/newlib/src/libgloss/iq2000/sim.ld @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

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