From c4c064e7718490470b924c93b5082ba89b9af31c Mon Sep 17 00:00:00 2001
From: Benjamin Kosnik <bkoz@redhat.com>
Date: Tue, 17 Jun 2003 05:46:01 +0000
Subject: [PATCH] 03-06-16  Benjamin Kosnik  <bkoz@redhat.com>

	* Makefile.am (check-abi): Move...
	(new-abi-baseline): Move...
	* testsuite/Makefile.am: ...here.
	(new-abi-baseline): Conditionalize.
	(check-abi): Conditionalize.
	(check-abi-verbose): New.
	* Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* configure.in: Consolidate testsuite configure bits.
	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Same.
	* configure: Regenerate.
	* aclocal.m4: Regenerate.
	* testsuite/abi_check.cc: Add --check-verbose.
	Only output detailed information if --check-verbose.

From-SVN: r68067
---
 libstdc++-v3/ChangeLog              |  17 ++
 libstdc++-v3/Makefile.am            |  20 --
 libstdc++-v3/Makefile.in            |  21 +-
 libstdc++-v3/acinclude.m4           |  31 ++-
 libstdc++-v3/aclocal.m4             |  31 ++-
 libstdc++-v3/configure              | 374 ++++++++++++++--------------
 libstdc++-v3/configure.in           |  14 +-
 libstdc++-v3/testsuite/Makefile.am  |  56 ++++-
 libstdc++-v3/testsuite/Makefile.in  |  69 +++--
 libstdc++-v3/testsuite/abi_check.cc |  27 +-
 10 files changed, 381 insertions(+), 279 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index edc2e5b18772..0b6a12a9ca5e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,20 @@
+2003-06-16  Benjamin Kosnik  <bkoz@redhat.com>
+
+	* Makefile.am (check-abi): Move...
+	(new-abi-baseline): Move...
+	* testsuite/Makefile.am: ...here.
+	(new-abi-baseline): Conditionalize.
+	(check-abi): Conditionalize.
+	(check-abi-verbose): New.
+	* Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.	
+	* configure.in: Consolidate testsuite configure bits.
+	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Same.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.	
+	* testsuite/abi_check.cc: Add --check-verbose.
+	Only output detailed information if --check-verbose.
+
 2003-06-16  Andreas Jaeger  <aj@suse.de>
         
         * testsuite/abi_check.cc: Create summary report.
diff --git a/libstdc++-v3/Makefile.am b/libstdc++-v3/Makefile.am
index d17784bdea3c..58edd36937ae 100644
--- a/libstdc++-v3/Makefile.am
+++ b/libstdc++-v3/Makefile.am
@@ -46,26 +46,6 @@ check-script-install: $(top_builddir)/mkcheck
 	  cd testsuite; \
 	  @glibcpp_builddir@/mkcheck 1)
 
-# Use 'new-abi-baseline' to create an initial symbol file.  Then run
-# 'check-abi' to test for changes against that file.
-baseline_file = @baseline_file@
-check-abi: $(top_builddir)/testsuite/abi_check
-	-@(cd testsuite; \
-	  @glibcpp_srcdir@/config/abi/extract_symvers \
-	     ../src/.libs/libstdc++.so \
-	     ./current_symbols.txt && \
-	  ./abi_check --check ./current_symbols.txt ${baseline_file})
-
-new-abi-baseline:
-	-@(output=${baseline_file}; \
-	  if test -f $${output}; then \
-	    output=$${output}.new; \
-	    t=`echo $${output} | sed 's=.*config/abi/=='`; \
-	    echo "Baseline file already exists, writing to $${t} instead."; \
-	  fi; \
-	  @glibcpp_srcdir@/config/abi/extract_symvers \
-	     src/.libs/libstdc++.so $${output})
-
 # These rules are messy, but are hella worth it.
 doxygen:
 	-(srcdir=`cd ${top_srcdir}; ${PWD}`; \
diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
index 37efa7c29fc2..cdd497cac6dd 100644
--- a/libstdc++-v3/Makefile.in
+++ b/libstdc++-v3/Makefile.in
@@ -121,6 +121,7 @@ USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_FLAGS = @WARN_FLAGS@
 WERROR = @WERROR@
+baseline_file = @baseline_file@
 check_msgfmt = @check_msgfmt@
 enable_shared = @enable_shared@
 enable_static = @enable_static@
@@ -150,10 +151,6 @@ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
 
 PWD = $${PWDCMD-pwd}
 
-# Use 'new-abi-baseline' to create an initial symbol file.  Then run
-# 'check-abi' to test for changes against that file.
-baseline_file = @baseline_file@
-
 # Multilib support.
 MAKEOVERRIDES = 
 
@@ -496,22 +493,6 @@ check-script-install: $(top_builddir)/mkcheck
 	-(chmod + $(top_builddir)/mkcheck; \
 	  cd testsuite; \
 	  @glibcpp_builddir@/mkcheck 1)
-check-abi: $(top_builddir)/testsuite/abi_check
-	-@(cd testsuite; \
-	  @glibcpp_srcdir@/config/abi/extract_symvers \
-	     ../src/.libs/libstdc++.so \
-	     ./current_symbols.txt && \
-	  ./abi_check --check ./current_symbols.txt ${baseline_file})
-
-new-abi-baseline:
-	-@(output=${baseline_file}; \
-	  if test -f $${output}; then \
-	    output=$${output}.new; \
-	    t=`echo $${output} | sed 's=.*config/abi/=='`; \
-	    echo "Baseline file already exists, writing to $${t} instead."; \
-	  fi; \
-	  @glibcpp_srcdir@/config/abi/extract_symvers \
-	     src/.libs/libstdc++.so $${output})
 
 # These rules are messy, but are hella worth it.
 doxygen:
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index fe6d1195cf2e..7fef68416c68 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -209,7 +209,7 @@ AC_DEFUN(GLIBCPP_CONFIGURE, [
   #glibcpp_pch_comp=no
   #enable_cheaders=c
   #c_compatibility=no
-  enable_abi_check=no
+  #enable_abi_check=no
   #enable_symvers=no
 
   # Find platform-specific directories containing configuration info.  In
@@ -2049,20 +2049,33 @@ dnl the testsuite_hooks.h header.
 dnl
 dnl GLIBCPP_CONFIGURE_TESTSUITE  [no args]
 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
-  GLIBCPP_CHECK_SETRLIMIT
 
-  # Look for setenv, so that extended locale tests can be performed.
-  GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
+  if test  x"$GLIBCPP_IS_CROSS_COMPILING" = xfalse; then
+    # Do checks for memory limit functions.
+    GLIBCPP_CHECK_SETRLIMIT
+
+    # Look for setenv, so that extended locale tests can be performed.
+    GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
+  fi
 
   # Export file names for ABI checking.
   baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_pair}\$(MULTISUBDIR)/baseline_symbols.txt"
   AC_SUBST(baseline_file)
 
-  dnl XXX move to configure.host?
-  case "$target" in
-    *-*-cygwin* ) enable_abi_check=no ;;
-    * ) enable_abi_check=yes ;;
-  esac
+  # Determine if checking the ABI is desirable.
+  if test x$enable_symvers = xno; then
+    enable_abi_check=no
+  else
+    case "$host" in
+      *-*-cygwin*) 
+	enable_abi_check=no ;;
+      *) 
+        enable_abi_check=yes ;;
+    esac
+  fi
+
+  AM_CONDITIONAL(GLIBCPP_TEST_WCHAR_T, test "$enable_wchar_t" = yes)	
+  AM_CONDITIONAL(GLIBCPP_TEST_ABI, test "$enable_abi_check" = yes)
 ])
 
 
