428
+ − 1 OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
+ − 2 "elf32-powerpc")
+ − 3 OUTPUT_ARCH(powerpc)
+ − 4 ENTRY(_start)
+ − 5 SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/powerpc-unknown-linux-gnulibc1/lib);
+ − 6 /* Do we need any of these for elf?
+ − 7 __DYNAMIC = 0; */
+ − 8 PROVIDE (__stack = 0);
+ − 9 SECTIONS
+ − 10 {
+ − 11 /* Read-only sections, merged into text segment: */
+ − 12 . = 0x01800000 + SIZEOF_HEADERS;
+ − 13 .interp : { *(.interp) }
+ − 14 .hash : { *(.hash) }
+ − 15 .dynsym : { *(.dynsym) }
+ − 16 .dynstr : { *(.dynstr) }
+ − 17 .gnu.version : { *(.gnu.version) }
+ − 18 .gnu.version_d : { *(.gnu.version_d) }
+ − 19 .gnu.version_r : { *(.gnu.version_r) }
+ − 20 .rela.text :
+ − 21 { *(.rela.text) *(.rela.gnu.linkonce.t*) }
+ − 22 .rela.data :
+ − 23 { *(.rela.data) *(.rela.gnu.linkonce.d*) }
+ − 24 .rela.rodata :
+ − 25 { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
+ − 26 .rela.got : { *(.rela.got) }
+ − 27 .rela.got1 : { *(.rela.got1) }
+ − 28 .rela.got2 : { *(.rela.got2) }
+ − 29 .rela.ctors : { *(.rela.ctors) }
+ − 30 .rela.dtors : { *(.rela.dtors) }
+ − 31 .rela.init : { *(.rela.init) }
+ − 32 .rela.fini : { *(.rela.fini) }
+ − 33 .rela.bss : { *(.rela.bss) }
+ − 34 .rela.plt : { *(.rela.plt) }
+ − 35 .rela.sdata : { *(.rela.sdata) }
+ − 36 .rela.sbss : { *(.rela.sbss) }
+ − 37 .rela.sdata2 : { *(.rela.sdata2) }
+ − 38 .rela.sbss2 : { *(.rela.sbss2) }
+ − 39 .text :
+ − 40 {
+ − 41 *(.text)
+ − 42 /* .gnu.warning sections are handled specially by elf32.em. */
+ − 43 *(.gnu.warning)
+ − 44 *(.gnu.linkonce.t*)
+ − 45 } =0
+ − 46 .init : { *(.init) } =0
+ − 47 .fini : { *(.fini) } =0
+ − 48 .rodata : { *(.rodata) *(.gnu.linkonce.r*) }
+ − 49 .rodata1 : { *(.rodata1) }
+ − 50 _etext = .;
+ − 51 PROVIDE (etext = .);
+ − 52 .sdata2 : { *(.sdata2) }
+ − 53 .sbss2 : { *(.sbss2) }
+ − 54 /* Adjust the address for the data segment. We want to adjust up to
+ − 55 the same address within the page on the next page up. It would
+ − 56 be more correct to do this:
+ − 57 . = .;
+ − 58 The current expression does not correctly handle the case of a
+ − 59 text segment ending precisely at the end of a page; it causes the
+ − 60 data segment to skip a page. The above expression does not have
+ − 61 this problem, but it will currently (2/95) cause BFD to allocate
+ − 62 a single segment, combining both text and data, for this case.
+ − 63 This will prevent the text segment from being shared among
+ − 64 multiple executions of the program; I think that is more
+ − 65 important than losing a page of the virtual address space (note
+ − 66 that no actual memory is lost; the page which is skipped can not
+ − 67 be referenced). */
+ − 68 . = .;
+ − 69 .data :
+ − 70 {
+ − 71 *(.data)
+ − 72 *(.gnu.linkonce.d*)
+ − 73 CONSTRUCTORS
+ − 74 }
+ − 75 .data1 : { *(.data1) }
+ − 76 .got1 : { *(.got1) }
+ − 77 .dynamic : { *(.dynamic) }
+ − 78 /* Put .ctors and .dtors next to the .got2 section, so that the pointers
+ − 79 get relocated with -mrelocatable. Also put in the .fixup pointers.
+ − 80 The current compiler no longer needs this, but keep it around for 2.7.2 */
+ − 81 PROVIDE (_GOT2_START_ = .);
+ − 82 .got2 : { *(.got2) }
+ − 83 PROVIDE (__CTOR_LIST__ = .);
+ − 84 .ctors : { *(.ctors) }
+ − 85 PROVIDE (__CTOR_END__ = .);
+ − 86 PROVIDE (__DTOR_LIST__ = .);
+ − 87 .dtors : { *(.dtors) }
+ − 88 PROVIDE (__DTOR_END__ = .);
+ − 89 PROVIDE (_FIXUP_START_ = .);
+ − 90 .fixup : { *(.fixup) }
+ − 91 PROVIDE (_FIXUP_END_ = .);
+ − 92 PROVIDE (_GOT2_END_ = .);
+ − 93 PROVIDE (_GOT_START_ = .);
+ − 94 .got : { *(.got) }
+ − 95 .got.plt : { *(.got.plt) }
+ − 96 PROVIDE (_GOT_END_ = .);
+ − 97 /* We want the small data sections together, so single-instruction offsets
+ − 98 can access them all, and initialized data all before uninitialized, so
+ − 99 we can shorten the on-disk segment size. */
+ − 100 .sdata : { *(.sdata) }
+ − 101 _edata = .;
+ − 102 PROVIDE (edata = .);
+ − 103 .sbss :
+ − 104 {
+ − 105 }
+ − 106 .bss :
+ − 107 {
+ − 108 PROVIDE (__sbss_start = .);
+ − 109 *(.sbss)
+ − 110 *(.scommon)
+ − 111 PROVIDE (__sbss_end = .);
+ − 112 PROVIDE (__bss_start = .);
+ − 113 *(.dynbss)
+ − 114 *(.bss)
+ − 115 *(COMMON)
+ − 116 }
+ − 117 _end = . ;
+ − 118 PROVIDE (end = .);
+ − 119 /* These are needed for ELF backends which have not yet been
+ − 120 converted to the new style linker. */
+ − 121 .stab 0 : { *(.stab) }
+ − 122 .stabstr 0 : { *(.stabstr) }
+ − 123 /* DWARF debug sections.
+ − 124 Symbols in the DWARF debugging sections are relative to the beginning
+ − 125 of the section so we begin them at 0. */
+ − 126 /* DWARF 1 */
+ − 127 .debug 0 : { *(.debug) }
+ − 128 .line 0 : { *(.line) }
+ − 129 /* GNU DWARF 1 extensions */
+ − 130 .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ − 131 .debug_sfnames 0 : { *(.debug_sfnames) }
+ − 132 /* DWARF 1.1 and DWARF 2 */
+ − 133 .debug_aranges 0 : { *(.debug_aranges) }
+ − 134 .debug_pubnames 0 : { *(.debug_pubnames) }
+ − 135 /* DWARF 2 */
+ − 136 .debug_info 0 : { *(.debug_info) }
+ − 137 .debug_abbrev 0 : { *(.debug_abbrev) }
+ − 138 .debug_line 0 : { *(.debug_line) }
+ − 139 .debug_frame 0 : { *(.debug_frame) }
+ − 140 .debug_str 0 : { *(.debug_str) }
+ − 141 .debug_loc 0 : { *(.debug_loc) }
+ − 142 .debug_macinfo 0 : { *(.debug_macinfo) }
+ − 143 /* SGI/MIPS DWARF 2 extensions */
+ − 144 .debug_weaknames 0 : { *(.debug_weaknames) }
+ − 145 .debug_funcnames 0 : { *(.debug_funcnames) }
+ − 146 .debug_typenames 0 : { *(.debug_typenames) }
+ − 147 .debug_varnames 0 : { *(.debug_varnames) }
+ − 148 /* These must appear regardless of . */
+ − 149 }