1/* Default linker script, for normal executables */ 2OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", 3 "elf64-powerpc") 4OUTPUT_ARCH(powerpc:common64) 5ENTRY(_start) 6SECTIONS 7{ 8 /* Read-only sections, merged into text segment. Assumes the 9 kernel Makefile sets the start address via -Ttext. */ 10 .text : 11 { 12 PROVIDE_HIDDEN (__eprol = .); 13 *(.text) 14 *(.text.unlikely .text.*_unlikely) 15 *(.text.exit .text.exit.*) 16 *(.text.startup .text.startup.*) 17 *(.text.hot .text.hot.*) 18 *(.text.* .gnu.linkonce.t.*) 19 __stub_start = .; 20 *(.stub) 21 __stub_end = .; 22 __stub_pmap_start = .; 23 *(.stub.pmap) 24 __stub_pmap_end = .; 25 /* .gnu.warning sections are handled specially by elf32.em. */ 26 *(.gnu.warning) 27 *(.glink) 28 } =0x60000000 29 _etext = .; 30 PROVIDE (__etext = .); 31 PROVIDE (_etext = .); 32 PROVIDE (etext = .); 33 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } 34 .rodata1 : { *(.rodata1) } 35 .sdata2 : 36 { 37 *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) 38 } 39 .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } 40 .jcr : { KEEP (*(.jcr)) } 41 . = DATA_SEGMENT_RELRO_END (0, .); 42 .data : 43 { 44 _fdata = .; 45 *(.data .data.* .gnu.linkonce.d.*) 46 SORT(CONSTRUCTORS) 47 } 48 .data1 : { *(.data1) } 49 .toc1 : ALIGN(8) { *(.toc1) } 50 .opd : ALIGN(8) { KEEP (*(.opd)) } 51 .branch_lt : ALIGN(8) { *(.branch_lt) } 52 .got : ALIGN(8) { *(.got .toc) } 53 /* We want the small data sections together, so single-instruction offsets 54 can access them all, and initialized data all before uninitialized, so 55 we can shorten the on-disk segment size. */ 56 . = ALIGN(64); /* COHERENCY UNIT */ 57 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 58 . = ALIGN(64); /* COHERENCY UNIT */ 59 .data.read_mostly : { *(.data.read_mostly) } 60 . = ALIGN(64); /* COHERENCY UNIT */ 61 .sdata : 62 { 63 *(.sdata .sdata.* .gnu.linkonce.s.*) 64 } 65 _edata = .; PROVIDE (edata = .); 66 __bss_start = .; 67 .tocbss : ALIGN(8) { *(.tocbss)} 68 .sbss : 69 { 70 *(.dynsbss) 71 *(.sbss .sbss.* .gnu.linkonce.sb.*) 72 *(.scommon) 73 } 74 .plt : { *(.plt) } 75 .iplt : { *(.iplt) } 76 .bss : 77 { 78 *(.dynbss) 79 *(.bss .bss.* .gnu.linkonce.b.*) 80 *(COMMON) 81 /* Align here to ensure that the .bss section occupies space up to 82 _end. Align after .bss to ensure correct alignment even if the 83 .bss section disappears because there are no input sections. 84 FIXME: Why do we need it? When there is no .bss section, we don't 85 pad the .data section. */ 86 . = ALIGN(. != 0 ? 64 / 8 : 1); 87 } 88 . = ALIGN(64 / 8); 89 . = ALIGN(64 / 8); 90 _end = .; PROVIDE (end = .); 91 . = DATA_SEGMENT_END (.); 92} 93