This commit was generated by cvs2svn to track changes on a CVS vendor
[deliverable/binutils-gdb.git] / ld / scripttempl / mcorepe.sc
1 # Linker script for MCore PE.
2
3 if test -z "${RELOCATEABLE_OUTPUT_FORMAT}"; then
4 RELOCATEABLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
5 fi
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).
14 if 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$*))'
29 else
30 R_TEXT=
31 R_DATA=
32 R_RDATA=
33 R_IDATA=
34 R_CRT=
35 R_RSRC=
36 fi
37
38 if 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
42 OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
43 "${LITTLE_OUTPUT_FORMAT}")}
44 EOF
45 fi
46
47 cat <<EOF
48 ${LIB_SEARCH_DIRS}
49
50 ENTRY(_mainCRTStartup)
51
52 SECTIONS
53 {
54 .text ${RELOCATING+ __image_base__ + __section_alignment__ } :
55 {
56 ${RELOCATING+ *(.init)}
57 *(.text)
58 ${R_TEXT}
59 *(.glue_7t)
60 *(.glue_7)
61 ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
62 LONG (-1); *(.ctors); *(.ctor); LONG (0); }
63 ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
64 LONG (-1); *(.dtors); *(.dtor); LONG (0); }
65 ${RELOCATING+ *(.fini)}
66 /* ??? Why is .gcc_exc here? */
67 ${RELOCATING+ *(.gcc_exc)}
68 ${RELOCATING+ etext = .;}
69 *(.gcc_except_table)
70 }
71
72 /* The Cygwin32 library uses a section to avoid copying certain data
73 on fork. This used to be named ".data$nocopy". The linker used
74 to include this between __data_start__ and __data_end__, but that
75 breaks building the cygwin32 dll. Instead, we name the section
76 ".data_cygwin_nocopy" and explictly include it after __data_end__. */
77
78 .data ${RELOCATING+BLOCK(__section_alignment__)} :
79 {
80 ${RELOCATING+__data_start__ = . ;}
81 *(.data)
82 *(.data2)
83 ${R_DATA}
84 ${RELOCATING+__data_end__ = . ;}
85 ${RELOCATING+*(.data_cygwin_nocopy)}
86 }
87
88 .bss ${RELOCATING+BLOCK(__section_alignment__)} :
89 {
90 ${RELOCATING+__bss_start__ = . ;}
91 *(.bss)
92 *(COMMON)
93 ${RELOCATING+__bss_end__ = . ;}
94 }
95
96 .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
97 {
98 *(.rdata)
99 ${R_RDATA}
100 *(.eh_frame)
101 }
102
103 .edata ${RELOCATING+BLOCK(__section_alignment__)} :
104 {
105 *(.edata)
106 }
107
108 /DISCARD/ :
109 {
110 *(.debug\$S)
111 *(.debug\$T)
112 *(.debug\$F)
113 *(.drectve)
114 }
115
116 .idata ${RELOCATING+BLOCK(__section_alignment__)} :
117 {
118 /* This cannot currently be handled with grouped sections.
119 See pe.em:sort_sections. */
120 ${R_IDATA}
121 }
122 .CRT ${RELOCATING+BLOCK(__section_alignment__)} :
123 {
124 ${R_CRT}
125 }
126
127 .endjunk ${RELOCATING+BLOCK(__section_alignment__)} :
128 {
129 /* end is deprecated, don't use it */
130 ${RELOCATING+ end = .;}
131 ${RELOCATING+ _end = .;}
132 ${RELOCATING+ __end__ = .;}
133 }
134
135 .reloc ${RELOCATING+BLOCK(__section_alignment__)} :
136 {
137 *(.reloc)
138 }
139
140 .rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
141 {
142 *(.rsrc)
143 ${R_RSRC}
144 }
145
146 .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
147 {
148 [ .stab ]
149 }
150
151 .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
152 {
153 [ .stabstr ]
154 }
155
156 .stack 0x80000 :
157 {
158 _stack = .;
159 *(.stack)
160 }
161 }
162 EOF
This page took 0.064916 seconds and 5 git commands to generate.