diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 778f380eddc436b83c24f6805540688f7b198771..56941fef94f72ceef1d1dc49d55fda69ed351fb6 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+	PR testsuite/41166
+	* test_summary: Invoke config.status, rather than trying to
+	parse it.  Adjust awk script.
+
 2009-08-18  Alexandre Oliva  <aoliva@redhat.com>
 
 	* compare-debug: Drop .eh_frame relocations too.
diff --git a/contrib/test_summary b/contrib/test_summary
index f7cddf4af786df0768bc057ac530963c201edf7a..c4b3c2c9369b3748a41b0f27ce47cb7683fce384 100755
--- a/contrib/test_summary
+++ b/contrib/test_summary
@@ -91,7 +91,7 @@ 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 |
+( echo @TOPLEVEL_CONFIGURE_ARGUMENTS@ | ./config.status --file=-; cat $files ) |
 $AWK '
 BEGIN {
   lang=""; configflags = "";
@@ -100,11 +100,8 @@ BEGIN {
   print "cat <<'"'"'EOF'"'"' |";
 '${prepend_logs+"  system(\"cat $prepend_logs\"); "}'
 }
-($0 ~ /^[^ ]*\/configure / || $0 ~ /^# [^ ]*\/configure /) &&
-configflags == "" {
+NR == 1 {
     configflags = $0 " ";
-    sub(/^# /, "", configflags);
-    sub(/^s,@TOPLEVEL_CONFIGURE_ARGUMENTS@,/, "", configflags);
     srcdir = configflags;
     sub(/\/configure .*/, "", srcdir);
     if ( system("test -f " srcdir "/LAST_UPDATED") == 0 ) {