1# Copyright 2002, 2004, 2006 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 2 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 17if {![istarget "i*86-*-*"] && ![istarget "x86_64-*-mingw*"] } { 18 return 19} 20 21if {![istarget "i*86-*-*pe*"] \ 22 && ![istarget "i*86-*-cygwin*"] \ 23 && ![istarget "i*86-*-mingw32*"] \ 24 && ![istarget "x86_64-*-mingw*"] } { 25 set target_xfail "yes" 26} else { 27 set target_xfail "no" 28} 29 30if {![info exists DLLTOOL]} then { 31 return 32} 33 34if {[which $DLLTOOL] == 0} then { 35 return 36} 37 38verbose "$DLLTOOL -d $srcdir/$subdir/fastcall.def" 1 39catch "exec $DLLTOOL -d $srcdir/$subdir/fastcall.def" err 40 41if ![string match "" $err] then { 42 send_log "$err\n" 43 verbose "$err" 1 44 fail "dlltool (fastcall export)" 45} else { 46 pass "dlltool (fastcall export)" 47} 48 49if { "$target_xfail" == "yes" } { 50 setup_xfail *-* 51} 52 53verbose "$DLLTOOL -p prefix -l tmpdir/libalias.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" 1 54catch "exec $DLLTOOL -p prefix -l tmpdir/libalias.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" err 55 56if ![string match "" $err] then { 57 send_log "$err\n" 58 verbose "$err" 1 59 fail "dlltool -p (execution)" 60 continue 61} 62 63pass "dlltool -p (execution)" 64 65set got [binutils_run $NM "tmpdir/libalias.a"] 66set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol" 67 68if [regexp $want $got] then { 69 pass "dlltool -p (symbol names)" 70} else { 71 fail "dlltool -p (symbol names)" 72} 73 74set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias.a"] 75set want "(Contents of section .idata\\\$6:.*\\.\\.symbol\\.\\..*){2,2}" 76 77if [regexp $want $got] then { 78 pass "dlltool -p (import name)" 79} else { 80 fail "dlltool -p (import name)" 81} 82