blob: 4000ed729ed3dabc9001fba96558dcbb41c08718 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/*
* Linker script for COM32 binaries using libcom32
*/
/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
"elf32-i386")
OUTPUT_ARCH(i386)
EXTERN(_start)
ENTRY(_start)
SECTIONS
{
/* Read-only sections, merged into text segment: */
. = 0;
HIDDEN (__executable_start = .);
HIDDEN (_stext = .);
.init :
{
KEEP (*(.init))
} =0x90909090
.text :
{
*(.text .stub .text.* .gnu.linkonce.t.*)
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
} =0x90909090
.fini :
{
KEEP (*(.fini))
} =0x90909090
HIDDEN (_etext = .);
HIDDEN( __rodata_start = .);
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.rodata1 : { *(.rodata1) }
HIDDEN(__rodata_end = .);
/*
* The difference betwee .ctors/.dtors and .init_array/.fini_array
* is the ordering, but we don't use prioritization for libcom32, so
* just lump them all together and hope that's okay.
*/
. = ALIGN(4);
.ctors : {
HIDDEN(__ctors_start = .);
KEEP (*(SORT(.preinit_array*)))
KEEP (*(SORT(.init_array*)))
KEEP (*(SORT(.ctors*)))
HIDDEN(__ctors_end = .);
}
.dtors : {
HIDDEN(__dtors_start = .);
KEEP (*(SORT(.fini_array*)))
KEEP (*(SORT(.dtors*)))
HIDDEN(__dtors_end = .);
}
.got : {
HIDDEN(__got_start = .);
KEEP (*(.got.plt))
KEEP (*(.got))
HIDDEN(__got_end = .);
}
/* Adjust the address for the data segment. Avoid mixing code and
data within same 128-byte chunk. */
. = ALIGN(128);
.data :
{
HIDDEN(_sdata = .);
KEEP(*(.data .data.* .gnu.linkonce.d.*))
SORT(CONSTRUCTORS)
*(.data1)
. = ALIGN(4);
HIDDEN(_edata = .);
}
HIDDEN(__bss_start = .);
.bss :
{
*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)
/* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections. */
. = ALIGN(4);
}
. = ALIGN(4);
HIDDEN(_end = .);
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
/DISCARD/ : { *(.note.GNU-stack) }
}
|