1*ca987d46SWarner Losh/* $FreeBSD: user/nwhitehorn/kboot/powerpc/kboot/ldscript.powerpc 272888 2014-10-10 06:24:09Z bapt $ */ 2*ca987d46SWarner Losh 3*ca987d46SWarner LoshOUTPUT_FORMAT("elf32-powerpc-freebsd", "elf32-powerpc-freebsd", 4*ca987d46SWarner Losh "elf32-powerpc-freebsd") 5*ca987d46SWarner LoshOUTPUT_ARCH(powerpc:common) 6*ca987d46SWarner LoshENTRY(_start) 7*ca987d46SWarner LoshSEARCH_DIR(/usr/lib); 8*ca987d46SWarner LoshPROVIDE (__stack = 0); 9*ca987d46SWarner LoshSECTIONS 10*ca987d46SWarner Losh{ 11*ca987d46SWarner Losh /* Read-only sections, merged into text segment: */ 12*ca987d46SWarner Losh . = 0x100000; 13*ca987d46SWarner Losh .text : 14*ca987d46SWarner Losh { 15*ca987d46SWarner Losh *(.text) 16*ca987d46SWarner Losh /* .gnu.warning sections are handled specially by elf32.em. */ 17*ca987d46SWarner Losh *(.gnu.warning) 18*ca987d46SWarner Losh *(.gnu.linkonce.t*) 19*ca987d46SWarner Losh } =0 20*ca987d46SWarner Losh _etext = .; 21*ca987d46SWarner Losh .interp : { *(.interp) } 22*ca987d46SWarner Losh .hash : { *(.hash) } 23*ca987d46SWarner Losh .dynsym : { *(.dynsym) } 24*ca987d46SWarner Losh .dynstr : { *(.dynstr) } 25*ca987d46SWarner Losh .gnu.version : { *(.gnu.version) } 26*ca987d46SWarner Losh .gnu.version_d : { *(.gnu.version_d) } 27*ca987d46SWarner Losh .gnu.version_r : { *(.gnu.version_r) } 28*ca987d46SWarner Losh .rela.text : 29*ca987d46SWarner Losh { *(.rela.text) *(.rela.gnu.linkonce.t*) } 30*ca987d46SWarner Losh .rela.data : 31*ca987d46SWarner Losh { *(.rela.data) *(.rela.gnu.linkonce.d*) } 32*ca987d46SWarner Losh .rela.rodata : 33*ca987d46SWarner Losh { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } 34*ca987d46SWarner Losh .rela.got : { *(.rela.got) } 35*ca987d46SWarner Losh .rela.got1 : { *(.rela.got1) } 36*ca987d46SWarner Losh .rela.got2 : { *(.rela.got2) } 37*ca987d46SWarner Losh .rela.ctors : { *(.rela.ctors) } 38*ca987d46SWarner Losh .rela.dtors : { *(.rela.dtors) } 39*ca987d46SWarner Losh .rela.init : { *(.rela.init) } 40*ca987d46SWarner Losh .rela.fini : { *(.rela.fini) } 41*ca987d46SWarner Losh .rela.bss : { *(.rela.bss) } 42*ca987d46SWarner Losh .rela.plt : { *(.rela.plt) } 43*ca987d46SWarner Losh .rela.sbss : { *(.rela.sbss) } 44*ca987d46SWarner Losh .rela.sbss2 : { *(.rela.sbss2) } 45*ca987d46SWarner Losh .text : 46*ca987d46SWarner Losh { 47*ca987d46SWarner Losh *(.text) 48*ca987d46SWarner Losh /* .gnu.warning sections are handled specially by elf32.em. */ 49*ca987d46SWarner Losh *(.gnu.warning) 50*ca987d46SWarner Losh *(.gnu.linkonce.t*) 51*ca987d46SWarner Losh } =0 52*ca987d46SWarner Losh _etext = .; 53*ca987d46SWarner Losh PROVIDE (etext = .); 54*ca987d46SWarner Losh .init : { *(.init) } =0 55*ca987d46SWarner Losh .fini : { *(.fini) } =0 56*ca987d46SWarner Losh .rodata : { *(.rodata) *(.gnu.linkonce.r*) } 57*ca987d46SWarner Losh .rodata1 : { *(.rodata1) } 58*ca987d46SWarner Losh .sbss2 : { *(.sbss2) } 59*ca987d46SWarner Losh /* Adjust the address for the data segment to the next page up. */ 60*ca987d46SWarner Losh . = ((. + 0x1000) & ~(0x1000 - 1)); 61*ca987d46SWarner Losh .data : 62*ca987d46SWarner Losh { 63*ca987d46SWarner Losh *(.data) 64*ca987d46SWarner Losh *(.gnu.linkonce.d*) 65*ca987d46SWarner Losh CONSTRUCTORS 66*ca987d46SWarner Losh } 67*ca987d46SWarner Losh .data1 : { *(.data1) } 68*ca987d46SWarner Losh .got1 : { *(.got1) } 69*ca987d46SWarner Losh .dynamic : { *(.dynamic) } 70*ca987d46SWarner Losh /* Put .ctors and .dtors next to the .got2 section, so that the pointers 71*ca987d46SWarner Losh get relocated with -mrelocatable. Also put in the .fixup pointers. 72*ca987d46SWarner Losh The current compiler no longer needs this, but keep it around for 2.7.2 */ 73*ca987d46SWarner Losh PROVIDE (_GOT2_START_ = .); 74*ca987d46SWarner Losh .got2 : { *(.got2) } 75*ca987d46SWarner Losh PROVIDE (__CTOR_LIST__ = .); 76*ca987d46SWarner Losh .ctors : { *(.ctors) } 77*ca987d46SWarner Losh PROVIDE (__CTOR_END__ = .); 78*ca987d46SWarner Losh PROVIDE (__DTOR_LIST__ = .); 79*ca987d46SWarner Losh .dtors : { *(.dtors) } 80*ca987d46SWarner Losh PROVIDE (__DTOR_END__ = .); 81*ca987d46SWarner Losh PROVIDE (_FIXUP_START_ = .); 82*ca987d46SWarner Losh .fixup : { *(.fixup) } 83*ca987d46SWarner Losh PROVIDE (_FIXUP_END_ = .); 84*ca987d46SWarner Losh PROVIDE (_GOT2_END_ = .); 85*ca987d46SWarner Losh PROVIDE (_GOT_START_ = .); 86*ca987d46SWarner Losh .got : { *(.got) } 87*ca987d46SWarner Losh .got.plt : { *(.got.plt) } 88*ca987d46SWarner Losh PROVIDE (_GOT_END_ = .); 89*ca987d46SWarner Losh _edata = .; 90*ca987d46SWarner Losh PROVIDE (edata = .); 91*ca987d46SWarner Losh .sbss : 92*ca987d46SWarner Losh { 93*ca987d46SWarner Losh PROVIDE (__sbss_start = .); 94*ca987d46SWarner Losh *(.sbss) 95*ca987d46SWarner Losh *(.scommon) 96*ca987d46SWarner Losh *(.dynsbss) 97*ca987d46SWarner Losh PROVIDE (__sbss_end = .); 98*ca987d46SWarner Losh } 99*ca987d46SWarner Losh .plt : { *(.plt) } 100*ca987d46SWarner Losh .bss : 101*ca987d46SWarner Losh { 102*ca987d46SWarner Losh PROVIDE (__bss_start = .); 103*ca987d46SWarner Losh *(.dynbss) 104*ca987d46SWarner Losh *(.bss) 105*ca987d46SWarner Losh *(COMMON) 106*ca987d46SWarner Losh } 107*ca987d46SWarner Losh . = ALIGN(4096); 108*ca987d46SWarner Losh _end = . ; 109*ca987d46SWarner Losh PROVIDE (end = .); 110*ca987d46SWarner Losh} 111*ca987d46SWarner Losh 112