pxe, tftp: Unify UDP send and use pbuf memory
[syslinux.git] / dos / dosexe.ld
blob76bfc7581024489659a26594a70c4ad0fc5d9a02
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  */
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)
17 SECTIONS
19         . = 0;
20         /* EXE header, from header.S */
21         .header : {
22                 *(.header)
23         } =0
25         . = ALIGN(16);
26         __header_size = .;
27         __payload_lma = .;
29         . = 0x100000000 - syslinux_ldlinux_size;
30         .payload : AT (__payload_lma) {
31                  __payload_start = .;
32                  *(.payload)
33                  __payload_end = .;
34         }
35         __payload_len = ABSOLUTE(__payload_end) - ABSOLUTE(__payload_start);
36         __payload_dwords = __payload_len >> 2;
38         __text_lma = __payload_lma + syslinux_ldlinux_size;
39         __payload_sseg = (__payload_lma - __text_lma) >> 4;
40         _exe_text_seg  = (__text_lma - __header_size) >> 4;
43  *      __assert1 = ASSERT((__payload_len == syslinux_ldlinux_size),
44  *      "syslinux_ldlinux_size must equal the size of .payload");
45  */
46         . = 0;
47         .text : AT (__text_lma) {
48                 *(.text .stub .text.* .gnu.linkonce.t.*)
49                 *(.gnu.warning)
50         } =0x90909090
51         _etext = .;
53         . = ALIGN(16);
54         __rodata_vma = .;
55         .rodata : AT (__rodata_vma + __text_lma) {
56                 *(.rodata .rodata.* .gnu.linkonce.r.*)
57         }
59         /* Adjust the address for the data segment.  Avoid mixing code and
60            data within same 128-byte chunk. */
61         . = ALIGN(128);
62         __data_vma = .;
63         .data : AT (__data_vma + __text_lma) {
64                 *(.data .data.* .gnu.linkonce.d.*)
65                 SORT(CONSTRUCTORS)
66         }
67         .data1 : { *(.data1) }
68         _edata = .;
70         _exe_edata_low    = ((_edata + __text_lma) & 511);
71         _exe_edata_blocks = ((_edata + __text_lma) + 511) >> 9;
73         .bss (NOLOAD) : {
74                 __bss_start = .;
75                 *(.dynbss)
76                 *(.bss .bss.* .gnu.linkonce.b.*)
77                 *(COMMON)
78                 __bss_end = .;
79         }
81         . = ALIGN(16);
82         .heap (NOLOAD) : {
83                 __heap_start = .;
84                 *(.heap)
85                 __heap_end = .;
86         }
88         . = ALIGN(16);
89         .stack (NOLOAD) : {
90                 __stack_start = .;
91                 *(.stack)
92                 __stack_end = .;
93         }
94         . = ALIGN(16);
95         _end = .;
97         _exe_bss_paras = (_end - __bss_start) >> 4;
100   /* Stabs debugging sections.  */
101   .stab          0 : { *(.stab) }
102   .stabstr       0 : { *(.stabstr) }
103   .stab.excl     0 : { *(.stab.excl) }
104   .stab.exclstr  0 : { *(.stab.exclstr) }
105   .stab.index    0 : { *(.stab.index) }
106   .stab.indexstr 0 : { *(.stab.indexstr) }
107   .comment       0 : { *(.comment) }
108   /* DWARF debug sections.
109      Symbols in the DWARF debugging sections are relative to the beginning
110      of the section so we begin them at 0.  */
111   /* DWARF 1 */
112   .debug          0 : { *(.debug) }
113   .line           0 : { *(.line) }
114   /* GNU DWARF 1 extensions */
115   .debug_srcinfo  0 : { *(.debug_srcinfo) }
116   .debug_sfnames  0 : { *(.debug_sfnames) }
117   /* DWARF 1.1 and DWARF 2 */
118   .debug_aranges  0 : { *(.debug_aranges) }
119   .debug_pubnames 0 : { *(.debug_pubnames) }
120   /* DWARF 2 */
121   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
122   .debug_abbrev   0 : { *(.debug_abbrev) }
123   .debug_line     0 : { *(.debug_line) }
124   .debug_frame    0 : { *(.debug_frame) }
125   .debug_str      0 : { *(.debug_str) }
126   .debug_loc      0 : { *(.debug_loc) }
127   .debug_macinfo  0 : { *(.debug_macinfo) }
128   /* SGI/MIPS DWARF 2 extensions */
129   .debug_weaknames 0 : { *(.debug_weaknames) }
130   .debug_funcnames 0 : { *(.debug_funcnames) }
131   .debug_typenames 0 : { *(.debug_typenames) }
132   .debug_varnames  0 : { *(.debug_varnames) }
133   /DISCARD/ : { *(.note.GNU-stack) }