diff --git a/libstdc++-v3/aclocal.m4 b/libstdc++-v3/aclocal.m4
index ae824634c26c..34d40f102b60 100644
--- a/libstdc++-v3/aclocal.m4
+++ b/libstdc++-v3/aclocal.m4
@@ -221,7 +221,7 @@ AC_DEFUN(GLIBCPP_CONFIGURE, [
   #glibcpp_pch_comp=no
   #enable_cheaders=c
   #c_compatibility=no
-  enable_abi_check=no
+  #enable_abi_check=no
   #enable_symvers=no
 
   # Find platform-specific directories containing configuration info.  In
@@ -2061,20 +2061,33 @@ dnl the testsuite_hooks.h header.
 dnl
 dnl GLIBCPP_CONFIGURE_TESTSUITE  [no args]
 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
-  GLIBCPP_CHECK_SETRLIMIT
 
-  # Look for setenv, so that extended locale tests can be performed.
-  GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
+  if test  x"$GLIBCPP_IS_CROSS_COMPILING" = xfalse; then
+    # Do checks for memory limit functions.
+    GLIBCPP_CHECK_SETRLIMIT
+
+    # Look for setenv, so that extended locale tests can be performed.
+    GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
+  fi
 
   # Export file names for ABI checking.
   baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_pair}\$(MULTISUBDIR)/baseline_symbols.txt"
   AC_SUBST(baseline_file)
 
-  dnl XXX move to configure.host?
-  case "$target" in
-    *-*-cygwin* ) enable_abi_check=no ;;
-    * ) enable_abi_check=yes ;;
-  esac
+  # Determine if checking the ABI is desirable.
+  if test x$enable_symvers = xno; then
+    enable_abi_check=no
+  else
+    case "$host" in
+      *-*-cygwin*) 
+	enable_abi_check=no ;;
+      *) 
+        enable_abi_check=yes ;;
+    esac
+  fi
+
+  AM_CONDITIONAL(GLIBCPP_TEST_WCHAR_T, test "$enable_wchar_t" = yes)	
+  AM_CONDITIONAL(GLIBCPP_TEST_ABI, test "$enable_abi_check" = yes)
 ])
 
 
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index a6623c42ebec..a6b7b9102645 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -1504,7 +1504,7 @@ ac_exeext=$EXEEXT
   #glibcpp_pch_comp=no
   #enable_cheaders=c
   #c_compatibility=no
-  enable_abi_check=no
+  #enable_abi_check=no
   #enable_symvers=no
 
   # Find platform-specific directories containing configuration info.  In
@@ -23161,26 +23161,160 @@ EOF
 
 fi
 
+fi
 
