Statistics
| Branch: | Revision:

root / s390.ld @ a74cdab4

History | View | Annotate | Download (6.9 kB)

1
OUTPUT_FORMAT("elf32-s390", "elf32-s390",
2
	      "elf32-s390")
3
OUTPUT_ARCH(s390:31-bit)
4
ENTRY(_start)
5
/* __DYNAMIC = 0;    */
6
SECTIONS
7
{
8
  /* Read-only sections, merged into text segment: */
9
  . = 0x60000000 + SIZEOF_HEADERS;
10
  .interp         : { *(.interp) }
11
  .hash           : { *(.hash) }
12
  .dynsym         : { *(.dynsym) }
13
  .dynstr         : { *(.dynstr) }
14
  .gnu.version    : { *(.gnu.version) }
15
  .gnu.version_d  : { *(.gnu.version_d) }
16
  .gnu.version_r  : { *(.gnu.version_r) }
17
  .rel.dyn        :
18
    {
19
      *(.rel.init)
20
      *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
21
      *(.rel.fini)
22
      *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
23
      *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
24
      *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
25
      *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
26
      *(.rel.ctors)
27
      *(.rel.dtors)
28
      *(.rel.got)
29
      *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
30
      *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
31
      *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
32
      *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
33
      *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
34
    }
35
  .rela.dyn       :
36
    {
37
      *(.rela.init)
38
      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
39
      *(.rela.fini)
40
      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
41
      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
42
      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
43
      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
44
      *(.rela.ctors)
45
      *(.rela.dtors)
46
      *(.rela.got)
47
      *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
48
      *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
49
      *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
50
      *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
51
      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
52
    }
53
  .rel.plt        : { *(.rel.plt) }
54
  .rela.plt       : { *(.rela.plt) }
55
  .init           :
56
  {
57
    KEEP (*(.init))
58
  } =0x07070707
59
  .plt            : { *(.plt) }
60
  .text           :
61
  {
62
    *(.text .stub .text.* .gnu.linkonce.t.*)
63
    /* .gnu.warning sections are handled specially by elf32.em.  */
64
    *(.gnu.warning)
65
  } =0x07070707
66
  .fini           :
67
  {
68
    KEEP (*(.fini))
69
  } =0x07070707
70
  PROVIDE (__etext = .);
71
  PROVIDE (_etext = .);
72
  PROVIDE (etext = .);
73
  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
74
  .rodata1        : { *(.rodata1) }
75
  .sdata2         : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
76
  .sbss2          : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
77
  .eh_frame_hdr : { *(.eh_frame_hdr) }
78
  /* Adjust the address for the data segment.  We want to adjust up to
79
     the same address within the page on the next page up.  */
80
  . = ALIGN(0x1000) + (. & (0x1000 - 1));
81
  /* Ensure the __preinit_array_start label is properly aligned.  We
82
     could instead move the label definition inside the section, but
83
     the linker would then create the section even if it turns out to
84
     be empty, which isn't pretty.  */
85
  . = ALIGN(32 / 8);
86
  PROVIDE (__preinit_array_start = .);
87
  .preinit_array     : { *(.preinit_array) }
88
  PROVIDE (__preinit_array_end = .);
89
  PROVIDE (__init_array_start = .);
90
  .init_array     : { *(.init_array) }
91
  PROVIDE (__init_array_end = .);
92
  PROVIDE (__fini_array_start = .);
93
  .fini_array     : { *(.fini_array) }
94
  PROVIDE (__fini_array_end = .);
95
  .data           :
96
  {
97
    *(.data .data.* .gnu.linkonce.d.*)
98
    SORT(CONSTRUCTORS)
99
  }
100
  .data1          : { *(.data1) }
101
  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
102
  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
103
  .eh_frame       : { KEEP (*(.eh_frame)) }
104
  .gcc_except_table   : { *(.gcc_except_table) }
105
  .dynamic        : { *(.dynamic) }
106
  .ctors          :
107
  {
108
    /* gcc uses crtbegin.o to find the start of
109
       the constructors, so we make sure it is
110
       first.  Because this is a wildcard, it
111
       doesn't matter if the user does not
112
       actually link against crtbegin.o; the
113
       linker won't look for a file to match a
114
       wildcard.  The wildcard also means that it
115
       doesn't matter which directory crtbegin.o
116
       is in.  */
117
    KEEP (*crtbegin.o(.ctors))
118
    /* We don't want to include the .ctor section from
119
       from the crtend.o file until after the sorted ctors.
120
       The .ctor section from the crtend file contains the
121
       end of ctors marker and it must be last */
122
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
123
    KEEP (*(SORT(.ctors.*)))
124
    KEEP (*(.ctors))
125
  }
126
  .dtors          :
127
  {
128
    KEEP (*crtbegin.o(.dtors))
129
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
130
    KEEP (*(SORT(.dtors.*)))
131
    KEEP (*(.dtors))
132
  }
133
  .jcr            : { KEEP (*(.jcr)) }
134
  .got            : { *(.got.plt) *(.got) }
135
  /* We want the small data sections together, so single-instruction offsets
136
     can access them all, and initialized data all before uninitialized, so
137
     we can shorten the on-disk segment size.  */
138
  .sdata          :
139
  {
140
    *(.sdata .sdata.* .gnu.linkonce.s.*)
141
  }
142
  _edata = .;
143
  PROVIDE (edata = .);
144
  __bss_start = .;
145
  .sbss           :
146
  {
147
    PROVIDE (__sbss_start = .);
148
    PROVIDE (___sbss_start = .);
149
    *(.dynsbss)
150
    *(.sbss .sbss.* .gnu.linkonce.sb.*)
151
    *(.scommon)
152
    PROVIDE (__sbss_end = .);
153
    PROVIDE (___sbss_end = .);
154
  }
155
  .bss            :
156
  {
157
   *(.dynbss)
158
   *(.bss .bss.* .gnu.linkonce.b.*)
159
   *(COMMON)
160
   /* Align here to ensure that the .bss section occupies space up to
161
      _end.  Align after .bss to ensure correct alignment even if the
162
      .bss section disappears because there are no input sections.  */
163
   . = ALIGN(32 / 8);
164
  }
165
  . = ALIGN(32 / 8);
166
  _end = .;
167
  PROVIDE (end = .);
168
  /* Stabs debugging sections.  */
169
  .stab          0 : { *(.stab) }
170
  .stabstr       0 : { *(.stabstr) }
171
  .stab.excl     0 : { *(.stab.excl) }
172
  .stab.exclstr  0 : { *(.stab.exclstr) }
173
  .stab.index    0 : { *(.stab.index) }
174
  .stab.indexstr 0 : { *(.stab.indexstr) }
175
  .comment       0 : { *(.comment) }
176
  /* DWARF debug sections.
177
     Symbols in the DWARF debugging sections are relative to the beginning
178
     of the section so we begin them at 0.  */
179
  /* DWARF 1 */
180
  .debug          0 : { *(.debug) }
181
  .line           0 : { *(.line) }
182
  /* GNU DWARF 1 extensions */
183
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
184
  .debug_sfnames  0 : { *(.debug_sfnames) }
185
  /* DWARF 1.1 and DWARF 2 */
186
  .debug_aranges  0 : { *(.debug_aranges) }
187
  .debug_pubnames 0 : { *(.debug_pubnames) }
188
  /* DWARF 2 */
189
  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
190
  .debug_abbrev   0 : { *(.debug_abbrev) }
191
  .debug_line     0 : { *(.debug_line) }
192
  .debug_frame    0 : { *(.debug_frame) }
193
  .debug_str      0 : { *(.debug_str) }
194
  .debug_loc      0 : { *(.debug_loc) }
195
  .debug_macinfo  0 : { *(.debug_macinfo) }
196
  /* SGI/MIPS DWARF 2 extensions */
197
  .debug_weaknames 0 : { *(.debug_weaknames) }
198
  .debug_funcnames 0 : { *(.debug_funcnames) }
199
  .debug_typenames 0 : { *(.debug_typenames) }
200
  .debug_varnames  0 : { *(.debug_varnames) }
201
}