11da177e4SLinus Torvalds#include <asm-generic/vmlinux.lds.h> 21da177e4SLinus Torvalds 31da177e4SLinus TorvaldsOUTPUT_FORMAT(ELF_FORMAT) 41da177e4SLinus TorvaldsOUTPUT_ARCH(ELF_ARCH) 51da177e4SLinus TorvaldsENTRY(_start) 61da177e4SLinus Torvaldsjiffies = jiffies_64; 71da177e4SLinus Torvalds 81da177e4SLinus TorvaldsSECTIONS 91da177e4SLinus Torvalds{ 101da177e4SLinus Torvalds /*This must contain the right address - not quite the default ELF one.*/ 111da177e4SLinus Torvalds PROVIDE (__executable_start = START); 121da177e4SLinus Torvalds . = START + SIZEOF_HEADERS; 131da177e4SLinus Torvalds 141da177e4SLinus Torvalds /* Used in arch/um/kernel/mem.c. Any memory between START and __binary_start 151da177e4SLinus Torvalds * is remapped.*/ 161da177e4SLinus Torvalds __binary_start = .; 171da177e4SLinus Torvalds 1860b2737dSPaolo 'Blaisorblade' Giarrusso#ifdef MODE_TT 1960b2737dSPaolo 'Blaisorblade' Giarrusso .remap_data : { arch/um/sys-SUBARCH/unmap_fin.o (.data .bss) } 2060b2737dSPaolo 'Blaisorblade' Giarrusso .remap : { arch/um/sys-SUBARCH/unmap_fin.o (.text) } 211da177e4SLinus Torvalds 221da177e4SLinus Torvalds . = ALIGN(4096); /* Init code and data */ 231da177e4SLinus Torvalds#endif 241da177e4SLinus Torvalds 251da177e4SLinus Torvalds _stext = .; 261da177e4SLinus Torvalds __init_begin = .; 271da177e4SLinus Torvalds .init.text : { 281da177e4SLinus Torvalds _sinittext = .; 291da177e4SLinus Torvalds *(.init.text) 301da177e4SLinus Torvalds _einittext = .; 311da177e4SLinus Torvalds } 321da177e4SLinus Torvalds . = ALIGN(4096); 331da177e4SLinus Torvalds .text : 341da177e4SLinus Torvalds { 351da177e4SLinus Torvalds *(.text) 361da177e4SLinus Torvalds SCHED_TEXT 371da177e4SLinus Torvalds LOCK_TEXT 381da177e4SLinus Torvalds *(.fixup) 391da177e4SLinus Torvalds /* .gnu.warning sections are handled specially by elf32.em. */ 401da177e4SLinus Torvalds *(.gnu.warning) 411da177e4SLinus Torvalds *(.gnu.linkonce.t*) 421da177e4SLinus Torvalds } 431da177e4SLinus Torvalds 441da177e4SLinus Torvalds #include "asm/common.lds.S" 451da177e4SLinus Torvalds 461da177e4SLinus Torvalds init.data : { *(init.data) } 471da177e4SLinus Torvalds .data : 481da177e4SLinus Torvalds { 491da177e4SLinus Torvalds . = ALIGN(KERNEL_STACK_SIZE); /* init_task */ 501da177e4SLinus Torvalds *(.data.init_task) 511da177e4SLinus Torvalds *(.data) 521da177e4SLinus Torvalds *(.gnu.linkonce.d*) 531da177e4SLinus Torvalds CONSTRUCTORS 541da177e4SLinus Torvalds } 551da177e4SLinus Torvalds .data1 : { *(.data1) } 561da177e4SLinus Torvalds .ctors : 571da177e4SLinus Torvalds { 581da177e4SLinus Torvalds *(.ctors) 591da177e4SLinus Torvalds } 601da177e4SLinus Torvalds .dtors : 611da177e4SLinus Torvalds { 621da177e4SLinus Torvalds *(.dtors) 631da177e4SLinus Torvalds } 641da177e4SLinus Torvalds 651da177e4SLinus Torvalds .got : { *(.got.plt) *(.got) } 661da177e4SLinus Torvalds .dynamic : { *(.dynamic) } 67ba9950c8SJeff Dike .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } 68ba9950c8SJeff Dike .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } 691da177e4SLinus Torvalds /* We want the small data sections together, so single-instruction offsets 701da177e4SLinus Torvalds can access them all, and initialized data all before uninitialized, so 711da177e4SLinus Torvalds we can shorten the on-disk segment size. */ 721da177e4SLinus Torvalds .sdata : { *(.sdata) } 731da177e4SLinus Torvalds _edata = .; 741da177e4SLinus Torvalds PROVIDE (edata = .); 751da177e4SLinus Torvalds . = ALIGN(0x1000); 761da177e4SLinus Torvalds .sbss : 771da177e4SLinus Torvalds { 781da177e4SLinus Torvalds __bss_start = .; 791da177e4SLinus Torvalds PROVIDE(_bss_start = .); 801da177e4SLinus Torvalds *(.sbss) 811da177e4SLinus Torvalds *(.scommon) 821da177e4SLinus Torvalds } 831da177e4SLinus Torvalds .bss : 841da177e4SLinus Torvalds { 851da177e4SLinus Torvalds *(.dynbss) 861da177e4SLinus Torvalds *(.bss) 871da177e4SLinus Torvalds *(COMMON) 881da177e4SLinus Torvalds } 891da177e4SLinus Torvalds _end = . ; 901da177e4SLinus Torvalds PROVIDE (end = .); 911da177e4SLinus Torvalds /* Stabs debugging sections. */ 921da177e4SLinus Torvalds .stab 0 : { *(.stab) } 931da177e4SLinus Torvalds .stabstr 0 : { *(.stabstr) } 941da177e4SLinus Torvalds .stab.excl 0 : { *(.stab.excl) } 951da177e4SLinus Torvalds .stab.exclstr 0 : { *(.stab.exclstr) } 961da177e4SLinus Torvalds .stab.index 0 : { *(.stab.index) } 971da177e4SLinus Torvalds .stab.indexstr 0 : { *(.stab.indexstr) } 981da177e4SLinus Torvalds .comment 0 : { *(.comment) } 991da177e4SLinus Torvalds} 100