1#include <asm-generic/vmlinux.lds.h> 2 3OUTPUT_FORMAT(ELF_FORMAT) 4OUTPUT_ARCH(ELF_ARCH) 5ENTRY(_start) 6jiffies = jiffies_64; 7 8SECTIONS 9{ 10 /* This must contain the right address - not quite the default ELF one.*/ 11 PROVIDE (__executable_start = START); 12 /* Static binaries stick stuff here, like the sigreturn trampoline, 13 * invisibly to objdump. So, just make __binary_start equal to the very 14 * beginning of the executable, and if there are unmapped pages after this, 15 * they are forever unusable. 16 */ 17 __binary_start = START; 18 19 . = START + SIZEOF_HEADERS; 20 21#ifdef MODE_TT 22 .remap_data : { UNMAP_PATH (.data .bss) } 23 .remap : { UNMAP_PATH (.text) } 24 25 . = ALIGN(4096); /* Init code and data */ 26#endif 27 28 _text = .; 29 _stext = .; 30 __init_begin = .; 31 .init.text : { 32 _sinittext = .; 33 *(.init.text) 34 _einittext = .; 35 } 36 . = ALIGN(4096); 37 38 .text : 39 { 40 TEXT_TEXT 41 SCHED_TEXT 42 LOCK_TEXT 43 *(.fixup) 44 /* .gnu.warning sections are handled specially by elf32.em. */ 45 *(.gnu.warning) 46 *(.gnu.linkonce.t*) 47 } 48 49 . = ALIGN(4096); 50 .syscall_stub : { 51 __syscall_stub_start = .; 52 *(.__syscall_stub*) 53 __syscall_stub_end = .; 54 } 55 56 #include "asm/common.lds.S" 57 58 init.data : { *(init.data) } 59 .data : 60 { 61 . = ALIGN(KERNEL_STACK_SIZE); /* init_task */ 62 *(.data.init_task) 63 . = ALIGN(KERNEL_STACK_SIZE); 64 *(.data.init_irqstack) 65 DATA_DATA 66 *(.gnu.linkonce.d*) 67 CONSTRUCTORS 68 } 69 .data1 : { *(.data1) } 70 .ctors : 71 { 72 *(.ctors) 73 } 74 .dtors : 75 { 76 *(.dtors) 77 } 78 79 .got : { *(.got.plt) *(.got) } 80 .dynamic : { *(.dynamic) } 81 .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } 82 .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } 83 /* We want the small data sections together, so single-instruction offsets 84 can access them all, and initialized data all before uninitialized, so 85 we can shorten the on-disk segment size. */ 86 .sdata : { *(.sdata) } 87 _edata = .; 88 PROVIDE (edata = .); 89 . = ALIGN(0x1000); 90 .sbss : 91 { 92 __bss_start = .; 93 PROVIDE(_bss_start = .); 94 *(.sbss) 95 *(.scommon) 96 } 97 .bss : 98 { 99 *(.dynbss) 100 *(.bss) 101 *(COMMON) 102 } 103 _end = .; 104 PROVIDE (end = .); 105 106 STABS_DEBUG 107 108 DWARF_DEBUG 109} 110