Cygwin: cygwin_GetCommandLineW/A: don't rely on __argv[0] content
[newlib-cygwin.git] / libgloss / iq2000 / sim.ld
blob50da49e052b1fa637771387d0354848875a9c8d0
1 /* Special linker script for running C executables on simulator */
2 OUTPUT_FORMAT("elf32-iq2000", "elf32-iq2000",
3               "elf32-iq2000")
4 OUTPUT_ARCH(iq2000)
5 ENTRY(_start)
6 /* Do we need any of these for elf?
7    __DYNAMIC = 0;    */
8 SECTIONS
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  .  */