dyn.lds.S revision 7664709b44a13e2e0b545e2dd8e7b8797a1748dc
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 : { 657664709b44a13e2e0b545e2dd8e7b8797a1748dcSam Ravnborg TEXT_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