-  # Establish limits on memory usage during 'make check'
-  
-  
+# This depends on GLIBCPP_CHECK_LINKER_FEATURES, but without it assumes no.
+# Check whether --enable-symvers or --disable-symvers was given.
+if test "${enable_symvers+set}" = set; then
+  enableval="$enable_symvers"
+  case "$enableval" in
+ yes) enable_symvers=yes ;;
+ no)  enable_symvers=no ;;
+ # other names here, just as sanity checks
+ #gnu|sun|etcetera) enable_symvers=$enableval ;;
+ gnu) enable_symvers=$enableval ;;
+ *)   { echo "configure: error: Unknown argument to enable/disable symvers" 1>&2; exit 1; } ;;
+ esac
+else
+  enable_symvers=yes
+fi
+
+# If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
+# don't know enough about $LD to do tricks...
+if test x$enable_shared = xno ||
+	test "x$LD" = x ||
+	test x$glibcpp_gnu_ld_version = x; then
+  enable_symvers=no
+fi
+
+# Check to see if libgcc_s exists, indicating that shared libgcc is possible.
+if test $enable_symvers != no; then
+  echo $ac_n "checking for shared libgcc""... $ac_c" 1>&6
+echo "configure:23194: checking for shared libgcc" >&5
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=' -lgcc_s'
+  cat > conftest.$ac_ext <<EOF
+#line 23198 "configure"
+#include "confdefs.h"
+
+int main() {
+return 0
+; return 0; }
+EOF
+if { (eval echo configure:23205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  glibcpp_shared_libgcc=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  glibcpp_shared_libgcc=no
+fi
+rm -f conftest*
+  CFLAGS="$ac_save_CFLAGS"
+  echo "$ac_t""$glibcpp_shared_libgcc" 1>&6
+fi
+
+# For GNU ld, we need at least this version.  It's 2.12 in the same format
+# as the tested-for version.  See GLIBCPP_CHECK_LINKER_FEATURES for more.
+glibcpp_min_gnu_ld_version=21200
+
+# Check to see if unspecified "yes" value can win, given results
+# above.
+if test $enable_symvers = yes ; then
+  if test $with_gnu_ld = yes &&
+    test $glibcpp_shared_libgcc = yes ;
+  then
+    if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
+        enable_symvers=gnu
+    else
+      ac_test_CFLAGS="${CFLAGS+set}"
+      ac_save_CFLAGS="$CFLAGS"
+      CFLAGS='-shared -Wl,--version-script,conftest.map'
+      enable_symvers=no
+      
+      echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
+      
+      cat > conftest.$ac_ext <<EOF
+#line 23240 "configure"
+#include "confdefs.h"
+int foo;
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:23247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  enable_symvers=gnu
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+      if test "$ac_test_CFLAGS" = set; then
+	CFLAGS="$ac_save_CFLAGS"
+      else
+	# this is the suspicious part
+	CFLAGS=''
+      fi
+      rm -f conftest.map
+    fi
+  else
+    # just fail for now
+    enable_symvers=no
+  fi
+fi
+
+case $enable_symvers in
+  no)
+      SYMVER_MAP=config/linker-map.dummy
+      ;;
+  gnu)
+      SYMVER_MAP=config/linker-map.gnu
+      cat >> confdefs.h <<\EOF
+#define _GLIBCPP_SYMVER 1
+EOF
+
+      ;;
+esac
+
+
+
+
+if test $enable_symvers != no; then
+  GLIBCPP_BUILD_VERSIONED_SHLIB_TRUE=
+  GLIBCPP_BUILD_VERSIONED_SHLIB_FALSE='#'
+else
+  GLIBCPP_BUILD_VERSIONED_SHLIB_TRUE='#'
+  GLIBCPP_BUILD_VERSIONED_SHLIB_FALSE=
+fi
+echo $ac_n "checking versioning on shared library symbols""... $ac_c" 1>&6
+echo "configure:23293: checking versioning on shared library symbols" >&5
+echo "$ac_t""$enable_symvers" 1>&6
+
+
+# This depends on GLIBCPP_ENABLE_SYMVERS and GLIBCPP_IS_CROSS_COMPILING.
+
+
+  if test  x"$GLIBCPP_IS_CROSS_COMPILING" = xfalse; then
+    # Do checks for memory limit functions.
+    
   setrlimit_have_headers=yes
   for ac_hdr in unistd.h sys/time.h sys/resource.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:23174: checking for $ac_hdr" >&5
+echo "configure:23308: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 23179 "configure"
+#line 23313 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:23184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:23318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -23213,7 +23347,7 @@ done
     # Can't do these in a loop, else the resulting syntax is wrong.
     
   cat > conftest.$ac_ext <<EOF
-#line 23217 "configure"
+#line 23351 "configure"
 #include "confdefs.h"
 #include <unistd.h>
                   #include <sys/time.h>
@@ -23223,7 +23357,7 @@ int main() {
  int f = RLIMIT_DATA ; 
 ; return 0; }
 EOF
