Statistics
| Branch: | Revision:

root / ppc64.ld @ 85e8dab1

History | View | Annotate | Download (7.8 kB)

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