1/* ld script to make i386 Linux kernel 2 * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>; 3 */ 4OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") 5OUTPUT_ARCH(i386) 6ENTRY(_start) 7SECTIONS 8{ 9 . = 0xC0000000 + 0x100000; 10 _text = .; /* Text and read-only data */ 11 .text : { 12 *(.text) 13 *(.fixup) 14 *(.gnu.warning) 15 } = 0x9090 16 17 _etext = .; /* End of text section */ 18 19 .rodata : { *(.rodata) *(.rodata.*) } 20 .kstrtab : { *(.kstrtab) } 21 22 . = ALIGN(16); /* Exception table */ 23 __start___ex_table = .; 24 __ex_table : { *(__ex_table) } 25 __stop___ex_table = .; 26 27 __start___ksymtab = .; /* Kernel symbol table */ 28 __ksymtab : { *(__ksymtab) } 29 __stop___ksymtab = .; 30 31 .data : { /* Data */ 32 *(.data) 33 CONSTRUCTORS 34 } 35 36 _edata = .; /* End of data section */ 37 38 . = ALIGN(8192); /* init_task */ 39 .data.init_task : { *(.data.init_task) } 40 41 . = ALIGN(4096); /* Init code and data */ 42 __init_begin = .; 43 .text.init : { *(.text.init) } 44 .data.init : { *(.data.init) } 45 . = ALIGN(16); 46 __setup_start = .; 47 .setup.init : { *(.setup.init) } 48 __setup_end = .; 49 __initcall_start = .; 50 .initcall.init : { *(.initcall.init) } 51 __initcall_end = .; 52 . = ALIGN(4096); 53 __init_end = .; 54 55 . = ALIGN(4096); 56 .data.page_aligned : { *(.data.idt) } 57 58 . = ALIGN(32); 59 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 60 61 __bss_start = .; /* BSS */ 62 .bss : { 63 *(.bss) 64 } 65 _end = . ; 66 67 /* Sections to be discarded */ 68 /DISCARD/ : { 69 *(.text.exit) 70 *(.data.exit) 71 *(.exitcall.exit) 72 } 73 74 /* Stabs debugging sections. */ 75 .stab 0 : { *(.stab) } 76 .stabstr 0 : { *(.stabstr) } 77 .stab.excl 0 : { *(.stab.excl) } 78 .stab.exclstr 0 : { *(.stab.exclstr) } 79 .stab.index 0 : { *(.stab.index) } 80 .stab.indexstr 0 : { *(.stab.indexstr) } 81 .comment 0 : { *(.comment) } 82} 83