dyn.lds.S revision c14b84949e127560084c7c56b365931c71c60768
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm-generic/vmlinux.lds.h>
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsOUTPUT_FORMAT(ELF_FORMAT)
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsOUTPUT_ARCH(ELF_ARCH)
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsENTRY(_start)
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsjiffies = jiffies_64;
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsSECTIONS
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  PROVIDE (__executable_start = START);
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  . = START + SIZEOF_HEADERS;
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .interp         : { *(.interp) }
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  /* Used in arch/um/kernel/mem.c. Any memory between START and __binary_start
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   * is remapped.*/
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  __binary_start = .;
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  . = ALIGN(4096);		/* Init code and data */
17d1480c56feb2a894fd47fb399999a5b320c3e103Jeff Dike  _text = .;
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  _stext = .;
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  __init_begin = .;
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .init.text : {
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	_sinittext = .;
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	*(.init.text)
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	_einittext = .;
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  }
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  . = ALIGN(4096);
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  /* Read-only sections, merged into text segment: */
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .hash           : { *(.hash) }
300b0bf7a3ccb6f0b38ead71980e79f875046047b7Roland McGrath  .gnu.hash       : { *(.gnu.hash) }
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .dynsym         : { *(.dynsym) }
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .dynstr         : { *(.dynstr) }
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .gnu.version    : { *(.gnu.version) }
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .gnu.version_d  : { *(.gnu.version_d) }
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .gnu.version_r  : { *(.gnu.version_r) }
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.init       : { *(.rel.init) }
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.init      : { *(.rela.init) }
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.fini       : { *(.rel.fini) }
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.fini      : { *(.rela.fini) }
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.tdata	  : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.tbss	  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.tbss	  : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.ctors      : { *(.rel.ctors) }
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.ctors     : { *(.rela.ctors) }
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.dtors      : { *(.rel.dtors) }
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.dtors     : { *(.rela.dtors) }
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.got        : { *(.rel.got) }
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.got       : { *(.rela.got) }
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rel.plt        : { *(.rel.plt) }
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .rela.plt       : { *(.rela.plt) }
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .init           : {
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*(.init))
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  } =0x90909090
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .plt            : { *(.plt) }
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .text           : {
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    *(.text)
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    SCHED_TEXT
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    LOCK_TEXT
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    *(.fixup)
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    *(.stub .text.* .gnu.linkonce.t.*)
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* .gnu.warning sections are handled specially by elf32.em.  */
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    *(.gnu.warning)
72d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike
73d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike    . = ALIGN(4096);
74d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike    __syscall_stub_start = .;
75d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike    *(.__syscall_stub*)
76d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike    __syscall_stub_end = .;
77d67b569f5f620c0fb95d5212642746b7ba9d29e4Jeff Dike    . = ALIGN(4096);
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  } =0x90909090
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .fini           : {
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*(.fini))
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  } =0x90909090
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .kstrtab : { *(.kstrtab) }
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  #include "asm/common.lds.S"
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  init.data : { *(.init.data) }
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  /* Ensure the __preinit_array_start label is properly aligned.  We
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds     could instead move the label definition inside the section, but
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds     the linker would then create the section even if it turns out to
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds     be empty, which isn't pretty.  */
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  . = ALIGN(32 / 8);
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .preinit_array     : { *(.preinit_array) }
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .init_array     : { *(.init_array) }
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .fini_array     : { *(.fini_array) }
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .data           : {
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    . = ALIGN(KERNEL_STACK_SIZE);		/* init_task */
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    *(.data.init_task)
100c14b84949e127560084c7c56b365931c71c60768Jeff Dike    . = ALIGN(KERNEL_STACK_SIZE);
101c14b84949e127560084c7c56b365931c71c60768Jeff Dike    *(.data.init_irqstack)
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    *(.data .data.* .gnu.linkonce.d.*)
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    SORT(CONSTRUCTORS)
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  }
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .data1          : { *(.data1) }
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .eh_frame       : { KEEP (*(.eh_frame)) }
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .gcc_except_table   : { *(.gcc_except_table) }
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .dynamic        : { *(.dynamic) }
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .ctors          : {
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* gcc uses crtbegin.o to find the start of
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       the constructors, so we make sure it is
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       first.  Because this is a wildcard, it
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       doesn't matter if the user does not
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       actually link against crtbegin.o; the
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       linker won't look for a file to match a
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       wildcard.  The wildcard also means that it
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       doesn't matter which directory crtbegin.o
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       is in.  */
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*crtbegin.o(.ctors))
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* We don't want to include the .ctor section from
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       from the crtend.o file until after the sorted ctors.
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       The .ctor section from the crtend file contains the
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       end of ctors marker and it must be last */
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*(SORT(.ctors.*)))
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*(.ctors))
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  }
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .dtors          : {
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*crtbegin.o(.dtors))
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*(SORT(.dtors.*)))
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    KEEP (*(.dtors))
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  }
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .jcr            : { KEEP (*(.jcr)) }
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .got            : { *(.got.plt) *(.got) }
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  _edata = .;
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  PROVIDE (edata = .);
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  __bss_start = .;
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  .bss            : {
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   *(.dynbss)
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   *(.bss .bss.* .gnu.linkonce.b.*)
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   *(COMMON)
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   /* Align here to ensure that the .bss section occupies space up to
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds      _end.  Align after .bss to ensure correct alignment even if the
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds      .bss section disappears because there are no input sections.  */
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   . = ALIGN(32 / 8);
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  . = ALIGN(32 / 8);
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  }
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  _end = .;
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  PROVIDE (end = .);
153a7d0c210337246fa9c25b73cf76dfdbb159f642bPaolo 'Blaisorblade' Giarrusso
154a7d0c210337246fa9c25b73cf76dfdbb159f642bPaolo 'Blaisorblade' Giarrusso  STABS_DEBUG
155a7d0c210337246fa9c25b73cf76dfdbb159f642bPaolo 'Blaisorblade' Giarrusso
156a7d0c210337246fa9c25b73cf76dfdbb159f642bPaolo 'Blaisorblade' Giarrusso  DWARF_DEBUG
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}
158