FAT: change DOS installer to EXE; additional 32K limit fixes
[profile/ivi/syslinux.git] / dos / dosexe.ld
1 /*
2  * Linker script for an MS-DOS EXE binary; this hard-codes a simple
3  * MZ header without relocations.
4  *
5  * For documentation on the MS-DOS MZ EXE format, see:
6  * http://www.delorie.com/djgpp/doc/exe/
7  */
8
9
10 /* Script for -z combreloc: combine and sort reloc sections */
11 OUTPUT_FORMAT("elf32-i386", "elf32-i386",
12               "elf32-i386")
13 OUTPUT_ARCH(i386)
14 EXTERN(_start)
15 ENTRY(_start)
16
17 SECTIONS
18 {
19         . = 0;
20         /* EXE header, from header.S */
21         .header : {
22                 *(.header)
23         } =0
24
25         . = ALIGN(16);
26         __header_size = .;
27         __payload_lma = .;
28
29         . = 0;
30         .payload : AT (__payload_lma) {
31                  __payload_start = .;
32                  ldlinux_bin.o(.data)
33                  __payload_end = .;
34         }
35         __payload_len = __payload_end - __payload_start;
36         __payload_dwords = __payload_len >> 2;
37
38         . = ALIGN(16);
39         __text_lma = __payload_lma + .;
40         __payload_sseg = (__payload_lma - __text_lma) >> 4;
41         _exe_text_seg  = (__text_lma - __header_size) >> 4;
42
43         . = 0;
44         .text : AT (__text_lma) {
45                 *(.text .stub .text.* .gnu.linkonce.t.*)
46                 *(.gnu.warning)
47         } =0x90909090
48         _etext = .;
49
50         . = ALIGN(16);
51         __rodata_vma = .;
52         .rodata : AT (__rodata_vma + __text_lma) {
53                 *(.rodata .rodata.* .gnu.linkonce.r.*)
54         }
55
56         /* Adjust the address for the data segment.  Avoid mixing code and
57            data within same 128-byte chunk. */
58         . = ALIGN(128);
59         __data_vma = .;
60         .data : AT (__data_vma + __text_lma) {
61                 *(.data .data.* .gnu.linkonce.d.*)
62                 SORT(CONSTRUCTORS)
63         }
64         .data1 : { *(.data1) }
65         _edata = .;
66
67         _exe_edata_low    = ((_edata + __text_lma) & 511);
68         _exe_edata_blocks = ((_edata + __text_lma) + 511) >> 9;
69
70         .bss (NOLOAD) : {
71                 __bss_start = .;
72                 *(.dynbss)
73                 *(.bss .bss.* .gnu.linkonce.b.*)
74                 *(COMMON)
75                 __bss_end = .;
76         }
77
78         . = ALIGN(16);
79         .heap (NOLOAD) : {
80                 __heap_start = .;
81                 *(.heap)
82                 __heap_end = .;
83         }
84
85         . = ALIGN(16);
86         .stack (NOLOAD) : {
87                 __stack_start = .;
88                 *(.stack)
89                 __stack_end = .;
90         }
91         . = ALIGN(16);
92         _end = .;
93
94         _exe_bss_paras = (_end - __bss_start) >> 4;
95
96
97   /* Stabs debugging sections.  */
98   .stab          0 : { *(.stab) }
99   .stabstr       0 : { *(.stabstr) }
100   .stab.excl     0 : { *(.stab.excl) }
101   .stab.exclstr  0 : { *(.stab.exclstr) }
102   .stab.index    0 : { *(.stab.index) }
103   .stab.indexstr 0 : { *(.stab.indexstr) }
104   .comment       0 : { *(.comment) }
105   /* DWARF debug sections.
106      Symbols in the DWARF debugging sections are relative to the beginning
107      of the section so we begin them at 0.  */
108   /* DWARF 1 */
109   .debug          0 : { *(.debug) }
110   .line           0 : { *(.line) }
111   /* GNU DWARF 1 extensions */
112   .debug_srcinfo  0 : { *(.debug_srcinfo) }
113   .debug_sfnames  0 : { *(.debug_sfnames) }
114   /* DWARF 1.1 and DWARF 2 */
115   .debug_aranges  0 : { *(.debug_aranges) }
116   .debug_pubnames 0 : { *(.debug_pubnames) }
117   /* DWARF 2 */
118   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
119   .debug_abbrev   0 : { *(.debug_abbrev) }
120   .debug_line     0 : { *(.debug_line) }
121   .debug_frame    0 : { *(.debug_frame) }
122   .debug_str      0 : { *(.debug_str) }
123   .debug_loc      0 : { *(.debug_loc) }
124   .debug_macinfo  0 : { *(.debug_macinfo) }
125   /* SGI/MIPS DWARF 2 extensions */
126   .debug_weaknames 0 : { *(.debug_weaknames) }
127   .debug_funcnames 0 : { *(.debug_funcnames) }
128   .debug_typenames 0 : { *(.debug_typenames) }
129   .debug_varnames  0 : { *(.debug_varnames) }
130   /DISCARD/ : { *(.note.GNU-stack) }
131 }