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