11.1Smatt/* Default linker script, for normal executables */
21.1SmattOUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc",
31.1Smatt	      "elf64-powerpc")
41.1SmattOUTPUT_ARCH(powerpc:common64)
51.1SmattENTRY(_start)
61.1SmattSECTIONS
71.1Smatt{
81.1Smatt  /*  Read-only sections, merged into text segment.  Assumes the
91.1Smatt      kernel Makefile sets the start address via -Ttext.  */
101.1Smatt  .text      :
111.1Smatt  {
121.1Smatt    PROVIDE_HIDDEN (__eprol = .);
131.1Smatt    *(.text)
141.1Smatt    *(.text.unlikely .text.*_unlikely)
151.1Smatt    *(.text.exit .text.exit.*)
161.1Smatt    *(.text.startup .text.startup.*)
171.1Smatt    *(.text.hot .text.hot.*)
181.1Smatt    *(.text.* .gnu.linkonce.t.*)
191.1Smatt    __stub_start = .;
201.1Smatt    *(.stub)
211.1Smatt    __stub_end = .;
221.1Smatt    __stub_pmap_start = .;
231.1Smatt    *(.stub.pmap)
241.1Smatt    __stub_pmap_end = .;
251.1Smatt    /* .gnu.warning sections are handled specially by elf32.em.  */
261.1Smatt    *(.gnu.warning)
271.1Smatt    *(.glink)
281.1Smatt  } =0x60000000
291.1Smatt  _etext = .;
301.1Smatt  PROVIDE (__etext = .);
311.1Smatt  PROVIDE (_etext = .);
321.1Smatt  PROVIDE (etext = .);
331.1Smatt  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
341.1Smatt  .rodata1        : { *(.rodata1) }
351.1Smatt  .sdata2         :
361.1Smatt  {
371.1Smatt    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
381.1Smatt  }
391.1Smatt  .sbss2          : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
401.1Smatt  .jcr            : { KEEP (*(.jcr)) }
411.1Smatt  . = DATA_SEGMENT_RELRO_END (0, .);
421.1Smatt  .data           :
431.1Smatt  {
441.1Smatt    _fdata = .;
451.1Smatt    *(.data .data.* .gnu.linkonce.d.*)
461.1Smatt    SORT(CONSTRUCTORS)
471.1Smatt  }
481.1Smatt  .data1          : { *(.data1) }
491.1Smatt  .toc1		  : ALIGN(8) { *(.toc1) }
501.1Smatt  .opd		  : ALIGN(8) { KEEP (*(.opd)) }
511.1Smatt  .branch_lt	  : ALIGN(8) { *(.branch_lt) }
521.1Smatt  .got		: ALIGN(8) { *(.got .toc) }
531.1Smatt  /* We want the small data sections together, so single-instruction offsets
541.1Smatt     can access them all, and initialized data all before uninitialized, so
551.1Smatt     we can shorten the on-disk segment size.  */
561.1Smatt  . = ALIGN(64);	/* COHERENCY UNIT */
571.1Smatt  .data.cacheline_aligned	: { *(.data.cacheline_aligned) }
581.1Smatt  . = ALIGN(64);	/* COHERENCY UNIT */
591.1Smatt  .data.read_mostly		: { *(.data.read_mostly) }
601.1Smatt  . = ALIGN(64);	/* COHERENCY UNIT */
611.1Smatt  .sdata          :
621.1Smatt  {
631.1Smatt    *(.sdata .sdata.* .gnu.linkonce.s.*)
641.1Smatt  }
651.1Smatt  _edata = .; PROVIDE (edata = .);
661.1Smatt  __bss_start = .;
671.1Smatt  .tocbss	  : ALIGN(8) { *(.tocbss)}
681.1Smatt  .sbss           :
691.1Smatt  {
701.1Smatt    *(.dynsbss)
711.1Smatt    *(.sbss .sbss.* .gnu.linkonce.sb.*)
721.1Smatt    *(.scommon)
731.1Smatt  }
741.1Smatt  .plt            : { *(.plt) }
751.1Smatt  .iplt           : { *(.iplt) }
761.1Smatt  .bss            :
771.1Smatt  {
781.2Suebayasi    *(.dynbss)
791.2Suebayasi    *(.bss .bss.* .gnu.linkonce.b.*)
801.2Suebayasi    *(COMMON)
811.2Suebayasi    /* Align here to ensure that the .bss section occupies space up to
821.2Suebayasi       _end.  Align after .bss to ensure correct alignment even if the
831.2Suebayasi       .bss section disappears because there are no input sections.
841.2Suebayasi       FIXME: Why do we need it? When there is no .bss section, we don't
851.2Suebayasi       pad the .data section.  */
861.2Suebayasi    . = ALIGN(. != 0 ? 64 / 8 : 1);
871.1Smatt  }
881.1Smatt  . = ALIGN(64 / 8);
891.1Smatt  . = ALIGN(64 / 8);
901.1Smatt  _end = .; PROVIDE (end = .);
911.1Smatt  . = DATA_SEGMENT_END (.);
921.1Smatt}
93