diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-06-17 05:46:01 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-06-17 05:46:01 +0000 |
commit | a167a2a416d7427d604aced7bb9adfd42d4654ad (patch) | |
tree | 723f37102561df2c4d59fe789bc783d9853c641c | |
parent | a0ed384df74326c3c6743e523ae3de8eddfd1547 (diff) | |
download | gcc-a167a2a416d7427d604aced7bb9adfd42d4654ad.tar.gz |
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
-rw-r--r-- | libstdc++-v3/ChangeLog | 17 | ||||
-rw-r--r-- | libstdc++-v3/Makefile.am | 20 | ||||
-rw-r--r-- | libstdc++-v3/Makefile.in | 21 | ||||
-rw-r--r-- | libstdc++-v3/acinclude.m4 | 31 | ||||
-rw-r--r-- | libstdc++-v3/aclocal.m4 | 31 | ||||
-rwxr-xr-x | libstdc++-v3/configure | 374 | ||||
-rw-r--r-- | libstdc++-v3/configure.in | 14 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/Makefile.am | 56 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/Makefile.in | 69 | ||||
-rw-r--r-- | 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 edc2e5b1877..0b6a12a9ca5 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 d17784bdea3..58edd36937a 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 37efa7c29fc..cdd497cac6d 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 fe6d1195cf2..7fef68416c6 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 ae824634c26..34d40f102b6 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 a6623c42ebe..a6b7b910264 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 c5fa8fcac3f..f7ff247602b 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 9ea34275f94..7e5af5e37c9 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 3c6cd842bbd..bd1e20b541c 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 c2768258f09..c4d7805e086 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; } |