2010-04-27 Kai Tietz <kai.tietz@onevision.com>
[deliverable/binutils-gdb.git] / binutils / testsuite / binutils-all / dlltool.exp
1 # Copyright 2002, 2004, 2006, 2007, 2009 Free Software Foundation, Inc.
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
16
17 if {![istarget "i*86-*-*"] && ![istarget "x86_64-*-mingw*"] && ![istarget "arm-*-pe*]} {
18 return
19 }
20
21 if {![istarget "i*86-*-*pe*"] \
22 && ![istarget "i*86-*-cygwin*"] \
23 && ![istarget "i*86-*-mingw32*"] \
24 && ![istarget "arm-*-pe*"] \
25 && ![istarget "x86_64-*-mingw*"] } {
26 set target_xfail "yes"
27 } else {
28 set target_xfail "no"
29 }
30
31 if {![info exists DLLTOOL]} then {
32 return
33 }
34
35 if {[which $DLLTOOL] == 0} then {
36 return
37 }
38
39 verbose "$DLLTOOL --leading-underscore -d $srcdir/$subdir/fastcall.def" 1
40 catch "exec $DLLTOOL --leading-underscore -d $srcdir/$subdir/fastcall.def" err
41
42 if ![string match "" $err] then {
43 send_log "$err\n"
44 verbose "$err" 1
45 fail "dlltool (fastcall export)"
46 } else {
47 pass "dlltool (fastcall export)"
48 }
49
50 if { "$target_xfail" == "yes" } {
51 setup_xfail *-*
52 }
53
54 verbose "$DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" 1
55 catch "exec $DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" err
56
57 if ![string match "" $err] then {
58 send_log "$err\n"
59 verbose "$err" 1
60 fail "dlltool -p (execution)"
61 continue
62 }
63
64 pass "dlltool -p (execution)"
65
66 set got [binutils_run $NM "tmpdir/libalias.a"]
67 set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol"
68
69 if [regexp $want $got] then {
70 pass "dlltool -p (symbol names)"
71 } else {
72 fail "dlltool -p (symbol names)"
73 }
74
75 set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias.a"]
76 set want "(Contents of section .idata\\\$6:.*\\.\\.symbol\\.\\..*){2,2}"
77
78 if [regexp $want $got] then {
79 pass "dlltool -p (import name)"
80 } else {
81 fail "dlltool -p (import name)"
82 }
83
84 verbose "$DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" 1
85 catch "exec $DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" err
86
87 if ![string match "" $err] then {
88 send_log "$err\n"
89 verbose "$err" 1
90 fail "dlltool -p (execution) alias-2.def"
91 continue
92 }
93
94 pass "dlltool -p (execution) alias-2.def"
95
96 set got [binutils_run $NM "tmpdir/libalias2.a"]
97 set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol"
98
99 if [regexp $want $got] then {
100 pass "dlltool -p (symbol names) alias-2.def"
101 } else {
102 fail "dlltool -p (symbol names) alias-2.def"
103 }
104
105 set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias2.a"]
106 set want "(Contents of section .idata\\\$6:.*\\.\\.something\\..*){2,2}"
107
108 if [regexp $want $got] then {
109 pass "dlltool -p (import name) alias-2.def"
110 } else {
111 fail "dlltool -p (import name) alias-2.def"
112 }
113
114 # Here we test explicit without leading underscore
115
116 verbose "$DLLTOOL --no-leading-underscore -d $srcdir/$subdir/fastcall.def" 1
117 catch "exec $DLLTOOL --no-leading-underscore -d $srcdir/$subdir/fastcall.def" err
118
119 if ![string match "" $err] then {
120 send_log "$err\n"
121 verbose "$err" 1
122 fail "dlltool (fastcall export no leading underscore)"
123 } else {
124 pass "dlltool (fastcall export no leading underscore)"
125 }
126
127 if { "$target_xfail" == "yes" } {
128 setup_xfail *-*
129 }
130
131 verbose "$DLLTOOL --no-leading-underscore -p prefix -l tmpdir/libalias_nu.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" 1
132 catch "exec $DLLTOOL --no-leading-underscore -p prefix -l tmpdir/libalias_nu.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" err
133
134 if ![string match "" $err] then {
135 send_log "$err\n"
136 verbose "$err" 1
137 fail "dlltool -p (execution no leading underscore)"
138 continue
139 }
140
141 pass "dlltool -p (execution no leading underscore)"
142
143 set got [binutils_run $NM "tmpdir/libalias_nu.a"]
144 set want "00000000 I __imp_prefixsymbol.*00000000 T prefixsymbol.*00000000 I __imp_symbol.*00000000 T symbol"
145
146 if [regexp $want $got] then {
147 pass "dlltool -p (symbol names no leading underscore)"
148 } else {
149 fail "dlltool -p (symbol names no leading underscore)"
150 }
151
152 set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias_nu.a"]
153 set want "(Contents of section .idata\\\$6:.*\\.\\.symbol\\.\\..*){2,2}"
154
155 if [regexp $want $got] then {
156 pass "dlltool -p (import name no leading underscore)"
157 } else {
158 fail "dlltool -p (import name no leading underscore)"
159 }
160
161 verbose "$DLLTOOL --no-leading-underscore -p prefix -l tmpdir/libalias_nu2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" 1
162 catch "exec $DLLTOOL --no-leading-underscore -p prefix -l tmpdir/libalias_nu2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" err
163
164 if ![string match "" $err] then {
165 send_log "$err\n"
166 verbose "$err" 1
167 fail "dlltool -p (execution no leading underscore) alias-2.def"
168 continue
169 }
170
171 pass "dlltool -p (execution no leading underscore) alias-2.def"
172
173 set got [binutils_run $NM "tmpdir/libalias_nu2.a"]
174 set want "00000000 I __imp_prefixsymbol.*00000000 T prefixsymbol.*00000000 I __imp_symbol.*00000000 T symbol"
175
176 if [regexp $want $got] then {
177 pass "dlltool -p (symbol names no leading underscore) alias-2.def"
178 } else {
179 fail "dlltool -p (symbol names no leading underscore) alias-2.def"
180 }
181
182 set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias_nu2.a"]
183 set want "(Contents of section .idata\\\$6:.*\\.\\.something\\..*){2,2}"
184
185 if [regexp $want $got] then {
186 pass "dlltool -p (import name no leading underscore) alias-2.def"
187 } else {
188 fail "dlltool -p (import name no leading underscore) alias-2.def"
189 }
190
191 # Now we test with leading underscore
192 verbose "$DLLTOOL --leading-underscore -d $srcdir/$subdir/fastcall.def" 1
193 catch "exec $DLLTOOL --leading-underscore -d $srcdir/$subdir/fastcall.def" err
194
195 if ![string match "" $err] then {
196 send_log "$err\n"
197 verbose "$err" 1
198 fail "dlltool (fastcall export leading underscore)"
199 } else {
200 pass "dlltool (fastcall export leading underscore)"
201 }
202
203 if { "$target_xfail" == "yes" } {
204 setup_xfail *-*
205 }
206
207 verbose "$DLLTOOL --leading-underscore -p prefix -l tmpdir/libalias_u.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" 1
208 catch "exec $DLLTOOL --leading-underscore -p prefix -l tmpdir/libalias_u.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" err
209
210 if ![string match "" $err] then {
211 send_log "$err\n"
212 verbose "$err" 1
213 fail "dlltool -p (execution leading underscore)"
214 continue
215 }
216
217 pass "dlltool -p (execution leading-underscore)"
218
219 set got [binutils_run $NM "tmpdir/libalias_u.a"]
220 set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol"
221
222 if [regexp $want $got] then {
223 pass "dlltool -p (symbol names leading underscore)"
224 } else {
225 fail "dlltool -p (symbol names leading underscore)"
226 }
227
228 set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias_u.a"]
229 set want "(Contents of section .idata\\\$6:.*\\.\\.symbol\\..*){2,2}"
230
231 if [regexp $want $got] then {
232 pass "dlltool -p (import name leading underscore)"
233 } else {
234 fail "dlltool -p (import name leading underscore)"
235 }
236
237 verbose "$DLLTOOL --leading-underscore -p prefix -l tmpdir/libalias_u2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" 1
238 catch "exec $DLLTOOL --leading-underscore -p prefix -l tmpdir/libalias_u2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" err
239
240 if ![string match "" $err] then {
241 send_log "$err\n"
242 verbose "$err" 1
243 fail "dlltool -p (execution) alias-2.def"
244 continue
245 }
246
247 pass "dlltool -p (execution leading underscore) alias-2.def"
248
249 set got [binutils_run $NM "tmpdir/libalias_u2.a"]
250 set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol"
251
252 if [regexp $want $got] then {
253 pass "dlltool -p (symbol names leading underscore) alias-2.def"
254 } else {
255 fail "dlltool -p (symbol names leading underscore) alias-2.def"
256 }
257
258 set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias_u2.a"]
259 set want "(Contents of section .idata\\\$6:.*\\.\\.something\\..*){2,2}"
260
261 if [regexp $want $got] then {
262 pass "dlltool -p (import name leading underscore) alias-2.def"
263 } else {
264 fail "dlltool -p (import name leading underscore) alias-2.def"
265 }
This page took 0.051006 seconds and 4 git commands to generate.