1/* 2 * setup.ld 3 * 4 * Linker script for the i386 setup code 5 */ 6OUTPUT_FORMAT("elf32-i386") 7OUTPUT_ARCH(i386) 8ENTRY(_start) 9 10SECTIONS 11{ 12 . = 0; 13 .bstext : { 14 *(.bstext) 15 . = 495; 16 } =0xffffffff 17 18 .header : { *(.header) } 19 .entrytext : { *(.entrytext) } 20 .inittext : { *(.inittext) } 21 .initdata : { *(.initdata) } 22 __end_init = .; 23 24 .text : { *(.text .text.*) } 25 .text32 : { *(.text32) } 26 27 . = ALIGN(16); 28 .rodata : { *(.rodata*) } 29 30 .videocards : { 31 video_cards = .; 32 *(.videocards) 33 video_cards_end = .; 34 } 35 36 . = ALIGN(16); 37 .data : { *(.data*) } 38 39 .signature : { 40 setup_sig = .; 41 LONG(0x5a5aaa55) 42 43 /* Reserve some extra space for the compat section */ 44 setup_size = ALIGN(ABSOLUTE(.) + 32, 512); 45 setup_sects = ABSOLUTE(setup_size / 512); 46 } 47 48 49 . = ALIGN(16); 50 .bss : 51 { 52 __bss_start = .; 53 *(.bss) 54 __bss_end = .; 55 } 56 . = ALIGN(16); 57 _end = .; 58 59 /DISCARD/ : { 60 *(.note*) 61 } 62 63 /* 64 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility: 65 */ 66 . = ASSERT(_end <= 0x8000, "Setup too big!"); 67 . = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!"); 68 /* Necessary for the very-old-loader check to work... */ 69 . = ASSERT(__end_init <= 5*512, "init sections too big!"); 70 71} 72