|
|
1.1 root 1: /*
2: * Linker script for ROM16 binaries
3: */
4:
5: /* Script for -z combreloc: combine and sort reloc sections */
6: OUTPUT_FORMAT("elf32-i386", "elf32-i386",
7: "elf32-i386")
8: OUTPUT_ARCH(i386)
9: EXTERN(_start)
10: ENTRY(_start)
11: SECTIONS
12: {
13: /* Read-only sections, merged into text segment: */
14: . = 0x0;
15: PROVIDE (__executable_start = .);
16:
17: .init :
18: {
19: KEEP (*(.init))
20: } =0x90909090
21: .text :
22: {
23: *(.text .stub .text.* .gnu.linkonce.t.*)
24: /* .gnu.warning sections are handled specially by elf32.em. */
25: *(.gnu.warning)
26: } =0x90909090
27: .fini :
28: {
29: KEEP (*(.fini))
30: } =0x90909090
31: PROVIDE (__etext = .);
32: PROVIDE (_etext = .);
33: PROVIDE (etext = .);
34: .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
35: .rodata1 : { *(.rodata1) }
36:
37: /* Ensure the __preinit_array_start label is properly aligned. We
38: could instead move the label definition inside the section, but
39: the linker would then create the section even if it turns out to
40: be empty, which isn't pretty. */
41: . = ALIGN(4);
42: PROVIDE (__preinit_array_start = .);
43: .preinit_array : { *(.preinit_array) }
44: PROVIDE (__preinit_array_end = .);
45: PROVIDE (__init_array_start = .);
46: .init_array : { *(.init_array) }
47: PROVIDE (__init_array_end = .);
48: PROVIDE (__fini_array_start = .);
49: .fini_array : { *(.fini_array) }
50: PROVIDE (__fini_array_end = .);
51: PROVIDE (__ctors_start = .);
52: .ctors :
53: {
54: KEEP (*(SORT(.ctors.*)))
55: KEEP (*(.ctors))
56: }
57: PROVIDE (__ctors_end = .);
58: PROVIDE (__dtors_start = .);
59: .dtors :
60: {
61: KEEP (*(SORT(.dtors.*)))
62: KEEP (*(.dtors))
63: }
64: PROVIDE (__dtors_end = .);
65:
66: /* Adjust the address for the data segment. Avoid mixing code and
67: data within same 128-byte chunk. */
68: . = ALIGN(128);
69:
70: .data :
71: {
72: *(.data .data.* .gnu.linkonce.d.*)
73: SORT(CONSTRUCTORS)
74: }
75: .data1 : { *(.data1) }
76: _edata = .;
77: PROVIDE (edata = .);
78: __bss_start = .;
79: .bss :
80: {
81: *(.dynbss)
82: *(.bss .bss.* .gnu.linkonce.b.*)
83: *(COMMON)
84: /* Align here to ensure that the .bss section occupies space up to
85: _end. Align after .bss to ensure correct alignment even if the
86: .bss section disappears because there are no input sections. */
87: . = ALIGN(32 / 8);
88: }
89: .csum :
90: {
91: . = ALIGN(2048) - 5;
92: LONG(0xff4c494e);
93: /* BYTE(_rom_size_byte); */
94: } =0xffffffff
95: _end = .;
96: PROVIDE (end = .);
97: PROVIDE(_rom_size_byte = (511 + end) / 512);
98:
99: /* Stabs debugging sections. */
100: .stab 0 : { *(.stab) }
101: .stabstr 0 : { *(.stabstr) }
102: .stab.excl 0 : { *(.stab.excl) }
103: .stab.exclstr 0 : { *(.stab.exclstr) }
104: .stab.index 0 : { *(.stab.index) }
105: .stab.indexstr 0 : { *(.stab.indexstr) }
106: .comment 0 : { *(.comment) }
107: /* DWARF debug sections.
108: Symbols in the DWARF debugging sections are relative to the beginning
109: of the section so we begin them at 0. */
110: /* DWARF 1 */
111: .debug 0 : { *(.debug) }
112: .line 0 : { *(.line) }
113: /* GNU DWARF 1 extensions */
114: .debug_srcinfo 0 : { *(.debug_srcinfo) }
115: .debug_sfnames 0 : { *(.debug_sfnames) }
116: /* DWARF 1.1 and DWARF 2 */
117: .debug_aranges 0 : { *(.debug_aranges) }
118: .debug_pubnames 0 : { *(.debug_pubnames) }
119: /* DWARF 2 */
120: .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
121: .debug_abbrev 0 : { *(.debug_abbrev) }
122: .debug_line 0 : { *(.debug_line) }
123: .debug_frame 0 : { *(.debug_frame) }
124: .debug_str 0 : { *(.debug_str) }
125: .debug_loc 0 : { *(.debug_loc) }
126: .debug_macinfo 0 : { *(.debug_macinfo) }
127: /* SGI/MIPS DWARF 2 extensions */
128: .debug_weaknames 0 : { *(.debug_weaknames) }
129: .debug_funcnames 0 : { *(.debug_funcnames) }
130: .debug_typenames 0 : { *(.debug_typenames) }
131: .debug_varnames 0 : { *(.debug_varnames) }
132: /DISCARD/ : { *(.note.GNU-stack) }
133: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.