-if { (eval echo configure:23227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23361: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   glibcpp_mresult=1
 else
@@ -23240,7 +23374,7 @@ EOF
 
     
   cat > conftest.$ac_ext <<EOF
-#line 23244 "configure"
+#line 23378 "configure"
 #include "confdefs.h"
 #include <unistd.h>
                   #include <sys/time.h>
@@ -23250,7 +23384,7 @@ int main() {
  int f = RLIMIT_RSS ; 
 ; return 0; }
 EOF
-if { (eval echo configure:23254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   glibcpp_mresult=1
 else
@@ -23267,7 +23401,7 @@ EOF
 
     
   cat > conftest.$ac_ext <<EOF
-#line 23271 "configure"
+#line 23405 "configure"
 #include "confdefs.h"
 #include <unistd.h>
                   #include <sys/time.h>
@@ -23277,7 +23411,7 @@ int main() {
  int f = RLIMIT_VMEM ; 
 ; return 0; }
 EOF
-if { (eval echo configure:23281: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   glibcpp_mresult=1
 else
@@ -23294,7 +23428,7 @@ EOF
 
     
   cat > conftest.$ac_ext <<EOF
-#line 23298 "configure"
+#line 23432 "configure"
 #include "confdefs.h"
 #include <unistd.h>
                   #include <sys/time.h>
@@ -23304,7 +23438,7 @@ int main() {
  int f = RLIMIT_AS ; 
 ; return 0; }
 EOF
-if { (eval echo configure:23308: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   glibcpp_mresult=1
 else
@@ -23326,7 +23460,7 @@ EOF
 else
   
       cat > conftest.$ac_ext <<EOF
-#line 23330 "configure"
+#line 23464 "configure"
 #include "confdefs.h"
 #include <unistd.h>
                   #include <sys/time.h>
@@ -23336,7 +23470,7 @@ int main() {
  struct rlimit r; setrlimit(0, &r);
 ; return 0; }
 EOF
-if { (eval echo configure:23340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23474: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_setrlimit=yes
 else
@@ -23352,7 +23486,7 @@ fi
   fi
 
   echo $ac_n "checking for testsuite memory limit support""... $ac_c" 1>&6
-echo "configure:23356: checking for testsuite memory limit support" >&5
+echo "configure:23490: checking for testsuite memory limit support" >&5
   if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
     ac_mem_limits=yes
     cat >> confdefs.h <<\EOF
@@ -23365,10 +23499,10 @@ EOF
   echo "$ac_t""$ac_mem_limits" 1>&6
 
 
-  # Look for setenv, so that extended locale tests can be performed.
-  
+    # Look for setenv, so that extended locale tests can be performed.
+    
   echo $ac_n "checking for setenv declaration""... $ac_c" 1>&6
-echo "configure:23372: checking for setenv declaration" >&5
+echo "configure:23506: checking for setenv declaration" >&5
   if test x${glibcpp_cv_func_setenv_use+set} != xset; then
     if eval "test \"`echo '$''{'glibcpp_cv_func_setenv_use'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -23383,14 +23517,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
 cross_compiling=$ac_cv_prog_cxx_cross
 
       cat > conftest.$ac_ext <<EOF
-#line 23387 "configure"
+#line 23521 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 int main() {
  setenv(0, 0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:23394: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23528: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   glibcpp_cv_func_setenv_use=yes
 else
@@ -23416,12 +23550,12 @@ fi
     for ac_func in setenv
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:23420: checking for $ac_func" >&5
+echo "configure:23554: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 23425 "configure"
+#line 23559 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -23444,7 +23578,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:23448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:23582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -23470,146 +23604,42 @@ done
 
   fi
 
+  fi
 
   # Export file names for ABI checking.
   baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_pair}\$(MULTISUBDIR)/baseline_symbols.txt"
   
 
-    case "$target" in
-    *-*-cygwin* ) enable_abi_check=no ;;
-    * ) enable_abi_check=yes ;;
-  esac
-
-fi
-
-# This depends on the possibly-skipped linker test above.
-# Check whether --enable-symvers or --disable-symvers was given.
-if test "${enable_symvers+set}" = set; then
-  enableval="$enable_symvers"
-  case "$enableval" in
- yes) enable_symvers=yes ;;
- no)  enable_symvers=no ;;
- # other names here, just as sanity checks
- #gnu|sun|etcetera) enable_symvers=$enableval ;;
- gnu) enable_symvers=$enableval ;;
- *)   { echo "configure: error: Unknown argument to enable/disable symvers" 1>&2; exit 1; } ;;
- esac
-else
-  enable_symvers=yes
-fi
-
-# If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
-# don't know enough about $LD to do tricks...
-if test x$enable_shared = xno ||
-	test "x$LD" = x ||
-	test x$glibcpp_gnu_ld_version = x; then
-  enable_symvers=no
-fi
-
-# Check to see if libgcc_s exists, indicating that shared libgcc is possible.
-if test $enable_symvers != no; then
-  echo $ac_n "checking for shared libgcc""... $ac_c" 1>&6
-echo "configure:23513: checking for shared libgcc" >&5
-  ac_save_CFLAGS="$CFLAGS"
-  CFLAGS=' -lgcc_s'
-  cat > conftest.$ac_ext <<EOF
-#line 23517 "configure"
-#include "confdefs.h"
-
-int main() {
-return 0
-; return 0; }
-EOF
-if { (eval echo configure:23524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  glibcpp_shared_libgcc=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  glibcpp_shared_libgcc=no
-fi
-rm -f conftest*
-  CFLAGS="$ac_save_CFLAGS"
-  echo "$ac_t""$glibcpp_shared_libgcc" 1>&6
-fi
-
-# For GNU ld, we need at least this version.  It's 2.12 in the same format
-# as the tested-for version.  See GLIBCPP_CHECK_LINKER_FEATURES for more.
-glibcpp_min_gnu_ld_version=21200
-
-# Check to see if unspecified "yes" value can win, given results
-# above.
-if test $enable_symvers = yes ; then
-  if test $with_gnu_ld = yes &&
-    test $glibcpp_shared_libgcc = yes ;
-  then
-    if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
-        enable_symvers=gnu
-    else
-      ac_test_CFLAGS="${CFLAGS+set}"
-      ac_save_CFLAGS="$CFLAGS"
-      CFLAGS='-shared -Wl,--version-script,conftest.map'
-      enable_symvers=no
-      
-      echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
-      
-      cat > conftest.$ac_ext <<EOF
-#line 23559 "configure"
-#include "confdefs.h"
-int foo;
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:23566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  enable_symvers=gnu
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-      if test "$ac_test_CFLAGS" = set; then
-	CFLAGS="$ac_save_CFLAGS"
-      else
-	# this is the suspicious part
-	CFLAGS=''
-      fi
-      rm -f conftest.map
-    fi
+  # Determine if checking the ABI is desirable.
+  if test x$enable_symvers = xno; then
+    enable_abi_check=no
   else
-    # just fail for now
-    enable_symvers=no
+    case "$host" in
+      *-*-cygwin*) 
+	enable_abi_check=no ;;
+      *) 
+        enable_abi_check=yes ;;
+    esac
   fi
-fi
-
-case $enable_symvers in
-  no)
-      SYMVER_MAP=config/linker-map.dummy
-      ;;
-  gnu)
-      SYMVER_MAP=config/linker-map.gnu
-      cat >> confdefs.h <<\EOF
-#define _GLIBCPP_SYMVER 1
-EOF
-
-      ;;
-esac
-
 
+  
 
+if test "$enable_wchar_t" = yes; then
+  GLIBCPP_TEST_WCHAR_T_TRUE=
+  GLIBCPP_TEST_WCHAR_T_FALSE='#'
+else
+  GLIBCPP_TEST_WCHAR_T_TRUE='#'
+  GLIBCPP_TEST_WCHAR_T_FALSE=
+fi	
+  
 
-if test $enable_symvers != no; then
-  GLIBCPP_BUILD_VERSIONED_SHLIB_TRUE=
-  GLIBCPP_BUILD_VERSIONED_SHLIB_FALSE='#'
+if test "$enable_abi_check" = yes; then
+  GLIBCPP_TEST_ABI_TRUE=
+  GLIBCPP_TEST_ABI_FALSE='#'
 else
-  GLIBCPP_BUILD_VERSIONED_SHLIB_TRUE='#'
-  GLIBCPP_BUILD_VERSIONED_SHLIB_FALSE=
+  GLIBCPP_TEST_ABI_TRUE='#'
+  GLIBCPP_TEST_ABI_FALSE=
 fi
-echo $ac_n "checking versioning on shared library symbols""... $ac_c" 1>&6
-echo "configure:23612: checking versioning on shared library symbols" >&5
-echo "$ac_t""$enable_symvers" 1>&6
 
 
 # Propagate the target-specific source directories through the build chain.
@@ -23620,7 +23650,7 @@ ATOMICITY_INC_SRCDIR=config/${ATOMICITYH}
 
 
 
-# Set up cross-compile flags and all AM_CONDITIONALs.
+# Determine cross-compile flags and all AM_CONDITIONALs.
 
 
 
@@ -23640,24 +23670,6 @@ else
   GLIBCPP_BUILD_LIBMATH_TRUE='#'
   GLIBCPP_BUILD_LIBMATH_FALSE=
 fi
-
-
-if test "$enable_wchar_t" = yes; then
-  GLIBCPP_TEST_WCHAR_T_TRUE=
-  GLIBCPP_TEST_WCHAR_T_FALSE='#'
-else
-  GLIBCPP_TEST_WCHAR_T_TRUE='#'
-  GLIBCPP_TEST_WCHAR_T_FALSE=
-fi	
-
-
-if test "$enable_abi_check" = yes; then
-  GLIBCPP_BUILD_ABI_CHECK_TRUE=
-  GLIBCPP_BUILD_ABI_CHECK_FALSE='#'
-else
-  GLIBCPP_BUILD_ABI_CHECK_TRUE='#'
-  GLIBCPP_BUILD_ABI_CHECK_FALSE=
-fi
  
 cat > confcache <<\EOF
 # This file is a shell script that caches the results of configure
@@ -23723,7 +23735,7 @@ glibcpp_prefixdir=${prefix}
 
 # Process the option --with-gxx-include-dir=<path to include-files directory>
 echo $ac_n "checking for --with-gxx-include-dir""... $ac_c" 1>&6
-echo "configure:23727: checking for --with-gxx-include-dir" >&5
+echo "configure:23739: checking for --with-gxx-include-dir" >&5
 # Check whether --with-gxx-include-dir or --without-gxx-include-dir was given.
 if test "${with_gxx_include_dir+set}" = set; then
   withval="$with_gxx_include_dir"
@@ -23747,7 +23759,7 @@ echo "$ac_t""$gxx_include_dir" 1>&6
 
 # Process the option "--enable-version-specific-runtime-libs"
 echo $ac_n "checking for --enable-version-specific-runtime-libs""... $ac_c" 1>&6
-echo "configure:23751: checking for --enable-version-specific-runtime-libs" >&5
+echo "configure:23763: checking for --enable-version-specific-runtime-libs" >&5
 # Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given.
 if test "${enable_version_specific_runtime_libs+set}" = set; then
   enableval="$enable_version_specific_runtime_libs"
@@ -23798,7 +23810,7 @@ if test x"$glibcpp_toolexecdir" = x"no"; then
 fi
 
 echo $ac_n "checking for install location""... $ac_c" 1>&6
-echo "configure:23802: checking for install location" >&5
+echo "configure:23814: checking for install location" >&5
 echo "$ac_t""$gxx_include_dir" 1>&6
 
 
@@ -24080,10 +24092,14 @@ s%@SECTION_LDFLAGS@%$SECTION_LDFLAGS%g
 s%@OPT_LDFLAGS@%$OPT_LDFLAGS%g
 s%@LIBMATHOBJS@%$LIBMATHOBJS%g
 s%@WERROR@%$WERROR%g
-s%@baseline_file@%$baseline_file%g
 s%@SYMVER_MAP@%$SYMVER_MAP%g
 s%@GLIBCPP_BUILD_VERSIONED_SHLIB_TRUE@%$GLIBCPP_BUILD_VERSIONED_SHLIB_TRUE%g
 s%@GLIBCPP_BUILD_VERSIONED_SHLIB_FALSE@%$GLIBCPP_BUILD_VERSIONED_SHLIB_FALSE%g
+s%@baseline_file@%$baseline_file%g
+s%@GLIBCPP_TEST_WCHAR_T_TRUE@%$GLIBCPP_TEST_WCHAR_T_TRUE%g
+s%@GLIBCPP_TEST_WCHAR_T_FALSE@%$GLIBCPP_TEST_WCHAR_T_FALSE%g
+s%@GLIBCPP_TEST_ABI_TRUE@%$GLIBCPP_TEST_ABI_TRUE%g
+s%@GLIBCPP_TEST_ABI_FALSE@%$GLIBCPP_TEST_ABI_FALSE%g
 s%@OS_INC_SRCDIR@%$OS_INC_SRCDIR%g
 s%@ATOMICITY_INC_SRCDIR@%$ATOMICITY_INC_SRCDIR%g
 s%@GLIBCPP_IS_CROSS_COMPILING@%$GLIBCPP_IS_CROSS_COMPILING%g
@@ -24091,10 +24107,6 @@ s%@CANADIAN_TRUE@%$CANADIAN_TRUE%g
 s%@CANADIAN_FALSE@%$CANADIAN_FALSE%g
 s%@GLIBCPP_BUILD_LIBMATH_TRUE@%$GLIBCPP_BUILD_LIBMATH_TRUE%g
 s%@GLIBCPP_BUILD_LIBMATH_FALSE@%$GLIBCPP_BUILD_LIBMATH_FALSE%g
-s%@GLIBCPP_TEST_WCHAR_T_TRUE@%$GLIBCPP_TEST_WCHAR_T_TRUE%g
-s%@GLIBCPP_TEST_WCHAR_T_FALSE@%$GLIBCPP_TEST_WCHAR_T_FALSE%g
-s%@GLIBCPP_BUILD_ABI_CHECK_TRUE@%$GLIBCPP_BUILD_ABI_CHECK_TRUE%g
-s%@GLIBCPP_BUILD_ABI_CHECK_FALSE@%$GLIBCPP_BUILD_ABI_CHECK_FALSE%g
 s%@glibcpp_prefixdir@%$glibcpp_prefixdir%g
 s%@gxx_include_dir@%$gxx_include_dir%g
 s%@glibcpp_toolexecdir@%$glibcpp_toolexecdir%g
diff --git a/libstdc++-v3/configure.in b/libstdc++-v3/configure.in
index c5fa8fcac3fb..f7ff247602b8 100644
--- a/libstdc++-v3/configure.in
+++ b/libstdc++-v3/configure.in
@@ -431,14 +431,14 @@ else
   ])
 
   AC_FUNC_MMAP
