* config/default.exp (WINDRES): Add.
authorDJ Delorie <dj@redhat.com>
Wed, 18 Jul 2001 23:56:41 +0000 (23:56 +0000)
committerDJ Delorie <dj@redhat.com>
Wed, 18 Jul 2001 23:56:41 +0000 (23:56 +0000)
* binutils-all/windres/windres.exp: New.
* binutils-all/windres/README: New.
* binutils-all/windres/bmp1.bmp: New.
* binutils-all/windres/bmpalign.rc: New.
* binutils-all/windres/bmpalign.rsd: New.
* binutils-all/windres/lang.rc: New.
* binutils-all/windres/lang.rsd: New.
* binutils-all/windres/msupdate: New.
* binutils-all/windres/strtab1.rc: New.
* binutils-all/windres/strtab1.rsd: New.

12 files changed:
binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/windres/README [new file with mode: 0644]
binutils/testsuite/binutils-all/windres/bmp1.bmp [new file with mode: 0644]
binutils/testsuite/binutils-all/windres/bmpalign.rc [new file with mode: 0644]
binutils/testsuite/binutils-all/windres/bmpalign.rsd [new file with mode: 0644]
binutils/testsuite/binutils-all/windres/lang.rc [new file with mode: 0644]
binutils/testsuite/binutils-all/windres/lang.rsd [new file with mode: 0644]
binutils/testsuite/binutils-all/windres/msupdate [new file with mode: 0755]
binutils/testsuite/binutils-all/windres/strtab1.rc [new file with mode: 0644]
binutils/testsuite/binutils-all/windres/strtab1.rsd [new file with mode: 0644]
binutils/testsuite/binutils-all/windres/windres.exp [new file with mode: 0644]
binutils/testsuite/config/default.exp

index d7630eb..0f0fef4 100644 (file)
@@ -1,3 +1,17 @@
+2001-07-18  DJ Delorie  <dj@redhat.com>
+
+       * config/default.exp (WINDRES): Add.
+       * binutils-all/windres/windres.exp: New.
+       * binutils-all/windres/README: New.
+       * binutils-all/windres/bmp1.bmp: New.
+       * binutils-all/windres/bmpalign.rc: New.
+       * binutils-all/windres/bmpalign.rsd: New.
+       * binutils-all/windres/lang.rc: New.
+       * binutils-all/windres/lang.rsd: New.
+       * binutils-all/windres/msupdate: New.
+       * binutils-all/windres/strtab1.rc: New.
+       * binutils-all/windres/strtab1.rsd: New.
+
 2001-07-05  Ben Elliston  <bje@redhat.com>
 
        * lib/utils-lib.exp (target_assemble): Remove duplicate copy.
