blob: 598690f22b28f918c73af6e87903728d911f222f (
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
|
OUTPUT_FORMAT(pei-i386)
SECTIONS
{
.text __image_base__ + __section_alignment__ :
{
*(.init)
*(.text)
*(SORT(.text$*))
*(.glue_7t)
*(.glue_7)
___CTOR_LIST__ = .; __CTOR_LIST__ = .;
LONG (-1); *(SORT(.ctors.*)); *(.ctors); *(.ctor); LONG (0);
___DTOR_LIST__ = .; __DTOR_LIST__ = .;
LONG (-1); *(SORT(.dtors.*)); *(.dtors); *(.dtor); LONG (0);
*(.fini)
/* ??? Why is .gcc_exc here? */
*(.gcc_exc)
etext = .;
*(.gcc_except_table)
}
.autoload_text ALIGN(__section_alignment__) :
{
*(.*_text);
}
/* The Cygwin DLL uses a section to avoid copying certain data
on fork. This used to be named ".data". The linker used
to include this between __data_start__ and __data_end__, but that
breaks building the cygwin32 dll. Instead, we name the section
".data_cygwin_nocopy" and explictly include it after __data_end__. */
.data ALIGN(__section_alignment__) :
{
__data_start__ = .;
*(.data)
*(.data2)
*(SORT(.data$*))
__data_end__ = .;
*(.data_cygwin_nocopy)
}
.rdata ALIGN(__section_alignment__) :
{
*(.rdata)
*(SORT(.rdata$*))
*(.eh_frame)
}
.pdata ALIGN(__section_alignment__) :
{
*(.pdata)
}
.bss ALIGN(__section_alignment__) :
{
__bss_start__ = .;
*(.bss)
*(COMMON)
__bss_end__ = .;
}
.edata ALIGN(__section_alignment__) :
{
*(.edata)
}
.rsrc BLOCK(__section_alignment__) :
{
*(.rsrc)
*(SORT(.rsrc$*))
}
.reloc BLOCK(__section_alignment__) :
{
*(.reloc)
}
.idata ALIGN(__section_alignment__) :
{
/* This cannot currently be handled with grouped sections.
See pe.em:sort_sections. */
SORT(*)(.idata$2)
SORT(*)(.idata$3)
/* These zeroes mark the end of the import list. */
LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
SORT(*)(.idata$4)
SORT(*)(.idata$5)
SORT(*)(.idata$6)
SORT(*)(.idata$7)
. = ALIGN(16);
__cygheap_start = ABSOLUTE(.);
}
.cygwin_dll_common ALIGN(__section_alignment__):
{
*(.cygwin_dll_common)
}
.cygheap ALIGN(__section_alignment__):
{
__cygheap_mid = .;
*(.cygheap)
. = ALIGN(512 * 1024, 0x10000);
. += 8192; /* inexplicably needed for alignment on 64K boundary?!? */
}
__cygheap_end = ABSOLUTE(.);
__cygheap_end1 = __cygheap_mid + SIZEOF(.cygheap);
/DISCARD/ :
{
*(.debug$S)
*(.debug$T)
*(.debug$F)
*(.drectve)
}
.stab ALIGN(__section_alignment__) (NOLOAD) :
{
*(.stab)
}
.stabstr ALIGN(__section_alignment__) (NOLOAD) :
{
*(.stabstr)
}
/* DWARF 1.1 and DWARF 2 */
.debug_aranges ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_aranges) }
.debug_pubnames ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_info) }
.debug_abbrev ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_abbrev) }
.debug_line ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_line) }
.debug_frame ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_frame) }
.debug_str ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_str) }
.debug_loc ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_loc) }
.debug_macinfo ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) }
.debug_macinfo ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) }
.debug_ranges ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_ranges) }
}
|