-
-  # Establish limits on memory usage during 'make check'
-  GLIBCPP_CONFIGURE_TESTSUITE
 fi
 
-# This depends on the possibly-skipped linker test above.
+# This depends on GLIBCPP_CHECK_LINKER_FEATURES, but without it assumes no.
 GLIBCPP_ENABLE_SYMVERS([yes])
 
+# This depends on GLIBCPP_ENABLE_SYMVERS and GLIBCPP_IS_CROSS_COMPILING.
+GLIBCPP_CONFIGURE_TESTSUITE
+
 # Propagate the target-specific source directories through the build chain.
 # (Nothing currently uses cpu_include_dir directly; only ATOMICITYH 
 # uses it, and it only gets used in this file.)
@@ -447,15 +447,11 @@ ATOMICITY_INC_SRCDIR=config/${ATOMICITYH}
 AC_SUBST(OS_INC_SRCDIR)
 AC_SUBST(ATOMICITY_INC_SRCDIR)
 
-# Set up cross-compile flags and all AM_CONDITIONALs.
+# Determine cross-compile flags and all AM_CONDITIONALs.
 AC_SUBST(GLIBCPP_IS_CROSS_COMPILING)
 AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
 dnl from GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT:
 AM_CONDITIONAL(GLIBCPP_BUILD_LIBMATH,  test "$need_libmath" = yes)