diff --git a/binutils/testsuite/binutils-all/windres/README b/binutils/testsuite/binutils-all/windres/README
new file mode 100644 (file)
index 0000000..f990349
--- /dev/null
@@ -0,0 +1,26 @@
+Instructions for adding tests:
+
+The files *.rc are hand-edited or copied from elsewhere.
+
+The script msupdate is used to generate the *.rsd files, which are
+dumps of the RES formatted output of MSVC's RC utility.
+
+Within the *.rc file, the first N lines beginning with a special
+comment can control the test.  Comments are // /* or # (// is
+recommended, as both rc and windres support those).  Each line
+contains one command:
+
+       // parse-only
+       // xfail *-*-*
+
+parse-only must preceed any xfail commands, and indicates that a
+comparison with the *.rsd file will not happen.  xfail indicates when
+a failure is expected.  This should only be used for when you are
+adding a new test that is known to fail because of a bug in windres,
+and it should be removed when the bug is fixed.
+
+You can use pfail or cfail instead of xfail to indicate that only the
+parsing or comparing should be xfailed.
+
+The windres tests only run for ix86 targets, because the
+MSVC-generated *.rsd files are generated for that.
diff --git a/binutils/testsuite/binutils-all/windres/bmp1.bmp b/binutils/testsuite/binutils-all/windres/bmp1.bmp
new file mode 100644 (file)
index 0000000..208a8aa
Binary files /dev/null and b/binutils/testsuite/binutils-all/windres/bmp1.bmp differ
diff --git a/binutils/testsuite/binutils-all/windres/bmpalign.rc b/binutils/testsuite/binutils-all/windres/bmpalign.rc
new file mode 100644 (file)
index 0000000..7cb5583
--- /dev/null
@@ -0,0 +1,9 @@
+LANGUAGE 0, 0
+A BITMAP MOVEABLE PURE DISCARDABLE "bmp1.bmp"
+AB BITMAP MOVEABLE PURE DISCARDABLE "bmp1.bmp"
+ABC BITMAP MOVEABLE PURE DISCARDABLE "bmp1.bmp"
+
+ABCD BITMAP MOVEABLE PURE DISCARDABLE "bmp1.bmp"
diff --git a/binutils/testsuite/binutils-all/windres/bmpalign.rsd b/binutils/testsuite/binutils-all/windres/bmpalign.rsd
new file mode 100644 (file)
index 0000000..3ee5396
--- /dev/null
@@ -0,0 +1,38 @@
+ 0000 00000000 20000000 ffff0000 ffff0000  .... ...........
+ 0010 00000000 00000000 00000000 00000000  ................
+ 0020 6c000000 20000000 ffff0200 41000000  l... .......A...
+ 0030 00000000 30100000 00000000 00000000  ....0...........
+ 0040 28000000 01000000 01000000 01000400  (...............
+ 0050 00000000 04000000 00000000 00000000  ................
+ 0060 00000000 00000000 00000000 00008000  ................
+ 0070 00800000 00808000 80000000 80008000  ................
+ 0080 80800000 c0c0c000 80808000 0000ff00  ................
+ 0090 00ff0000 00ffff00 ff000000 ff00ff00  ................
+ 00a0 ffff0000 ffffff00 90000000 6c000000  ............l...
+ 00b0 24000000 ffff0200 41004200 00000000  $.......A.B.....
+ 00c0 00000000 30100000 00000000 00000000  ....0...........
+ 00d0 28000000 01000000 01000000 01000400  (...............
+ 00e0 00000000 04000000 00000000 00000000  ................
+ 00f0 00000000 00000000 00000000 00008000  ................
+ 0100 00800000 00808000 80000000 80008000  ................
+ 0110 80800000 c0c0c000 80808000 0000ff00  ................
+ 0120 00ff0000 00ffff00 ff000000 ff00ff00  ................
+ 0130 ffff0000 ffffff00 90000000 6c000000  ............l...
+ 0140 24000000 ffff0200 41004200 43000000  $.......A.B.C...
+ 0150 00000000 30100000 00000000 00000000  ....0...........
+ 0160 28000000 01000000 01000000 01000400  (...............
+ 0170 00000000 04000000 00000000 00000000  ................
+ 0180 00000000 00000000 00000000 00008000  ................
+ 0190 00800000 00808000 80000000 80008000  ................
+ 01a0 80800000 c0c0c000 80808000 0000ff00  ................
+ 01b0 00ff0000 00ffff00 ff000000 ff00ff00  ................
+ 01c0 ffff0000 ffffff00 90000000 6c000000  ............l...
+ 01d0 28000000 ffff0200 41004200 43004400  (.......A.B.C.D.
+ 01e0 00000000 00000000 30100000 00000000  ........0.......
+ 01f0 00000000 28000000 01000000 01000000  ....(...........
+ 0200 01000400 00000000 04000000 00000000  ................
+ 0210 00000000 00000000 00000000 00000000  ................
+ 0220 00008000 00800000 00808000 80000000  ................
+ 0230 80008000 80800000 c0c0c000 80808000  ................
+ 0240 0000ff00 00ff0000 00ffff00 ff000000  ................
+ 0250 ff00ff00 ffff0000 ffffff00 90000000  ................
diff --git a/binutils/testsuite/binutils-all/windres/lang.rc b/binutils/testsuite/binutils-all/windres/lang.rc
new file mode 100644 (file)
index 0000000..d894315
--- /dev/null
@@ -0,0 +1,15 @@
+#include "windows.h"
+
+LANGUAGE 0, 0
+
+1 MENU MOVEABLE PURE DISCARDABLE
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+BEGIN
+       POPUP "&Datei" { MENUITEM "foo", 1 }
+END
+
+1 MENU MOVEABLE PURE DISCARDABLE
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+BEGIN
+       POPUP "&File" { MENUITEM "foo", 1 }
+END
diff --git a/binutils/testsuite/binutils-all/windres/lang.rsd b/binutils/testsuite/binutils-all/windres/lang.rsd
new file mode 100644 (file)
index 0000000..9e0045f
--- /dev/null
@@ -0,0 +1,10 @@
+ 0000 00000000 20000000 ffff0000 ffff0000  .... ...........
+ 0010 00000000 00000000 00000000 00000000  ................
+ 0020 20000000 20000000 ffff0400 ffff0100   ... ...........
+ 0030 00000000 30100704 00000000 00000000  ....0...........
+ 0040 00000000 90002600 44006100 74006500  ......&.D.a.t.e.
+ 0050 69000000 80000100 66006f00 6f000000  i.......f.o.o...
+ 0060 1e000000 20000000 ffff0400 ffff0100  .... ...........
+ 0070 00000000 30100904 00000000 00000000  ....0...........
+ 0080 00000000 90002600 46006900 6c006500  ......&.F.i.l.e.
+ 0090 00008000 01006600 6f006f00 00000000  ......f.o.o.....
diff --git a/binutils/testsuite/binutils-all/windres/msupdate b/binutils/testsuite/binutils-all/windres/msupdate
new file mode 100755 (executable)
index 0000000..649335c
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# Written by DJ Delorie <dj@redhat.com>
+
+# Run this on a machine with Cygwin and Microsoft Visual C to create
+# the RES files we match against.
+
+RC="rc"
+if test x"$1" != x""
+then
+  RC="$1"
+fi
+
+for i in *.rc
+do
+  o=`echo $i | sed s/.rc/.res/`
+  d=`echo $i | sed s/.rc/.rsd/`
+  echo "$i -> $o -> $d"
+  $RC /fo$o $i
+  objdump -b binary -s $o | sed -n '/^ [0-9a-f][0-9a-f]* /p' > $d
+  rm $o
+done
diff --git a/binutils/testsuite/binutils-all/windres/strtab1.rc b/binutils/testsuite/binutils-all/windres/strtab1.rc
new file mode 100644 (file)
index 0000000..a1a246d
--- /dev/null
@@ -0,0 +1,8 @@
+#include "windows.h"
+
+LANGUAGE 0, 0
+
+STRINGTABLE MOVEABLE PURE DISCARDABLE
+BEGIN
+  1 "hello, world"
+END
diff --git a/binutils/testsuite/binutils-all/windres/strtab1.rsd b/binutils/testsuite/binutils-all/windres/strtab1.rsd
new file mode 100644 (file)
index 0000000..4d61073
--- /dev/null
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000  .... ...........
+ 0010 00000000 00000000 00000000 00000000  ................
+ 0020 38000000 20000000 ffff0600 ffff0100  8... ...........
+ 0030 00000000 30100000 00000000 00000000  ....0...........
+ 0040 00000c00 68006500 6c006c00 6f002c00  ....h.e.l.l.o.,.
+ 0050 20007700 6f007200 6c006400 00000000   .w.o.r.l.d.....
+ 0060 00000000 00000000 00000000 00000000  ................
+ 0070 00000000 00000000                    ........        
diff --git a/binutils/testsuite/binutils-all/windres/windres.exp b/binutils/testsuite/binutils-all/windres/windres.exp
new file mode 100644 (file)
index 0000000..3578835
--- /dev/null
@@ -0,0 +1,132 @@
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# Written by DJ Delorie <dj@redhat.com>
+
+if {![istarget "i*86-*-*"]} {
+    return
+}
+
+if {![info exists WINDRES]} then {
+    return
+}
+
+if {[which $WINDRES] == 0} then {
+    return
+}
+
+set wr "$WINDRES --include-dir $srcdir/$subdir"
+
+if [file exists "$srcdir/../../winsup/w32api/include"] {
+    set wr "$wr --include-dir $srcdir/../../winsup/w32api/include"
+} else {
+    send_log "\nWarning: Assuming windres can find the win32 headers\n\n"
+}
+
+set res_list [lsort [glob -nocomplain $srcdir/$subdir/*.rc]]
+
+proc oneline { file } {
+    while { 1 } {
+       if { [gets $file line] == -1 } {
+           return ""
+       }
+       if [regexp "^ \[0-9a-z\]\[0-9a-z\]* " $line] {
+           return $line
+       }
+    }
+}
+
+foreach res $res_list {
+    set sroot [file rootname $res]
+    set broot [file tail $sroot]
+    set done 0
+
+    set rc [open $res]
+    while { [gets $rc line] != -1 } {
+       if ![regexp "^(//|/\*|#)" $line] {
+           break
+       }
+       if [regexp "\[xp\]fail *(\[^ \]*)" $line junk sys] {
+           setup_xfail $sys
+           continue;
+       }
+    }
+
+    verbose "$wr -I rc -O res $res tmpdir/$broot.res" 1
+    catch "exec $wr -I rc -O res $res tmpdir/$broot.res" err
+
+    if ![string match "" $err] then {
+       send_log "$err\n"
+       verbose "$err" 1
+       fail "windres/$broot (parse)"
+       continue;
+    }
+    pass "windres/$broot (parse)"
+
+    set rc [open $res]
+    while { [gets $rc line] != -1 } {
+       if ![regexp "^(//|/\*|#)" $line] {
+           break
+       }
+       if [regexp "parse-only" $line] {
+           file delete "tmpdir/$broot.res"
+           set done 1
+           break;
+       }
+       if [regexp "\[xc\]fail *(\[^ \]*)" $line junk sys] {
+           setup_xfail $sys
+           continue;
+       }
+    }
+    if { $done != 0 } {
+       continue;
+    }
+
+    verbose "$OBJDUMP -b binary -s tmpdir/$broot.res > tmpdir/$broot.dump" 1
+    catch "exec $OBJDUMP -b binary -s tmpdir/$broot.res > tmpdir/$broot.dump" err
+
+    if ![string match "" $err] then {
+       send_log "$err\n"
+       verbose "$err" 1
+       fail "windres/$broot (compare)"
+       continue;
+    }
+
+    set pat [open "$sroot.rsd"]
+    set out [open "tmpdir/$broot.dump"]
+    set patline "foo"
+
+    while { ![string match $patline ""] } {
+       set patline [oneline $pat]
+       set outline [oneline $out]
+
+       if ![string match $patline $outline] {
+           send_log "< $patline\n";
+           send_log "> $outline\n";
+           fail "windres/$broot (compare)";
+           set done 1
+           break;
+       }
+    }
+    if { $done == 0 } {
+       pass "windres/$broot (compare)"
+       file delete "tmpdir/$broot.res"
+       file delete "tmpdir/$broot.dump"
+    }
+}
index 56acd95..227fd78 100644 (file)
@@ -69,6 +69,10 @@ if ![info exists READELFFLAGS] then {
     set READELFFLAGS ""
 }
 
+if ![info exists WINDRES] then {
+    set WINDRES [findfile $base_dir/windres]
+}
+
 if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
 
 # Make a symlink from tmpdir/gas/as and tmpdir/gas/ld to the assembler