1e83f7ba2SBen GrasOUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", 2e83f7ba2SBen Gras "elf32-powerpc") 3*0a6a1f1dSLionel SambucOUTPUT_ARCH(powerpc:common) 4e83f7ba2SBen GrasENTRY(_start) 5e83f7ba2SBen Gras/* Do we need any of these for elf? 6e83f7ba2SBen Gras __DYNAMIC = 0; */ 7e83f7ba2SBen GrasPROVIDE (__stack = 0); PROVIDE (___stack = 0); 8e83f7ba2SBen GrasSECTIONS 9e83f7ba2SBen Gras{ 10e83f7ba2SBen Gras /* Read-only sections, merged into text segment: */ 11e83f7ba2SBen Gras . = 0 + SIZEOF_HEADERS; 12e83f7ba2SBen Gras .hash : { *(.hash) } 13e83f7ba2SBen Gras .dynsym : { *(.dynsym) } 14e83f7ba2SBen Gras .dynstr : { *(.dynstr) } 15e83f7ba2SBen Gras .gnu.version : { *(.gnu.version) } 16e83f7ba2SBen Gras .gnu.version_d : { *(.gnu.version_d) } 17e83f7ba2SBen Gras .gnu.version_r : { *(.gnu.version_r) } 18e83f7ba2SBen Gras .rel.init : { *(.rel.init) } 19e83f7ba2SBen Gras .rela.init : { *(.rela.init) } 20e83f7ba2SBen Gras .rel.text : 21e83f7ba2SBen Gras { 22e83f7ba2SBen Gras *(.rel.text) 23e83f7ba2SBen Gras *(.rel.text.*) 24e83f7ba2SBen Gras *(.rel.gnu.linkonce.t.*) 25e83f7ba2SBen Gras } 26e83f7ba2SBen Gras .rela.text : 27e83f7ba2SBen Gras { 28e83f7ba2SBen Gras *(.rela.text) 29e83f7ba2SBen Gras *(.rela.text.*) 30e83f7ba2SBen Gras *(.rela.gnu.linkonce.t.*) 31e83f7ba2SBen Gras } 32e83f7ba2SBen Gras .rel.fini : { *(.rel.fini) } 33e83f7ba2SBen Gras .rela.fini : { *(.rela.fini) } 34e83f7ba2SBen Gras .rel.rodata : 35e83f7ba2SBen Gras { 36e83f7ba2SBen Gras *(.rel.rodata) 37e83f7ba2SBen Gras *(.rel.rodata.*) 38e83f7ba2SBen Gras *(.rel.gnu.linkonce.r.*) 39e83f7ba2SBen Gras } 40e83f7ba2SBen Gras .rela.rodata : 41e83f7ba2SBen Gras { 42e83f7ba2SBen Gras *(.rela.rodata) 43e83f7ba2SBen Gras *(.rela.rodata.*) 44e83f7ba2SBen Gras *(.rela.gnu.linkonce.r.*) 45e83f7ba2SBen Gras } 46e83f7ba2SBen Gras .rel.data : 47e83f7ba2SBen Gras { 48e83f7ba2SBen Gras *(.rel.data) 49e83f7ba2SBen Gras *(.rel.data.*) 50e83f7ba2SBen Gras *(.rel.gnu.linkonce.d.*) 51e83f7ba2SBen Gras } 52e83f7ba2SBen Gras .rela.data : 53e83f7ba2SBen Gras { 54e83f7ba2SBen Gras *(.rela.data) 55e83f7ba2SBen Gras *(.rela.data.*) 56e83f7ba2SBen Gras *(.rela.gnu.linkonce.d.*) 57e83f7ba2SBen Gras } 58e83f7ba2SBen Gras .rel.ctors : { *(.rel.ctors) } 59e83f7ba2SBen Gras .rela.ctors : { *(.rela.ctors) } 60e83f7ba2SBen Gras .rel.dtors : { *(.rel.dtors) } 61e83f7ba2SBen Gras .rela.dtors : { *(.rela.dtors) } 62e83f7ba2SBen Gras .rel.got : { *(.rel.got) } 63e83f7ba2SBen Gras .rela.got : { *(.rela.got) } 64e83f7ba2SBen Gras .rel.sdata : 65e83f7ba2SBen Gras { 66e83f7ba2SBen Gras *(.rel.sdata) 67e83f7ba2SBen Gras *(.rel.sdata.*) 68e83f7ba2SBen Gras *(.rel.gnu.linkonce.s.*) 69e83f7ba2SBen Gras } 70e83f7ba2SBen Gras .rela.sdata : 71e83f7ba2SBen Gras { 72e83f7ba2SBen Gras *(.rela.sdata) 73e83f7ba2SBen Gras *(.rela.sdata.*) 74e83f7ba2SBen Gras *(.rela.gnu.linkonce.s.*) 75e83f7ba2SBen Gras } 76e83f7ba2SBen Gras .rel.sbss : 77e83f7ba2SBen Gras { 78e83f7ba2SBen Gras *(.rel.sbss) 79e83f7ba2SBen Gras *(.rel.sbss.*) 80e83f7ba2SBen Gras *(.rel.gnu.linkonce.sb.*) 81e83f7ba2SBen Gras } 82e83f7ba2SBen Gras .rela.sbss : 83e83f7ba2SBen Gras { 84e83f7ba2SBen Gras *(.rela.sbss) 85e83f7ba2SBen Gras *(.rela.sbss.*) 86e83f7ba2SBen Gras *(.rel.gnu.linkonce.sb.*) 87e83f7ba2SBen Gras } 88e83f7ba2SBen Gras .rel.sdata2 : 89e83f7ba2SBen Gras { 90e83f7ba2SBen Gras *(.rel.sdata2) 91e83f7ba2SBen Gras *(.rel.sdata2.*) 92e83f7ba2SBen Gras *(.rel.gnu.linkonce.s2.*) 93e83f7ba2SBen Gras } 94e83f7ba2SBen Gras .rela.sdata2 : 95e83f7ba2SBen Gras { 96e83f7ba2SBen Gras *(.rela.sdata2) 97e83f7ba2SBen Gras *(.rela.sdata2.*) 98e83f7ba2SBen Gras *(.rela.gnu.linkonce.s2.*) 99e83f7ba2SBen Gras } 100e83f7ba2SBen Gras .rel.sbss2 : 101e83f7ba2SBen Gras { 102e83f7ba2SBen Gras *(.rel.sbss2) 103e83f7ba2SBen Gras *(.rel.sbss2.*) 104e83f7ba2SBen Gras *(.rel.gnu.linkonce.sb2.*) 105e83f7ba2SBen Gras } 106e83f7ba2SBen Gras .rela.sbss2 : 107e83f7ba2SBen Gras { 108e83f7ba2SBen Gras *(.rela.sbss2) 109e83f7ba2SBen Gras *(.rela.sbss2.*) 110e83f7ba2SBen Gras *(.rela.gnu.linkonce.sb2.*) 111e83f7ba2SBen Gras } 112e83f7ba2SBen Gras .rel.bss : 113e83f7ba2SBen Gras { 114e83f7ba2SBen Gras *(.rel.bss) 115e83f7ba2SBen Gras *(.rel.bss.*) 116e83f7ba2SBen Gras *(.rel.gnu.linkonce.b.*) 117e83f7ba2SBen Gras } 118e83f7ba2SBen Gras .rela.bss : 119e83f7ba2SBen Gras { 120e83f7ba2SBen Gras *(.rela.bss) 121e83f7ba2SBen Gras *(.rela.bss.*) 122e83f7ba2SBen Gras *(.rela.gnu.linkonce.b.*) 123e83f7ba2SBen Gras } 124e83f7ba2SBen Gras .rel.plt : { *(.rel.plt) } 125e83f7ba2SBen Gras .rela.plt : { *(.rela.plt) } 126e83f7ba2SBen Gras .init : 127e83f7ba2SBen Gras { 128e83f7ba2SBen Gras KEEP (*(.init)) 129e83f7ba2SBen Gras } =0 130e83f7ba2SBen Gras .text : 131e83f7ba2SBen Gras { 132e83f7ba2SBen Gras *(.text) 133e83f7ba2SBen Gras *(.text.*) 134e83f7ba2SBen Gras *(.stub) 135e83f7ba2SBen Gras /* .gnu.warning sections are handled specially by elf32.em. */ 136e83f7ba2SBen Gras *(.gnu.warning) 137e83f7ba2SBen Gras *(.gnu.linkonce.t.*) 138e83f7ba2SBen Gras } =0 139e83f7ba2SBen Gras .fini : 140e83f7ba2SBen Gras { 141e83f7ba2SBen Gras KEEP (*(.fini)) 142e83f7ba2SBen Gras } =0 143e83f7ba2SBen Gras PROVIDE (__etext = .); 144e83f7ba2SBen Gras PROVIDE (_etext = .); 145e83f7ba2SBen Gras PROVIDE (etext = .); 146e83f7ba2SBen Gras .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) } 147e83f7ba2SBen Gras .rodata1 : { *(.rodata1) } 148e83f7ba2SBen Gras /* Adjust the address for the data segment. We want to adjust up to 149e83f7ba2SBen Gras the same address within the page on the next page up. */ 150e83f7ba2SBen Gras . = ALIGN(8); 151e83f7ba2SBen Gras .data : 152e83f7ba2SBen Gras { 153e83f7ba2SBen Gras *(.data) 154e83f7ba2SBen Gras *(.data.*) 155e83f7ba2SBen Gras *(.gnu.linkonce.d.*) 156e83f7ba2SBen Gras SORT(CONSTRUCTORS) 157e83f7ba2SBen Gras } 158e83f7ba2SBen Gras .data1 : { *(.data1) } 159e83f7ba2SBen Gras .eh_frame : { KEEP (*(.eh_frame)) } 160e83f7ba2SBen Gras .gcc_except_table : { *(.gcc_except_table) } 161e83f7ba2SBen Gras .fixup : { *(.fixup) } 162e83f7ba2SBen Gras .got1 : { *(.got1) } 163e83f7ba2SBen Gras .got2 : { *(.got2) } 164e83f7ba2SBen Gras .ctors : 165e83f7ba2SBen Gras { 166e83f7ba2SBen Gras /* gcc uses crtbegin.o to find the start of 167e83f7ba2SBen Gras the constructors, so we make sure it is 168e83f7ba2SBen Gras first. Because this is a wildcard, it 169e83f7ba2SBen Gras doesn't matter if the user does not 170e83f7ba2SBen Gras actually link against crtbegin.o; the 171e83f7ba2SBen Gras linker won't look for a file to match a 172e83f7ba2SBen Gras wildcard. The wildcard also means that it 173e83f7ba2SBen Gras doesn't matter which directory crtbegin.o 174e83f7ba2SBen Gras is in. */ 175e83f7ba2SBen Gras KEEP (*crtbegin.o(.ctors)) 176e83f7ba2SBen Gras /* We don't want to include the .ctor section from 177e83f7ba2SBen Gras from the crtend.o file until after the sorted ctors. 178e83f7ba2SBen Gras The .ctor section from the crtend file contains the 179e83f7ba2SBen Gras end of ctors marker and it must be last */ 180e83f7ba2SBen Gras KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) 181e83f7ba2SBen Gras KEEP (*(SORT(.ctors.*))) 182e83f7ba2SBen Gras KEEP (*(.ctors)) 183e83f7ba2SBen Gras } 184e83f7ba2SBen Gras .dtors : 185e83f7ba2SBen Gras { 186e83f7ba2SBen Gras KEEP (*crtbegin.o(.dtors)) 187e83f7ba2SBen Gras KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) 188e83f7ba2SBen Gras KEEP (*(SORT(.dtors.*))) 189e83f7ba2SBen Gras KEEP (*(.dtors)) 190e83f7ba2SBen Gras } 191e83f7ba2SBen Gras .got : { *(.got.plt) *(.got) } 192e83f7ba2SBen Gras PROVIDE (_GOT_END_ = .); 193e83f7ba2SBen Gras .sdata2 : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) } 194e83f7ba2SBen Gras .sbss2 : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) } 195e83f7ba2SBen Gras .dynamic : { *(.dynamic) } 196e83f7ba2SBen Gras /* We want the small data sections together, so single-instruction offsets 197e83f7ba2SBen Gras can access them all, and initialized data all before uninitialized, so 198e83f7ba2SBen Gras we can shorten the on-disk segment size. */ 199e83f7ba2SBen Gras .sdata : 200e83f7ba2SBen Gras { 201e83f7ba2SBen Gras *(.sdata) 202e83f7ba2SBen Gras *(.sdata.*) 203e83f7ba2SBen Gras *(.gnu.linkonce.s.*) 204e83f7ba2SBen Gras } 205e83f7ba2SBen Gras _edata = .; 206e83f7ba2SBen Gras PROVIDE (edata = .); 207e83f7ba2SBen Gras __bss_start = .; 208e83f7ba2SBen Gras .sbss : 209e83f7ba2SBen Gras { 210e83f7ba2SBen Gras PROVIDE (__sbss_start = .); 211e83f7ba2SBen Gras PROVIDE (___sbss_start = .); 212e83f7ba2SBen Gras *(.dynsbss) 213e83f7ba2SBen Gras *(.sbss) 214e83f7ba2SBen Gras *(.sbss.*) 215e83f7ba2SBen Gras *(.gnu.linkonce.sb.*) 216e83f7ba2SBen Gras *(.scommon) 217e83f7ba2SBen Gras PROVIDE (__sbss_end = .); 218e83f7ba2SBen Gras PROVIDE (___sbss_end = .); 219e83f7ba2SBen Gras } 220e83f7ba2SBen Gras .plt : { *(.plt) } 221e83f7ba2SBen Gras .bss : 222e83f7ba2SBen Gras { 223e83f7ba2SBen Gras *(.dynbss) 224e83f7ba2SBen Gras *(.bss) 225e83f7ba2SBen Gras *(.bss.*) 226e83f7ba2SBen Gras *(.gnu.linkonce.b.*) 227e83f7ba2SBen Gras *(COMMON) 228e83f7ba2SBen Gras /* Align here to ensure that the .bss section occupies space up to 229e83f7ba2SBen Gras _end. Align after .bss to ensure correct alignment even if the 230e83f7ba2SBen Gras .bss section disappears because there are no input sections. */ 231e83f7ba2SBen Gras . = ALIGN(8); 232e83f7ba2SBen Gras } 233e83f7ba2SBen Gras . = ALIGN(8); 234e83f7ba2SBen Gras _end = .; 235e83f7ba2SBen Gras __end = .; 236e83f7ba2SBen Gras PROVIDE (end = .); 237e83f7ba2SBen Gras /* Stabs debugging sections. */ 238e83f7ba2SBen Gras .stab 0 : { *(.stab) } 239e83f7ba2SBen Gras .stabstr 0 : { *(.stabstr) } 240e83f7ba2SBen Gras .stab.excl 0 : { *(.stab.excl) } 241e83f7ba2SBen Gras .stab.exclstr 0 : { *(.stab.exclstr) } 242e83f7ba2SBen Gras .stab.index 0 : { *(.stab.index) } 243e83f7ba2SBen Gras .stab.indexstr 0 : { *(.stab.indexstr) } 244e83f7ba2SBen Gras .comment 0 : { *(.comment) } 245e83f7ba2SBen Gras /* DWARF debug sections. 246e83f7ba2SBen Gras Symbols in the DWARF debugging sections are relative to the beginning 247e83f7ba2SBen Gras of the section so we begin them at 0. */ 248e83f7ba2SBen Gras /* DWARF 1 */ 249e83f7ba2SBen Gras .debug 0 : { *(.debug) } 250e83f7ba2SBen Gras .line 0 : { *(.line) } 251e83f7ba2SBen Gras /* GNU DWARF 1 extensions */ 252e83f7ba2SBen Gras .debug_srcinfo 0 : { *(.debug_srcinfo) } 253e83f7ba2SBen Gras .debug_sfnames 0 : { *(.debug_sfnames) } 254e83f7ba2SBen Gras /* DWARF 1.1 and DWARF 2 */ 255e83f7ba2SBen Gras .debug_aranges 0 : { *(.debug_aranges) } 256e83f7ba2SBen Gras .debug_pubnames 0 : { *(.debug_pubnames) } 257e83f7ba2SBen Gras /* DWARF 2 */ 258e83f7ba2SBen Gras .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } 259e83f7ba2SBen Gras .debug_abbrev 0 : { *(.debug_abbrev) } 260e83f7ba2SBen Gras .debug_line 0 : { *(.debug_line) } 261e83f7ba2SBen Gras .debug_frame 0 : { *(.debug_frame) } 262e83f7ba2SBen Gras .debug_str 0 : { *(.debug_str) } 263e83f7ba2SBen Gras .debug_loc 0 : { *(.debug_loc) } 264e83f7ba2SBen Gras .debug_macinfo 0 : { *(.debug_macinfo) } 265e83f7ba2SBen Gras /* SGI/MIPS DWARF 2 extensions */ 266e83f7ba2SBen Gras .debug_weaknames 0 : { *(.debug_weaknames) } 267e83f7ba2SBen Gras .debug_funcnames 0 : { *(.debug_funcnames) } 268e83f7ba2SBen Gras .debug_typenames 0 : { *(.debug_typenames) } 269e83f7ba2SBen Gras .debug_varnames 0 : { *(.debug_varnames) } 270e83f7ba2SBen Gras /* These must appear regardless of . */ 271e83f7ba2SBen Gras} 272