-dnl from GLIBCPP_CHECK_WCHAR_T_SUPPORT:
-AM_CONDITIONAL(GLIBCPP_TEST_WCHAR_T, test "$enable_wchar_t" = yes)	
-dnl from GLIBCPP_CONFIGURE_TESTSUITE:
-AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK, test "$enable_abi_check" = yes)
  
 AC_CACHE_SAVE
 
diff --git a/libstdc++-v3/testsuite/Makefile.am b/libstdc++-v3/testsuite/Makefile.am
index 9ea34275f94e..7e5af5e37c9f 100644
--- a/libstdc++-v3/testsuite/Makefile.am
+++ b/libstdc++-v3/testsuite/Makefile.am
@@ -54,23 +54,67 @@ noinst_LIBRARIES = libv3test.a
 libv3test_a_SOURCES = testsuite_hooks.cc testsuite_allocator.cc
 
 ## Build support utilities.
-## Only build this as native, as need to find startup files and libc to link.
-if GLIBCPP_BUILD_ABI_CHECK
+if GLIBCPP_TEST_ABI
 noinst_PROGRAMS = abi_check
 else
 noinst_PROGRAMS = 
 endif
 abi_check_SOURCES = abi_check.cc
 
+all-local: stamp_wchar
+
 # Enable wchar_t tests if capable.
 if GLIBCPP_TEST_WCHAR_T
