Make it explicit that Windows need -swap, even XP :(
[syslinux.git] / core / syslinux.ld
blob28ef44e9814a82f741b1232cfdefee226f2cfbd1
1 /*
2  * Linker script for the SYSLINUX core
3  */
5 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
6 OUTPUT_ARCH(i386)
7 EXTERN(_start)
8 ENTRY(_start)
10 STACK_LEN = 4096;
12 SECTIONS
14         /* "Early" sections (before the load) */
15         . = 0x0800;
17         .earlybss : {
18                 __earlybss_start = .;
19                 *(.earlybss)
20                 __earlybss_end = .;
21         }
22         __earlybss_len = __earlybss_end - __earlybss_start;
23         __earlybss_dwords = (__earlybss_len + 3) >> 2;
25         .bcopy32 : AT (__bcopy32_lma) {
26                 FILL(0x90909090)
27                 __bcopy32_start = .;
28                 *(.bcopy32)
29                 __bcopy32_end = .;
30         }
31         __bcopy32_len = __bcopy32_end - __bcopy32_start;
32         __bcopy32_dwords = (__bcopy32_len + 3) >> 2;
34         .config : AT (__config_lma) {
35                 __config_start = .;
36                 *(.config)
37                 __config_end = .;
38         }
39         __config_len = __config_end - __config_start;
40         __config_dwords = (__config_len + 3) >> 2;
42         .bss : AT(__bss_start) {
43                 __bss_start = .;
44                 *(.bss)
45                 *(.bss2)
46                 __bss_end = .;
47         }
48         __bss_len = __bss_end - __bss_start;
49         __bss_dwords = (__bss_len + 3) >> 2;
51         /* Stack */
53         . = 0x7c00 - STACK_LEN;
54         .stack : {
55                 __stack_start = .;
56                 . += STACK_LEN;
57                 __stack_end = .;
58         }
59         __stack_len = __stack_end - __stack_start;
60         __stack_dwords = (__stack_len + 3) >> 2;
62         /* Initialized sections */
64         . = 0x7c00;
65         .text : {
66                 FILL(0x90909090)
67                 __text_start = .;
68                 *(.text)
69                 __text_end = .;
70         }
71         __text_len = __text_end - __text_start;
72         __text_dwords = (__text_len + 3) >> 2;
74         . = ALIGN(4);
75         __bcopy32_lma = .;
76         . += SIZEOF(.bcopy32);
78         . = ALIGN(4);
79         .data : {
80               __data_start = .;
81               *(.data)
82               __data_end = .;
83         }
84         __data_len = __data_end - __data_start;
85         __data_dwords = (__data_len + 3) >> 2;
87         . = ALIGN(4);
88         __config_lma = .;
89         . += SIZEOF(.config);
91         /* ADV, must be the last intialized section */
93         . = ALIGN(512);
94         .adv : {
95                 __adv_start = .;
96                 *(.adv)
97                 __adv_end = .;
98         }
99         __adv_len = __adv_end - __adv_start;
100         __adv_dwords = (__adv_len + 3) >> 2;
102         /* Late uninitialized sections */
104         .uibss : {
105                 __uibss_start = .;
106                 *(.uibss)
107                 __uibss_end = .;
108         }
109         __uibss_len = __uibss_end - __uibss_start;
110         __uibss_dwords = (__uibss_len + 3) >> 2;
112         .bss1 : {
113                 __bss1_start = .;
114                 *(.bss1)
115                 __bss1_end = .;
116         }
117         __bss1_len = __bss1_end - __bss1_start;
118         __bss1_dwords = (__bss1_len + 3) >> 2;
120         . = ASSERT(__bss1_end <= 0x10000, "64K overflow");