summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2003-06-17 05:46:01 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2003-06-17 05:46:01 +0000
commita167a2a416d7427d604aced7bb9adfd42d4654ad (patch)
tree723f37102561df2c4d59fe789bc783d9853c641c /libstdc++-v3
parenta0ed384df74326c3c6743e523ae3de8eddfd1547 (diff)
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68067 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog17
-rw-r--r--libstdc++-v3/Makefile.am20
-rw-r--r--libstdc++-v3/Makefile.in21
-rw-r--r--libstdc++-v3/acinclude.m431
-rw-r--r--libstdc++-v3/aclocal.m431
-rwxr-xr-xlibstdc++-v3/configure374
-rw-r--r--libstdc++-v3/configure.in14
-rw-r--r--libstdc++-v3/testsuite/Makefile.am56
-rw-r--r--libstdc++-v3/testsuite/Makefile.in69
-rw-r--r--libstdc++-v3/testsuite/abi_check.cc27
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;
}