-all-local: stamp_wchar
+stamp_wchar:
+	touch testsuite_wchar_t
 else
-all-local:
+stamp_wchar:
+endif
+
+# Override this so local rules are possible.
+check-am: 
+	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU; \
+	$(MAKE) $(AM_MAKEFLAGS) check-local 
+
+check-local: check-abi
+
+baseline_file = @baseline_file@
+extract_symvers = @glibcpp_srcdir@/config/abi/extract_symvers
+
+current_symbols.txt: ${extract_symvers} ../src/.libs/libstdc++.so
+	  -@(${extract_symvers} ../src/.libs/libstdc++.so current_symbols.txt)
+
+baseline_symbols:
+	-@(output=${baseline_file}; \
+	  if test ! -f $${output}; then \
+	    echo "Baseline file doesn't exist."; \
+	    echo "Try 'make new-abi-baseline' to create it."; \
+	    exit 1; \
+	  fi; \
+	touch baseline_symbols)
+
+new-abi-baseline: 
+	-@(output=${baseline_file}; \
+	  if test -f $${output}; then \
+	    output=$${output}.new; \
+	    t=`echo $${output} | sed 's=.*config/abi/=='`; \
+	    echo "Baseline file already exists, writing to $${t} instead."; \
+	  fi; \
+	  ${extract_symvers} ../src/.libs/libstdc++.so $${output})
+
+if GLIBCPP_TEST_ABI
+# Use 'new-abi-baseline' to create an initial symbol file.  Then run
+# 'check-abi' to test for changes against that file.
+check-abi: abi_check baseline_symbols current_symbols.txt
+	-@(./abi_check --check ./current_symbols.txt ${baseline_file})
+
+check-abi-verbose: abi_check baseline_symbols current_symbols.txt 
+	-@(./abi_check --check-verbose ./current_symbols.txt ${baseline_file})
+else
+check-abi:
+check-abi-verbose:
 endif
 
-stamp_wchar:
-	touch testsuite_wchar_t
 
 # By adding these files here, automake will remove them for 'make clean'
 CLEANFILES = *.txt *.tst *.exe core* filebuf_* tmp* ostream_* *.log *.sum \
diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
index 3c6cd842bbdd..bd1e20b541cf 100644
--- a/libstdc++-v3/testsuite/Makefile.in
+++ b/libstdc++-v3/testsuite/Makefile.in
@@ -120,7 +120,6 @@ USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_FLAGS = @WARN_FLAGS@
 WERROR = @WERROR@
-baseline_file = @baseline_file@
 check_msgfmt = @check_msgfmt@
 enable_shared = @enable_shared@
 enable_static = @enable_static@
@@ -173,10 +172,13 @@ INCLUDES = \
 
 noinst_LIBRARIES = libv3test.a
 libv3test_a_SOURCES = testsuite_hooks.cc testsuite_allocator.cc
-@GLIBCPP_BUILD_ABI_CHECK_TRUE@noinst_PROGRAMS = @GLIBCPP_BUILD_ABI_CHECK_TRUE@abi_check
-@GLIBCPP_BUILD_ABI_CHECK_FALSE@noinst_PROGRAMS = 
+@GLIBCPP_TEST_ABI_TRUE@noinst_PROGRAMS = @GLIBCPP_TEST_ABI_TRUE@abi_check
+@GLIBCPP_TEST_ABI_FALSE@noinst_PROGRAMS = 
 abi_check_SOURCES = abi_check.cc
 
+baseline_file = @baseline_file@
+extract_symvers = @glibcpp_srcdir@/config/abi/extract_symvers
+
 # By adding these files here, automake will remove them for 'make clean'
 CLEANFILES = *.txt *.tst *.exe core* filebuf_* tmp* ostream_* *.log *.sum \
 	     testsuite_* site.exp abi_check 
@@ -194,7 +196,7 @@ LIBS = @LIBS@
 libv3test_a_LIBADD = 
 libv3test_a_OBJECTS =  testsuite_hooks.$(OBJEXT) \
 testsuite_allocator.$(OBJEXT)
-@GLIBCPP_BUILD_ABI_CHECK_FALSE@noinst_PROGRAMS = 
+@GLIBCPP_TEST_ABI_FALSE@noinst_PROGRAMS = 
 PROGRAMS =  $(noinst_PROGRAMS)
 
 abi_check_OBJECTS =  abi_check.$(OBJEXT)
@@ -386,7 +388,7 @@ info: info-am
 dvi-am:
 dvi: dvi-am
 check-am:
-	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
+	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU check-local
 check: check-am
 installcheck-am:
 installcheck: installcheck-am
@@ -456,19 +458,58 @@ clean-libtool maintainer-clean-libtool mostlyclean-noinstPROGRAMS \
 distclean-noinstPROGRAMS clean-noinstPROGRAMS \
 maintainer-clean-noinstPROGRAMS tags mostlyclean-tags distclean-tags \
 clean-tags maintainer-clean-tags distdir check-DEJAGNU info-am info \
-dvi-am dvi check check-am installcheck-am installcheck install-info-am \
-install-info install-exec-am install-exec install-data-am install-data \
-install-am install uninstall-am uninstall all-local all-redirect all-am \
-all installdirs mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+dvi-am dvi check-local check check-am installcheck-am installcheck \
+install-info-am install-info install-exec-am install-exec \
+install-data-am install-data install-am install uninstall-am uninstall \
+all-local all-redirect all-am all installdirs mostlyclean-generic \
+distclean-generic clean-generic maintainer-clean-generic clean \
+mostlyclean distclean maintainer-clean
+
 
