]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - ld/scripttempl/mcorepe.sc
* config/tc-i386.c (i386_target_format): Avoid duplicate case label.
[thirdparty/binutils-gdb.git] / ld / scripttempl / mcorepe.sc
CommitLineData
bb3596ae 1# Linker script for MCore PE.
252b5132
RH
2
3if test -z "${RELOCATEABLE_OUTPUT_FORMAT}"; then
4 RELOCATEABLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
5fi
6
7# We can't easily and portably get an unquoted $ in a shell
8# substitution, so we do this instead.
9# Sorting of the .foo$* sections is required by the definition of
10# grouped sections in PE.
11# Sorting of the file names in R_IDATA is required by the
12# current implementation of dlltool (this could probably be changed to
13# use grouped sections instead).
14if test "${RELOCATING}"; then
15 R_TEXT='*(SORT(.text$*))'
16 R_DATA='*(SORT(.data$*))'
17 R_RDATA='*(SORT(.rdata$*))'
18 R_IDATA='
19 SORT(*)(.idata$2)
20 SORT(*)(.idata$3)
21 /* These zeroes mark the end of the import list. */
22 LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
23 SORT(*)(.idata$4)
24 SORT(*)(.idata$5)
25 SORT(*)(.idata$6)
26 SORT(*)(.idata$7)'
27 R_CRT='*(SORT(.CRT$*))'
28 R_RSRC='*(SORT(.rsrc$*))'
29else
30 R_TEXT=
31 R_DATA=
32 R_RDATA=
33 R_IDATA=
34 R_CRT=
35 R_RSRC=
36fi
37
7a274639
NC
38if test "$RELOCATING"; then
39 # Can't use ${RELOCATING+blah "blah" blah} for this,
40 # because bash 2.x will lose the doublequotes.
41 cat <<EOF
42OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
0811443a 43 "${LITTLE_OUTPUT_FORMAT}")
7a274639
NC
44EOF
45fi
46
47cat <<EOF
252b5132
RH
48${LIB_SEARCH_DIRS}
49
50ENTRY(_mainCRTStartup)
51
52SECTIONS
53{
54 .text ${RELOCATING+ __image_base__ + __section_alignment__ } :
55 {
56 ${RELOCATING+ *(.init)}
57 *(.text)
58 ${R_TEXT}
032f3e01 59 ${RELOCATING+ *(.text.*)}
252b5132
RH
60 *(.glue_7t)
61 *(.glue_7)
62 ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
63 LONG (-1); *(.ctors); *(.ctor); LONG (0); }
64 ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
65 LONG (-1); *(.dtors); *(.dtor); LONG (0); }
66 ${RELOCATING+ *(.fini)}
67 /* ??? Why is .gcc_exc here? */
68 ${RELOCATING+ *(.gcc_exc)}
69 ${RELOCATING+ etext = .;}
70 *(.gcc_except_table)
71 }
72
73 /* The Cygwin32 library uses a section to avoid copying certain data
74 on fork. This used to be named ".data$nocopy". The linker used
75 to include this between __data_start__ and __data_end__, but that
76 breaks building the cygwin32 dll. Instead, we name the section
77 ".data_cygwin_nocopy" and explictly include it after __data_end__. */
78
79 .data ${RELOCATING+BLOCK(__section_alignment__)} :
80 {
81 ${RELOCATING+__data_start__ = . ;}
82 *(.data)
83 *(.data2)
84 ${R_DATA}
85 ${RELOCATING+__data_end__ = . ;}
86 ${RELOCATING+*(.data_cygwin_nocopy)}
87 }
88
89 .bss ${RELOCATING+BLOCK(__section_alignment__)} :
90 {
91 ${RELOCATING+__bss_start__ = . ;}
92 *(.bss)
93 *(COMMON)
94 ${RELOCATING+__bss_end__ = . ;}
95 }
96
97 .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
98 {
99 *(.rdata)
100 ${R_RDATA}
101 *(.eh_frame)
102 }
103
104 .edata ${RELOCATING+BLOCK(__section_alignment__)} :
105 {
106 *(.edata)
107 }
108
109 /DISCARD/ :
110 {
111 *(.debug\$S)
112 *(.debug\$T)
113 *(.debug\$F)
114 *(.drectve)
115 }
116
117 .idata ${RELOCATING+BLOCK(__section_alignment__)} :
118 {
119 /* This cannot currently be handled with grouped sections.
120 See pe.em:sort_sections. */
121 ${R_IDATA}
122 }
123 .CRT ${RELOCATING+BLOCK(__section_alignment__)} :
124 {
125 ${R_CRT}
126 }
127
128 .endjunk ${RELOCATING+BLOCK(__section_alignment__)} :
129 {
130 /* end is deprecated, don't use it */
131 ${RELOCATING+ end = .;}
132 ${RELOCATING+ _end = .;}
133 ${RELOCATING+ __end__ = .;}
134 }
135
136 .reloc ${RELOCATING+BLOCK(__section_alignment__)} :
137 {
138 *(.reloc)
139 }
140
141 .rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
142 {
143 *(.rsrc)
144 ${R_RSRC}
145 }
146
147 .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
148 {
149 [ .stab ]
150 }
151
152 .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
153 {
154 [ .stabstr ]
155 }
156
157 .stack 0x80000 :
158 {
159 _stack = .;
160 *(.stack)
161 }
162}
163EOF