1131811Sgrehan/* $FreeBSD$ */ 2131811Sgrehan 3131811SgrehanOUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc") 4209920SnwhitehornOUTPUT_ARCH(powerpc:common) 5131811SgrehanENTRY(_start) 6131811SgrehanSEARCH_DIR(/usr/lib); 7131811SgrehanPROVIDE (__stack = 0); 8131811SgrehanSECTIONS 9131811Sgrehan{ 10131811Sgrehan /* Read-only sections, merged into text segment: */ 11131811Sgrehan . = 0x01c00000 + SIZEOF_HEADERS; 12131811Sgrehan .interp : { *(.interp) } 13131811Sgrehan .hash : { *(.hash) } 14131811Sgrehan .dynsym : { *(.dynsym) } 15131811Sgrehan .dynstr : { *(.dynstr) } 16131811Sgrehan .gnu.version : { *(.gnu.version) } 17131811Sgrehan .gnu.version_d : { *(.gnu.version_d) } 18131811Sgrehan .gnu.version_r : { *(.gnu.version_r) } 19131811Sgrehan .rela.text : 20131811Sgrehan { *(.rela.text) *(.rela.gnu.linkonce.t*) } 21131811Sgrehan .rela.data : 22131811Sgrehan { *(.rela.data) *(.rela.gnu.linkonce.d*) } 23131811Sgrehan .rela.rodata : 24131811Sgrehan { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } 25131811Sgrehan .rela.got : { *(.rela.got) } 26131811Sgrehan .rela.got1 : { *(.rela.got1) } 27131811Sgrehan .rela.got2 : { *(.rela.got2) } 28131811Sgrehan .rela.ctors : { *(.rela.ctors) } 29131811Sgrehan .rela.dtors : { *(.rela.dtors) } 30131811Sgrehan .rela.init : { *(.rela.init) } 31131811Sgrehan .rela.fini : { *(.rela.fini) } 32131811Sgrehan .rela.bss : { *(.rela.bss) } 33131811Sgrehan .rela.plt : { *(.rela.plt) } 34131811Sgrehan .rela.sdata : { *(.rela.sdata) } 35131811Sgrehan .rela.sbss : { *(.rela.sbss) } 36131811Sgrehan .rela.sdata2 : { *(.rela.sdata2) } 37131811Sgrehan .rela.sbss2 : { *(.rela.sbss2) } 38131811Sgrehan .text : 39131811Sgrehan { 40131811Sgrehan *(.text) 41131811Sgrehan /* .gnu.warning sections are handled specially by elf32.em. */ 42131811Sgrehan *(.gnu.warning) 43131811Sgrehan *(.gnu.linkonce.t*) 44131811Sgrehan } =0 45131811Sgrehan _etext = .; 46131811Sgrehan PROVIDE (etext = .); 47131811Sgrehan .init : { *(.init) } =0 48131811Sgrehan .fini : { *(.fini) } =0 49131811Sgrehan .rodata : { *(.rodata) *(.gnu.linkonce.r*) } 50131811Sgrehan .rodata1 : { *(.rodata1) } 51131811Sgrehan .sdata2 : { *(.sdata2) } 52131811Sgrehan .sbss2 : { *(.sbss2) } 53131811Sgrehan /* Adjust the address for the data segment to the next page up. */ 54131811Sgrehan . = ((. + 0x1000) & ~(0x1000 - 1)); 55131811Sgrehan .data : 56131811Sgrehan { 57131811Sgrehan *(.data) 58131811Sgrehan *(.gnu.linkonce.d*) 59131811Sgrehan CONSTRUCTORS 60131811Sgrehan } 61131811Sgrehan .data1 : { *(.data1) } 62131811Sgrehan .got1 : { *(.got1) } 63131811Sgrehan .dynamic : { *(.dynamic) } 64131811Sgrehan /* Put .ctors and .dtors next to the .got2 section, so that the pointers 65131811Sgrehan get relocated with -mrelocatable. Also put in the .fixup pointers. 66131811Sgrehan The current compiler no longer needs this, but keep it around for 2.7.2 */ 67131811Sgrehan PROVIDE (_GOT2_START_ = .); 68131811Sgrehan .got2 : { *(.got2) } 69131811Sgrehan PROVIDE (__CTOR_LIST__ = .); 70131811Sgrehan .ctors : { *(.ctors) } 71131811Sgrehan PROVIDE (__CTOR_END__ = .); 72131811Sgrehan PROVIDE (__DTOR_LIST__ = .); 73131811Sgrehan .dtors : { *(.dtors) } 74131811Sgrehan PROVIDE (__DTOR_END__ = .); 75131811Sgrehan PROVIDE (_FIXUP_START_ = .); 76131811Sgrehan .fixup : { *(.fixup) } 77131811Sgrehan PROVIDE (_FIXUP_END_ = .); 78131811Sgrehan PROVIDE (_GOT2_END_ = .); 79131811Sgrehan PROVIDE (_GOT_START_ = .); 80131811Sgrehan .got : { *(.got) } 81131811Sgrehan .got.plt : { *(.got.plt) } 82131811Sgrehan PROVIDE (_GOT_END_ = .); 83131811Sgrehan /* We want the small data sections together, so single-instruction offsets 84131811Sgrehan can access them all, and initialized data all before uninitialized, so 85131811Sgrehan we can shorten the on-disk segment size. */ 86131811Sgrehan .sdata : { *(.sdata) } 87131811Sgrehan _edata = .; 88131811Sgrehan PROVIDE (edata = .); 89131811Sgrehan .sbss : 90131811Sgrehan { 91131811Sgrehan PROVIDE (__sbss_start = .); 92131811Sgrehan *(.sbss) 93131811Sgrehan *(.scommon) 94131811Sgrehan *(.dynsbss) 95131811Sgrehan PROVIDE (__sbss_end = .); 96131811Sgrehan } 97131811Sgrehan .plt : { *(.plt) } 98131811Sgrehan .bss : 99131811Sgrehan { 100131811Sgrehan PROVIDE (__bss_start = .); 101131811Sgrehan *(.dynbss) 102131811Sgrehan *(.bss) 103131811Sgrehan *(COMMON) 104131811Sgrehan } 105131811Sgrehan _end = . ; 106131811Sgrehan PROVIDE (end = .); 107131811Sgrehan /* Stabs debugging sections. */ 108131811Sgrehan .stab 0 : { *(.stab) } 109131811Sgrehan .stabstr 0 : { *(.stabstr) } 110131811Sgrehan /* DWARF debug sections. 111131811Sgrehan Symbols in the DWARF debugging sections are relative to the beginning 112131811Sgrehan of the section so we begin them at 0. */ 113131811Sgrehan /* DWARF 1 */ 114131811Sgrehan .debug 0 : { *(.debug) } 115131811Sgrehan .line 0 : { *(.line) } 116131811Sgrehan /* GNU DWARF 1 extensions */ 117131811Sgrehan .debug_srcinfo 0 : { *(.debug_srcinfo) } 118131811Sgrehan .debug_sfnames 0 : { *(.debug_sfnames) } 119131811Sgrehan /* DWARF 1.1 and DWARF 2 */ 120131811Sgrehan .debug_aranges 0 : { *(.debug_aranges) } 121131811Sgrehan .debug_pubnames 0 : { *(.debug_pubnames) } 122131811Sgrehan /* DWARF 2 */ 123131811Sgrehan .debug_info 0 : { *(.debug_info) } 124131811Sgrehan .debug_abbrev 0 : { *(.debug_abbrev) } 125131811Sgrehan .debug_line 0 : { *(.debug_line) } 126131811Sgrehan .debug_frame 0 : { *(.debug_frame) } 127131811Sgrehan .debug_str 0 : { *(.debug_str) } 128131811Sgrehan .debug_loc 0 : { *(.debug_loc) } 129131811Sgrehan .debug_macinfo 0 : { *(.debug_macinfo) } 130131811Sgrehan /* SGI/MIPS DWARF 2 extensions */ 131131811Sgrehan .debug_weaknames 0 : { *(.debug_weaknames) } 132131811Sgrehan .debug_funcnames 0 : { *(.debug_funcnames) } 133131811Sgrehan .debug_typenames 0 : { *(.debug_typenames) } 134131811Sgrehan .debug_varnames 0 : { *(.debug_varnames) } 135131811Sgrehan /* These must appear regardless of . */ 136131811Sgrehan} 137131811Sgrehan 138