1 /* SPDX-License-Identifier: GPL-2.0 */ !! 1 /* ld script to make i386 Linux kernel 2 #if defined(CONFIG_MMU) && !defined(CONFIG_COL !! 2 * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>; 3 PHDRS !! 3 */ >> 4 >> 5 #include <asm-generic/vmlinux.lds.h> >> 6 >> 7 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") >> 8 OUTPUT_ARCH(i386) >> 9 ENTRY(startup_32) >> 10 jiffies = jiffies_64; >> 11 SECTIONS 4 { 12 { 5 text PT_LOAD FILEHDR PHDRS FLAGS (7); !! 13 . = 0xC0000000 + 0x100000; 6 data PT_LOAD FLAGS (7); !! 14 /* read-only */ >> 15 _text = .; /* Text and read-only data */ >> 16 .text : { >> 17 *(.text) >> 18 *(.fixup) >> 19 *(.gnu.warning) >> 20 } = 0x9090 >> 21 >> 22 _etext = .; /* End of text section */ >> 23 >> 24 . = ALIGN(16); /* Exception table */ >> 25 __start___ex_table = .; >> 26 __ex_table : { *(__ex_table) } >> 27 __stop___ex_table = .; >> 28 >> 29 RODATA >> 30 >> 31 /* writeable */ >> 32 .data : { /* Data */ >> 33 *(.data) >> 34 CONSTRUCTORS >> 35 } >> 36 >> 37 . = ALIGN(4096); >> 38 __nosave_begin = .; >> 39 .data_nosave : { *(.data.nosave) } >> 40 . = ALIGN(4096); >> 41 __nosave_end = .; >> 42 >> 43 . = ALIGN(4096); >> 44 .data.page_aligned : { *(.data.idt) } >> 45 >> 46 . = ALIGN(32); >> 47 .data.cacheline_aligned : { *(.data.cacheline_aligned) } >> 48 >> 49 _edata = .; /* End of data section */ >> 50 >> 51 . = ALIGN(8192); /* init_task */ >> 52 .data.init_task : { *(.data.init_task) } >> 53 >> 54 /* will be freed after init */ >> 55 . = ALIGN(4096); /* Init code and data */ >> 56 __init_begin = .; >> 57 .init.text : { >> 58 _sinittext = .; >> 59 *(.init.text) >> 60 _einittext = .; >> 61 } >> 62 .init.data : { *(.init.data) } >> 63 . = ALIGN(16); >> 64 __setup_start = .; >> 65 .init.setup : { *(.init.setup) } >> 66 __setup_end = .; >> 67 __start___param = .; >> 68 __param : { *(__param) } >> 69 __stop___param = .; >> 70 __initcall_start = .; >> 71 .initcall.init : { >> 72 *(.initcall1.init) >> 73 *(.initcall2.init) >> 74 *(.initcall3.init) >> 75 *(.initcall4.init) >> 76 *(.initcall5.init) >> 77 *(.initcall6.init) >> 78 *(.initcall7.init) >> 79 } >> 80 __initcall_end = .; >> 81 __con_initcall_start = .; >> 82 .con_initcall.init : { *(.con_initcall.init) } >> 83 __con_initcall_end = .; >> 84 SECURITY_INIT >> 85 . = ALIGN(4); >> 86 __alt_instructions = .; >> 87 .altinstructions : { *(.altinstructions) } >> 88 __alt_instructions_end = .; >> 89 .altinstr_replacement : { *(.altinstr_replacement) } >> 90 /* .exit.text is discard at runtime, not link time, to deal with references >> 91 from .altinstructions and .eh_frame */ >> 92 .exit.text : { *(.exit.text) } >> 93 .exit.data : { *(.exit.data) } >> 94 . = ALIGN(4096); >> 95 __initramfs_start = .; >> 96 .init.ramfs : { *(.init.ramfs) } >> 97 __initramfs_end = .; >> 98 . = ALIGN(32); >> 99 __per_cpu_start = .; >> 100 .data.percpu : { *(.data.percpu) } >> 101 __per_cpu_end = .; >> 102 . = ALIGN(4096); >> 103 __init_end = .; >> 104 /* freed after init ends here */ >> 105 >> 106 __bss_start = .; /* BSS */ >> 107 .bss : { *(.bss) } >> 108 __bss_stop = .; >> 109 >> 110 _end = . ; >> 111 >> 112 /* Sections to be discarded */ >> 113 /DISCARD/ : { >> 114 *(.exitcall.exit) >> 115 } >> 116 >> 117 /* Stabs debugging sections. */ >> 118 .stab 0 : { *(.stab) } >> 119 .stabstr 0 : { *(.stabstr) } >> 120 .stab.excl 0 : { *(.stab.excl) } >> 121 .stab.exclstr 0 : { *(.stab.exclstr) } >> 122 .stab.index 0 : { *(.stab.index) } >> 123 .stab.indexstr 0 : { *(.stab.indexstr) } >> 124 .comment 0 : { *(.comment) } 7 } 125 } 8 #ifdef CONFIG_SUN3 << 9 #include "vmlinux-sun3.lds" << 10 #else << 11 #include "vmlinux-std.lds" << 12 #endif << 13 #else << 14 #include "vmlinux-nommu.lds" << 15 #endif <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.