+all-local: stamp_wchar
 
 # Enable wchar_t tests if capable.
-@GLIBCPP_TEST_WCHAR_T_TRUE@all-local: stamp_wchar
-@GLIBCPP_TEST_WCHAR_T_FALSE@all-local:
+@GLIBCPP_TEST_WCHAR_T_TRUE@stamp_wchar:
+@GLIBCPP_TEST_WCHAR_T_TRUE@	touch testsuite_wchar_t
+@GLIBCPP_TEST_WCHAR_T_FALSE@stamp_wchar:
+
+# Override this so local rules are possible.
+check-am: 
+	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU; \
+	$(MAKE) $(AM_MAKEFLAGS) check-local 
+
+check-local: check-abi
+
+current_symbols.txt: ${extract_symvers} ../src/.libs/libstdc++.so
+	  -@(${extract_symvers} ../src/.libs/libstdc++.so current_symbols.txt)
+
+baseline_symbols:
+	-@(output=${baseline_file}; \
+	  if test ! -f $${output}; then \
+	    echo "Baseline file doesn't exist."; \
+	    echo "Try 'make new-abi-baseline' to create it."; \
+	    exit 1; \
+	  fi; \
+	touch baseline_symbols)
+
+new-abi-baseline: 
+	-@(output=${baseline_file}; \
+	  if test -f $${output}; then \
+	    output=$${output}.new; \
+	    t=`echo $${output} | sed 's=.*config/abi/=='`; \
+	    echo "Baseline file already exists, writing to $${t} instead."; \
+	  fi; \
+	  ${extract_symvers} ../src/.libs/libstdc++.so $${output})
+
+# Use 'new-abi-baseline' to create an initial symbol file.  Then run
+# 'check-abi' to test for changes against that file.
+@GLIBCPP_TEST_ABI_TRUE@check-abi: abi_check baseline_symbols current_symbols.txt
+@GLIBCPP_TEST_ABI_TRUE@	-@(./abi_check --check ./current_symbols.txt ${baseline_file})
 
-stamp_wchar:
-	touch testsuite_wchar_t
+@GLIBCPP_TEST_ABI_TRUE@check-abi-verbose: abi_check baseline_symbols current_symbols.txt 
+@GLIBCPP_TEST_ABI_TRUE@	-@(./abi_check --check-verbose ./current_symbols.txt ${baseline_file})
+@GLIBCPP_TEST_ABI_FALSE@check-abi:
+@GLIBCPP_TEST_ABI_FALSE@check-abi-verbose:
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libstdc++-v3/testsuite/abi_check.cc b/libstdc++-v3/testsuite/abi_check.cc
index c2768258f09a..c4d7805e0862 100644
--- a/libstdc++-v3/testsuite/abi_check.cc
+++ b/libstdc++-v3/testsuite/abi_check.cc
@@ -313,17 +313,20 @@ main(int argc, char** argv)
   using namespace std;
 
   // Get arguments.  (Heading towards getopt_long, I can feel it.)
-  string argv1;
-  if (argc < 4 || (string("--help") == (argv1 = argv[1])))
+  bool verbose = false;
+  string argv1 = argc > 1 ? argv[1] : "";
+  if (argv1 == "--help" || argc < 4)
     {
-      cerr << "Usage:  abi_check --check    cur baseline\n"
-              "                  --help\n\n"
-              "Where CUR is a file containing the current results from\n"
+      cerr << "usage: abi_check --check current baseline\n"
+              "                 --check-verbose current baseline\n"
+              "                 --help\n\n"
+              "Where CURRENT is a file containing the current results from\n"
               "extract_symvers, and BASELINE is one from config/abi.\n"
 	   << endl;
       exit(1);
     }
-
+  else if (argv1 == "--check-verbose")
+    verbose = true;
 
   // Quick sanity/setup check for arguments.
   const char* test_file = argv[2];
@@ -412,21 +415,21 @@ main(int argc, char** argv)
     }
 
   // Report results.
-  if (added_names.size())
+  if (verbose && added_names.size())
     {
       cout << added_names.size() << " added symbols " << endl;
       for (size_t j = 0; j < added_names.size() ; ++j)
 	report_symbol_info(test_symbols[added_names[j]], j + 1);
     }
   
-  if (missing_names.size())
+  if (verbose && missing_names.size())
     {
       cout << missing_names.size() << " missing symbols " << endl;
       for (size_t j = 0; j < missing_names.size() ; ++j)
 	report_symbol_info(baseline_symbols[missing_names[j]], j + 1);
     }
   
-  if (incompatible.size ())
+  if (verbose && incompatible.size())
     {
       cout << incompatible.size() << " incompatible symbols " << endl;
       for (size_t j = 0; j < incompatible.size() ; ++j)
@@ -441,11 +444,13 @@ main(int argc, char** argv)
 	}
     }
   
-  cout << "\n\t\t=== libstdc++-v3 check-abi Summary for " << baseline_file 
-       << " ===" << endl << endl;
+  cout << "\n\t\t=== libstdc++-v3 check-abi Summary ===" << endl;
+  cout << endl;
   cout << "# of added symbols:\t\t " << added_names.size() << endl;
   cout << "# of missing symbols:\t\t " << missing_names.size() << endl;
   cout << "# of incompatible symbols:\t " << incompatible.size() << endl;
+  cout << endl;
+  cout << "using: " << baseline_file << endl;
 
   return 0;
 }
-- 
GitLab