diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 0a934906295200de6ff9c1624eb3c6f875eafebc..c2a711d407c19ba6198898ef039de36afbabd405 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2000-08-09  Alexandre Oliva  <aoliva@redhat.com>
+
+	* test_summary: AWK breaks with filenames containing `='.
+
 Sun Jul 16 12:04:33 2000  Mark P Mitchell  <mark@codesourcery.com>
 
 	* gcc_build: New script.
diff --git a/contrib/test_summary b/contrib/test_summary
index ad08c8975669199553be18fe679f17030665986a..0fcf3ec7d4ead5331e3d28ebe5d210dd487d46e5 100755
--- a/contrib/test_summary
+++ b/contrib/test_summary
@@ -82,6 +82,10 @@ for file in $files; do
 done &&
 $anyfile &&
 if $forcemail || $anychange; then :; else mailto=nobody; fi &&
+# We use cat instead of listing the files as arguments to AWK because
+# GNU awk 3.0.0 would break if any of the filenames contained `=' and
+# was preceded by an invalid ``variable'' name.
+cat ./config.status $files |
 $AWK '
 BEGIN {
   lang="";
@@ -122,7 +126,7 @@ END { if (lang != "") {
   print "Mail -s \"Results for " prefix version lang "testsuite on " host "\" '"${mailto}"' &&";
 }}
 { next; }
-' ./config.status $files | sed "s/\([\`\$\\\\]\)/\\\\\\1/g" &&
+' | sed "s/\([\`\$\\\\]\)/\\\\\\1/g" &&
 if $move; then
     for file in $files `ls -1 $files | sed s/sum$/log/`; do
       [ -f $file ] && echo "mv `pwd`/$file `pwd`/$file.sent &&"