xref: /openbmc/linux/arch/um/kernel/uml.lds.S (revision 9d1578a3)
11da177e4SLinus Torvalds#include <asm-generic/vmlinux.lds.h>
2a7dfa940SCyrill Gorcunov#include <asm/page.h>
31da177e4SLinus Torvalds
41da177e4SLinus TorvaldsOUTPUT_FORMAT(ELF_FORMAT)
51da177e4SLinus TorvaldsOUTPUT_ARCH(ELF_ARCH)
61da177e4SLinus TorvaldsENTRY(_start)
71da177e4SLinus Torvaldsjiffies = jiffies_64;
81da177e4SLinus Torvalds
91da177e4SLinus TorvaldsSECTIONS
101da177e4SLinus Torvalds{
111da177e4SLinus Torvalds  /* This must contain the right address - not quite the default ELF one.*/
121da177e4SLinus Torvalds  PROVIDE (__executable_start = START);
1323bbd586SJeff Dike  /* Static binaries stick stuff here, like the sigreturn trampoline,
1423bbd586SJeff Dike   * invisibly to objdump.  So, just make __binary_start equal to the very
1523bbd586SJeff Dike   * beginning of the executable, and if there are unmapped pages after this,
1623bbd586SJeff Dike   * they are forever unusable.
1723bbd586SJeff Dike   */
1823bbd586SJeff Dike  __binary_start = START;
191da177e4SLinus Torvalds
2023bbd586SJeff Dike  . = START + SIZEOF_HEADERS;
211da177e4SLinus Torvalds
22d1480c56SJeff Dike  _text = .;
231da177e4SLinus Torvalds  _stext = .;
241da177e4SLinus Torvalds  __init_begin = .;
255d150a97STim Abbott  INIT_TEXT_SECTION(PAGE_SIZE)
26a7dfa940SCyrill Gorcunov  . = ALIGN(PAGE_SIZE);
27d67b569fSJeff Dike
281da177e4SLinus Torvalds  .text      :
291da177e4SLinus Torvalds  {
307664709bSSam Ravnborg    TEXT_TEXT
311da177e4SLinus Torvalds    SCHED_TEXT
321da177e4SLinus Torvalds    LOCK_TEXT
331da177e4SLinus Torvalds    *(.fixup)
341da177e4SLinus Torvalds    /* .gnu.warning sections are handled specially by elf32.em.  */
351da177e4SLinus Torvalds    *(.gnu.warning)
361da177e4SLinus Torvalds    *(.gnu.linkonce.t*)
37c7ec16daSJeff Dike  }
38d67b569fSJeff Dike
39a7dfa940SCyrill Gorcunov  . = ALIGN(PAGE_SIZE);
40c7ec16daSJeff Dike  .syscall_stub : {
41d67b569fSJeff Dike	__syscall_stub_start = .;
42d67b569fSJeff Dike	*(.__syscall_stub*)
43d67b569fSJeff Dike	__syscall_stub_end = .;
441da177e4SLinus Torvalds  }
451da177e4SLinus Torvalds
461da177e4SLinus Torvalds  #include "asm/common.lds.S"
471da177e4SLinus Torvalds
4801ba2bdcSSam Ravnborg  init.data : { INIT_DATA }
491da177e4SLinus Torvalds  .data    :
501da177e4SLinus Torvalds  {
515d150a97STim Abbott    INIT_TASK_DATA(KERNEL_STACK_SIZE)
52c14b8494SJeff Dike    . = ALIGN(KERNEL_STACK_SIZE);
539d1578a3SDenys Vlasenko    *(.data..init_irqstack)
54ca967258SSam Ravnborg    DATA_DATA
551da177e4SLinus Torvalds    *(.gnu.linkonce.d*)
561da177e4SLinus Torvalds    CONSTRUCTORS
571da177e4SLinus Torvalds  }
581da177e4SLinus Torvalds  .data1   : { *(.data1) }
591da177e4SLinus Torvalds  .ctors         :
601da177e4SLinus Torvalds  {
611da177e4SLinus Torvalds    *(.ctors)
621da177e4SLinus Torvalds  }
631da177e4SLinus Torvalds  .dtors         :
641da177e4SLinus Torvalds  {
651da177e4SLinus Torvalds    *(.dtors)
661da177e4SLinus Torvalds  }
671da177e4SLinus Torvalds
681da177e4SLinus Torvalds  .got           : { *(.got.plt) *(.got) }
691da177e4SLinus Torvalds  .dynamic       : { *(.dynamic) }
70ba9950c8SJeff Dike  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
71ba9950c8SJeff Dike  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
721da177e4SLinus Torvalds  /* We want the small data sections together, so single-instruction offsets
731da177e4SLinus Torvalds     can access them all, and initialized data all before uninitialized, so
741da177e4SLinus Torvalds     we can shorten the on-disk segment size.  */
751da177e4SLinus Torvalds  .sdata     : { *(.sdata) }
761da177e4SLinus Torvalds  _edata  =  .;
771da177e4SLinus Torvalds  PROVIDE (edata = .);
78a7dfa940SCyrill Gorcunov  . = ALIGN(PAGE_SIZE);
791da177e4SLinus Torvalds  __bss_start = .;
801da177e4SLinus Torvalds  PROVIDE(_bss_start = .);
815d150a97STim Abbott  SBSS(0)
825d150a97STim Abbott  BSS(0)
831da177e4SLinus Torvalds  _end = .;
841da177e4SLinus Torvalds  PROVIDE (end = .);
85a7d0c210SPaolo 'Blaisorblade' Giarrusso
86a7d0c210SPaolo 'Blaisorblade' Giarrusso  STABS_DEBUG
87a7d0c210SPaolo 'Blaisorblade' Giarrusso
88a7d0c210SPaolo 'Blaisorblade' Giarrusso  DWARF_DEBUG
89405d967dSTejun Heo
90023bf6f1STejun Heo  DISCARDS
911da177e4SLinus Torvalds}
92