From cc2de92d5a4fbc66cbcfd1c9187c4ebecc4f46b3 Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Mon, 27 Feb 2012 13:51:50 +0000 Subject: [PATCH] Fix Solaris symbol versioning (PR libstdc++/52188) contrib: PR libstdc++/52188 * make_sunver.pl: Remove #ifdef handling. libgomp: PR libstdc++/52188 * acinclude.m4 (LIBGOMP_ENABLE_SYMVERS): Remove symvers_renaming. Remove ENABLE_SYMVERS_SOL2. * configure: Regenerate. * Makefile.am [LIBGOMP_BUILD_VERSIONED_SHLIB] (comma): New variable. (PREPROCESS): New variable. (libgomp.ver): New target. [LIBGOMP_BUILD_VERSIONED_SHLIB && LIBGOMP_BUILD_VERSIONED_SHLIB_GNU]: Remove LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2 handling. Use libgomp.ver. [LIBGOMP_BUILD_VERSIONED_SHLIB_SUN]: Use libgomp.ver, libgomp.ver-sun. * Makefile.in: Regenerate. libstdc++-v3: PR libstdc++/52188 * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Remove symvers_renaming. Remove ENABLE_SYMVERS_SOL2. * configure: Regenerate. * src/Makefile.am [ENABLE_SYMVERS] (libstdc++-symbols.ver): Postprocess mapfile. [ENABLE_SYMVERS_GNU]: Remove ENABLE_SYMVERS_SOL2 handling. * src/Makefile.in: Regenerate. * config/abi/pre/gnu.ver (GLIBCXX_3.4.5) [!__sun__ && !__svr4__]: Don't export _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv. From-SVN: r184598 --- contrib/ChangeLog | 5 ++++ contrib/make_sunver.pl | 21 --------------- libgomp/ChangeLog | 16 +++++++++++ libgomp/Makefile.am | 28 +++++++++---------- libgomp/Makefile.in | 25 +++++++++-------- libgomp/acinclude.m4 | 7 ++--- libgomp/configure | 24 +++-------------- libstdc++-v3/ChangeLog | 15 +++++++++++ libstdc++-v3/acinclude.m4 | 7 ++--- libstdc++-v3/config/abi/pre/gnu.ver | 10 ++++--- libstdc++-v3/configure | 42 +++++++++-------------------- libstdc++-v3/src/Makefile.am | 23 +++++++--------- libstdc++-v3/src/Makefile.in | 24 ++++++++--------- 13 files changed, 111 insertions(+), 136 deletions(-) diff --git a/contrib/ChangeLog b/contrib/ChangeLog index aeaee192b36..50948870945 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2012-02-27 Rainer Orth + + PR libstdc++/52188 + * make_sunver.pl: Remove #ifdef handling. + 2012-02-17 Doug Kwan * contrib/testsuite-management/validate_failures.py diff --git a/contrib/make_sunver.pl b/contrib/make_sunver.pl index 96ad22c2311..afdf973f5da 100644 --- a/contrib/make_sunver.pl +++ b/contrib/make_sunver.pl @@ -156,9 +156,6 @@ my $glob = 'glob'; # We're currently inside `extern "C++"', which Sun ld doesn't understand. my $in_extern = 0; -# We're currently inside a conditional section: just skip it. -my $in_ifdef = 0; - # The c++filt command to use. This *must* be GNU c++filt; the Sun Studio # c++filt doesn't handle the GNU mangling style. my $cxxfilt = $ENV{'CXXFILT'} || "c++filt"; @@ -183,15 +180,6 @@ printf "# Omitted archives with corresponding shared libraries: %s\n", print "#\n\n"; while () { - # End of skipped section. - if (/^[ \t]*\#endif/) { - $in_ifdef = 0; - next; - } - - # Just skip a conditional section. - if ($in_ifdef) { next; } - # Lines of the form '};' if (/^([ \t]*)(\}[ \t]*;[ \t]*)$/) { $glob = 'glob'; @@ -216,15 +204,6 @@ while () { print; next; } - # Special comments that look like C preprocessor conditionals. - # Just skip the contents for now. - # FIXME: Allow passing in conditionals from the command line to really - # control the skipping. - if (/^[ \t]*\#ifdef/) { - $in_ifdef = 1; - next; - } - # Comment and blank lines if (/^[ \t]*\#/) { print; next; } if (/^[ \t]*$/) { print; next; } diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 95a6303738e..c0d578f3e9e 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,19 @@ +2012-02-27 Rainer Orth + + PR libstdc++/52188 + * acinclude.m4 (LIBGOMP_ENABLE_SYMVERS): Remove symvers_renaming. + Remove ENABLE_SYMVERS_SOL2. + * configure: Regenerate. + * Makefile.am [LIBGOMP_BUILD_VERSIONED_SHLIB] (comma): New variable. + (PREPROCESS): New variable. + (libgomp.ver): New target. + [LIBGOMP_BUILD_VERSIONED_SHLIB && + LIBGOMP_BUILD_VERSIONED_SHLIB_GNU]: Remove + LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2 handling. + Use libgomp.ver. + [LIBGOMP_BUILD_VERSIONED_SHLIB_SUN]: Use libgomp.ver, libgomp.ver-sun. + * Makefile.in: Regenerate. + 2012-02-14 Walter Lee * configure.tgt: Handle tilegx and tilepro. diff --git a/libgomp/Makefile.am b/libgomp/Makefile.am index c0c91678bab..2bc4986ad18 100644 --- a/libgomp/Makefile.am +++ b/libgomp/Makefile.am @@ -22,26 +22,26 @@ toolexeclib_LTLIBRARIES = libgomp.la nodist_toolexeclib_HEADERS = libgomp.spec if LIBGOMP_BUILD_VERSIONED_SHLIB +# -Wc is only a libtool option. +comma = , +PREPROCESS = $(subst -Wc$(comma), , $(COMPILE)) -E + +libgomp.ver: $(top_srcdir)/libgomp.map + $(EGREP) -v '#(#| |$$)' $< | \ + $(PREPROCESS) -P -include config.h - > $@ || (rm -f $@ ; exit 1) + if LIBGOMP_BUILD_VERSIONED_SHLIB_GNU -if LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2 -libgomp_version_script = -Wl,--version-script,libgomp.map-sol2 -libgomp_version_dep = libgomp.map-sol2 -libgomp.map-sol2 : $(top_srcdir)/libgomp.map - sed -e '/^#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT/,/^#endif/d' $< \ - > $@ || (rm -f $@ ; exit 1) -else -libgomp_version_script = -Wl,--version-script,$(top_srcdir)/libgomp.map -libgomp_version_dep = $(top_srcdir)/libgomp.map -endif +libgomp_version_script = -Wl,--version-script,libgomp.ver +libgomp_version_dep = libgomp.ver endif if LIBGOMP_BUILD_VERSIONED_SHLIB_SUN -libgomp_version_script = -Wl,-M,libgomp.map-sun -libgomp_version_dep = libgomp.map-sun -libgomp.map-sun : $(top_srcdir)/libgomp.map \ +libgomp_version_script = -Wl,-M,libgomp.ver-sun +libgomp_version_dep = libgomp.ver-sun +libgomp.ver-sun : libgomp.ver \ $(top_srcdir)/../contrib/make_sunver.pl \ $(libgomp_la_OBJECTS) $(libgomp_la_LIBADD) perl $(top_srcdir)/../contrib/make_sunver.pl \ - $(top_srcdir)/libgomp.map \ + libgomp.ver \ $(libgomp_la_OBJECTS:%.lo=.libs/%.o) \ `echo $(libgomp_la_LIBADD) | \ sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in index b81936ac5ca..ecc010eda4b 100644 --- a/libgomp/Makefile.in +++ b/libgomp/Makefile.in @@ -298,14 +298,16 @@ AM_CFLAGS = $(XCFLAGS) AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS) toolexeclib_LTLIBRARIES = libgomp.la nodist_toolexeclib_HEADERS = libgomp.spec + +# -Wc is only a libtool option. +@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@comma = , +@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@PREPROCESS = $(subst -Wc$(comma), , $(COMPILE)) -E @LIBGOMP_BUILD_VERSIONED_SHLIB_FALSE@libgomp_version_script = -@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_FALSE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_script = -Wl,--version-script,$(top_srcdir)/libgomp.map -@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_script = -Wl,--version-script,libgomp.map-sol2 -@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_script = -Wl,-M,libgomp.map-sun +@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_script = -Wl,--version-script,libgomp.ver +@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_script = -Wl,-M,libgomp.ver-sun @LIBGOMP_BUILD_VERSIONED_SHLIB_FALSE@libgomp_version_dep = -@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_FALSE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_dep = $(top_srcdir)/libgomp.map -@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_dep = libgomp.map-sol2 -@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_dep = libgomp.map-sun +@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_dep = libgomp.ver +@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_dep = libgomp.ver-sun libgomp_version_info = -version-info $(libtool_VERSION) libgomp_la_LDFLAGS = $(libgomp_version_info) $(libgomp_version_script) \ $(lt_host_flags) @@ -1066,14 +1068,15 @@ uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ vpath % $(strip $(search_path)) -@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp.map-sol2 : $(top_srcdir)/libgomp.map -@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ sed -e '/^#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT/,/^#endif/d' $< \ -@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ > $@ || (rm -f $@ ; exit 1) -@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp.map-sun : $(top_srcdir)/libgomp.map \ + +@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp.ver: $(top_srcdir)/libgomp.map +@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ $(EGREP) -v '#(#| |$$)' $< | \ +@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ $(PREPROCESS) -P -include config.h - > $@ || (rm -f $@ ; exit 1) +@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp.ver-sun : libgomp.ver \ @LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ $(top_srcdir)/../contrib/make_sunver.pl \ @LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ $(libgomp_la_OBJECTS) $(libgomp_la_LIBADD) @LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ perl $(top_srcdir)/../contrib/make_sunver.pl \ -@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ $(top_srcdir)/libgomp.map \ +@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ libgomp.ver \ @LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ $(libgomp_la_OBJECTS:%.lo=.libs/%.o) \ @LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ `echo $(libgomp_la_LIBADD) | \ @LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ diff --git a/libgomp/acinclude.m4 b/libgomp/acinclude.m4 index 4a4b62f01c3..d43aa885474 100644 --- a/libgomp/acinclude.m4 +++ b/libgomp/acinclude.m4 @@ -355,15 +355,12 @@ if test $enable_symvers != no ; then # The Solaris 2 runtime linker doesn't support the GNU extension of # binding the same symbol to different versions solaris2*) - symvers_renaming=no ;; + ;; # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. *) AC_DEFINE(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT, 1, [Define to 1 if the target runtime linker supports binding the same symbol to different versions.]) - symvers_renaming=yes ;; + ;; esac -else - symvers_renaming=no fi -AM_CONDITIONAL(LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2, test $symvers_renaming = no) ]) diff --git a/libgomp/configure b/libgomp/configure index 6f25c6f5eb9..8ed841a06e0 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -619,8 +619,6 @@ link_gomp XLDFLAGS XCFLAGS config_path -LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_FALSE -LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_FALSE LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_FALSE @@ -11082,7 +11080,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11085 "configure" +#line 11083 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11188,7 +11186,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11191 "configure" +#line 11189 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15994,25 +15992,15 @@ if test $enable_symvers != no ; then # The Solaris 2 runtime linker doesn't support the GNU extension of # binding the same symbol to different versions solaris2*) - symvers_renaming=no ;; + ;; # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. *) $as_echo "#define HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1" >>confdefs.h - symvers_renaming=yes ;; + ;; esac -else - symvers_renaming=no fi - if test $symvers_renaming = no; then - LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE= - LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_FALSE='#' -else - LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE='#' - LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_FALSE= -fi - if test $enable_symvers = gnu; then @@ -16404,10 +16392,6 @@ if test -z "${LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE}" && test -z "${LIBGOMP_BUI as_fn_error "conditional \"LIBGOMP_BUILD_VERSIONED_SHLIB_SUN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_TRUE}" && test -z "${LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2_FALSE}"; then - as_fn_error "conditional \"LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${USE_FORTRAN_TRUE}" && test -z "${USE_FORTRAN_FALSE}"; then as_fn_error "conditional \"USE_FORTRAN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4edf895ec90..7b26bef2467 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,18 @@ +2012-02-27 Rainer Orth + + PR libstdc++/52188 + * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Remove symvers_renaming. + Remove ENABLE_SYMVERS_SOL2. + * configure: Regenerate. + * src/Makefile.am [ENABLE_SYMVERS] (libstdc++-symbols.ver): + Postprocess mapfile. + [ENABLE_SYMVERS_GNU]: Remove ENABLE_SYMVERS_SOL2 handling. + * src/Makefile.in: Regenerate. + + * config/abi/pre/gnu.ver (GLIBCXX_3.4.5) [!__sun__ && !__svr4__]: + Don't export + _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv. + 2012-02-25 John David Anglin PR testsuite/52201 diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index b832527ef28..fe37a91a397 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3264,17 +3264,14 @@ if test $enable_symvers != no ; then # The Solaris 2 runtime linker doesn't support the GNU extension of # binding the same symbol to different versions solaris2*) - symvers_renaming=no ;; + ;; # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. *) AC_DEFINE(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT, 1, [Define to 1 if the target runtime linker supports binding the same symbol to different versions.]) - symvers_renaming=yes ;; + ;; esac -else - symvers_renaming=no fi -GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SOL2, test $symvers_renaming = no) # Now, set up compatibility support, if any. # In addition, need this to deal with std::size_t mangling in diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index 9657024e3f0..b99a8121680 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -1,7 +1,7 @@ ## Linker script for GNU versioning (GNU ld 2.13.91+ only.) ## -## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 -## Free Software Foundation, Inc. +## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +## 2011, 2012 Free Software Foundation, Inc. ## ## This file is part of the GNU ISO C++ Library. This library is free ## software; you can redistribute it and/or modify it under the @@ -890,8 +890,12 @@ GLIBCXX_3.4.5 { _ZNSt11char_traitsI[cw]E2eqERK[cw]S2_; + # Those template instantiations weren't exported on Solaris in GCC 4.6 + # and aren't necessary for correct operation, so don't emit them now + # (PR libstdc++/52188). +#if !defined(__sun__) && !defined(__svr4__) _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv; - +#endif } GLIBCXX_3.4.4; GLIBCXX_3.4.6 { diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index a15c05df05a..d3444e05099 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -644,8 +644,6 @@ GLIBCXX_LDBL_COMPAT_TRUE ENABLE_VISIBILITY_FALSE ENABLE_VISIBILITY_TRUE libtool_VERSION -ENABLE_SYMVERS_SOL2_FALSE -ENABLE_SYMVERS_SOL2_TRUE ENABLE_SYMVERS_SUN_FALSE ENABLE_SYMVERS_SUN_TRUE ENABLE_SYMVERS_DARWIN_FALSE @@ -11499,7 +11497,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11502 "configure" +#line 11500 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11605,7 +11603,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11608 "configure" +#line 11606 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -14963,7 +14961,7 @@ fi # # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. cat > conftest.$ac_ext << EOF -#line 14966 "configure" +#line 14964 "configure" struct S { ~S(); }; void bar(); void foo() @@ -15298,7 +15296,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; } # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF -#line 15301 "configure" +#line 15299 "configure" int main() { typedef bool atomic_type; @@ -15333,7 +15331,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15336 "configure" +#line 15334 "configure" int main() { typedef short atomic_type; @@ -15368,7 +15366,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15371 "configure" +#line 15369 "configure" int main() { // NB: _Atomic_word not necessarily int. @@ -15404,7 +15402,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15407 "configure" +#line 15405 "configure" int main() { typedef long long atomic_type; @@ -15484,7 +15482,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15487 "configure" +#line 15485 "configure" int main() { _Decimal32 d1; @@ -15526,7 +15524,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15529 "configure" +#line 15527 "configure" template struct same { typedef T2 type; }; @@ -15560,7 +15558,7 @@ $as_echo "$enable_int128" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15563 "configure" +#line 15561 "configure" template struct same { typedef T2 type; }; @@ -64998,19 +64996,16 @@ if test $enable_symvers != no ; then # The Solaris 2 runtime linker doesn't support the GNU extension of # binding the same symbol to different versions solaris2*) - symvers_renaming=no ;; + ;; # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. *) $as_echo "#define HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1" >>confdefs.h - symvers_renaming=yes ;; + ;; esac -else - symvers_renaming=no fi - # Now, set up compatibility support, if any. # In addition, need this to deal with std::size_t mangling in # src/compatibility.cc. In a perfect world, could use @@ -66201,15 +66196,6 @@ else fi - if test $symvers_renaming = no; then - ENABLE_SYMVERS_SOL2_TRUE= - ENABLE_SYMVERS_SOL2_FALSE='#' -else - ENABLE_SYMVERS_SOL2_TRUE='#' - ENABLE_SYMVERS_SOL2_FALSE= -fi - - if test $enable_libstdcxx_visibility = yes; then ENABLE_VISIBILITY_TRUE= ENABLE_VISIBILITY_FALSE='#' @@ -66637,10 +66623,6 @@ if test -z "${ENABLE_SYMVERS_SUN_TRUE}" && test -z "${ENABLE_SYMVERS_SUN_FALSE}" as_fn_error "conditional \"ENABLE_SYMVERS_SUN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${ENABLE_SYMVERS_SOL2_TRUE}" && test -z "${ENABLE_SYMVERS_SOL2_FALSE}"; then - as_fn_error "conditional \"ENABLE_SYMVERS_SOL2\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${ENABLE_VISIBILITY_TRUE}" && test -z "${ENABLE_VISIBILITY_FALSE}"; then as_fn_error "conditional \"ENABLE_VISIBILITY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 2cd27749fa6..f3ca0d7960e 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -102,34 +102,29 @@ CXXLINK = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ if ENABLE_SYMVERS libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ $(port_specific_symbol_files) - cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver - chmod +w ./libstdc++-symbols.ver + cp ${glibcxx_srcdir}/$(SYMVER_FILE) $@.tmp + chmod +w $@.tmp if test "x$(port_specific_symbol_files)" != x; then \ if grep '^# Appended to version file.' \ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ - cat $(port_specific_symbol_files) >> $@; \ + cat $(port_specific_symbol_files) >> $@.tmp; \ else \ - sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ - sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ - cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ + sed -n '1,/DO NOT DELETE/p' $@.tmp > tmp.top; \ + sed -n '/DO NOT DELETE/,$$p' $@.tmp > tmp.bottom; \ + cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@.tmp; \ rm tmp.top tmp.bottom; \ fi; \ fi + $(EGREP) -v '#(#| |$$)' $@.tmp | \ + $(COMPILE) -E -P -include config.h - > $@ || (rm -f $@ ; exit 1) + rm -f $@.tmp CLEANFILES = libstdc++-symbols.ver if ENABLE_SYMVERS_GNU -if ENABLE_SYMVERS_SOL2 -version_arg = -Wl,--version-script,libstdc++-symbols.ver-sol2 -version_dep = libstdc++-symbols.ver-sol2 -libstdc++-symbols.ver-sol2 : libstdc++-symbols.ver - sed -e '/^#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT/,/^#endif/d' $< \ - > $@ || (rm -f $@ ; exit 1) -else version_arg = -Wl,--version-script=libstdc++-symbols.ver version_dep = libstdc++-symbols.ver endif -endif if ENABLE_SYMVERS_GNU_NAMESPACE version_arg = -Wl,--version-script=libstdc++-symbols.ver version_dep = libstdc++-symbols.ver diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 93ed4402784..17a6fb281a9 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -399,14 +399,12 @@ CXXLINK = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ @ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist @ENABLE_SYMVERS_FALSE@version_arg = @ENABLE_SYMVERS_GNU_NAMESPACE_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,--version-script=libstdc++-symbols.ver -@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_FALSE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,--version-script=libstdc++-symbols.ver -@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,--version-script,libstdc++-symbols.ver-sol2 +@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,--version-script=libstdc++-symbols.ver @ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,-M,libstdc++-symbols.ver-sun @ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.explist @ENABLE_SYMVERS_FALSE@version_dep = @ENABLE_SYMVERS_GNU_NAMESPACE_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver -@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_FALSE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver -@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver-sol2 +@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver @ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver-sun @GLIBCXX_BUILD_DEBUG_FALSE@STAMP_DEBUG = @@ -765,22 +763,22 @@ vpath % $(top_srcdir) # Symbol versioning for shared libraries. @ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ @ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) -@ENABLE_SYMVERS_TRUE@ cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver -@ENABLE_SYMVERS_TRUE@ chmod +w ./libstdc++-symbols.ver +@ENABLE_SYMVERS_TRUE@ cp ${glibcxx_srcdir}/$(SYMVER_FILE) $@.tmp +@ENABLE_SYMVERS_TRUE@ chmod +w $@.tmp @ENABLE_SYMVERS_TRUE@ if test "x$(port_specific_symbol_files)" != x; then \ @ENABLE_SYMVERS_TRUE@ if grep '^# Appended to version file.' \ @ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ -@ENABLE_SYMVERS_TRUE@ cat $(port_specific_symbol_files) >> $@; \ +@ENABLE_SYMVERS_TRUE@ cat $(port_specific_symbol_files) >> $@.tmp; \ @ENABLE_SYMVERS_TRUE@ else \ -@ENABLE_SYMVERS_TRUE@ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ -@ENABLE_SYMVERS_TRUE@ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ -@ENABLE_SYMVERS_TRUE@ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ +@ENABLE_SYMVERS_TRUE@ sed -n '1,/DO NOT DELETE/p' $@.tmp > tmp.top; \ +@ENABLE_SYMVERS_TRUE@ sed -n '/DO NOT DELETE/,$$p' $@.tmp > tmp.bottom; \ +@ENABLE_SYMVERS_TRUE@ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@.tmp; \ @ENABLE_SYMVERS_TRUE@ rm tmp.top tmp.bottom; \ @ENABLE_SYMVERS_TRUE@ fi; \ @ENABLE_SYMVERS_TRUE@ fi -@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver-sol2 : libstdc++-symbols.ver -@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@ sed -e '/^#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT/,/^#endif/d' $< \ -@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@ > $@ || (rm -f $@ ; exit 1) +@ENABLE_SYMVERS_TRUE@ $(EGREP) -v '#(#| |$$)' $@.tmp | \ +@ENABLE_SYMVERS_TRUE@ $(COMPILE) -E -P -include config.h - > $@ || (rm -f $@ ; exit 1) +@ENABLE_SYMVERS_TRUE@ rm -f $@.tmp @ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver-sun : libstdc++-symbols.ver \ @ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@ $(toplevel_srcdir)/contrib/make_sunver.pl \ @ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@ $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD)