Module Name:    src
Committed By:   christos
Date:           Tue Apr 23 20:55:53 UTC 2019

Modified Files:
        src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11:
            compatibility-atomic-c++0x.cc compatibility-thread-c++0x.cc
        src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98: compatibility.cc
            istream.cc
        src/external/gpl3/gcc/lib/libstdc++-v3: Makefile

Log Message:
Add an ifdef _GLIBCXX_COMPAT_ that removes the versioned symbol nodes from
libstdc++ and enable it for now only for the random archives but not for the
shared object (although it does not break anything that I've tested to enable
it for the shared object too). Fixes static linking, which does not handle
multiple versioned symbols properly.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.4 -r1.2 \
    
src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc 
\
    
src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
cvs rdiff -u -r1.3 -r1.4 \
    src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/compatibility.cc
cvs rdiff -u -r1.1.1.4 -r1.2 \
    src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/istream.cc
cvs rdiff -u -r1.46 -r1.47 src/external/gpl3/gcc/lib/libstdc++-v3/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
diff -u src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc:1.1.1.4 src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc:1.2
--- src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc:1.1.1.4	Sat Jan 19 05:14:04 2019
+++ src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc	Tue Apr 23 16:55:53 2019
@@ -150,8 +150,12 @@ _GLIBCXX_END_NAMESPACE_VERSION
     && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \
     && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT)
 
+#ifdef _GLIBCXX_COMPAT_
 #define _GLIBCXX_ASM_SYMVER(cur, old, version) \
    asm (".symver " #cur "," #old "@@" #version);
+#else
+#define _GLIBCXX_ASM_SYMVER(cur, old, version)
+#endif
 
 _GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag5clearESt12memory_order, _ZNVSt9__atomic011atomic_flag5clearESt12memory_order, GLIBCXX_3.4.11)
 
Index: src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
diff -u src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc:1.1.1.4 src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc:1.2
--- src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc:1.1.1.4	Sat Jan 19 05:14:05 2019
+++ src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc	Tue Apr 23 16:55:53 2019
@@ -35,8 +35,12 @@
 # error "compatibility-thread-c++0x.cc must be compiled with -std=gnu++0x"
 #endif
 
+#ifdef _GLIBCXX_COMPAT_
 #define _GLIBCXX_ASM_SYMVER(cur, old, version) \
    asm (".symver " #cur "," #old "@@@" #version);
+#else
+#define _GLIBCXX_ASM_SYMVER(cur, old, version)
+#endif
 
 // XXX GLIBCXX_ABI Deprecated
 // gcc-4.6.0

Index: src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/compatibility.cc
diff -u src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/compatibility.cc:1.3 src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/compatibility.cc:1.4
--- src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/compatibility.cc:1.3	Sat Jan 19 07:10:14 2019
+++ src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/compatibility.cc	Tue Apr 23 16:55:53 2019
@@ -365,6 +365,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
 // In the future, GLIBCXX_ABI > 6 should remove all uses of
 // _GLIBCXX_*_SYMVER macros in this file.
 
+#ifdef _GLIBCXX_COMPAT_
 #define _GLIBCXX_3_4_SYMVER(XXname, name) \
    extern "C" void \
    _X##name() \
@@ -379,6 +380,11 @@ _GLIBCXX_END_NAMESPACE_VERSION
 
 #define _GLIBCXX_ASM_SYMVER(cur, old, version) \
    asm (".symver " #cur "," #old "@@" #version);
+#else
+#define _GLIBCXX_3_4_SYMVER(XXname, name)
+#define _GLIBCXX_3_4_5_SYMVER(XXname, name)
+#define _GLIBCXX_ASM_SYMVER(cur, old, version)
+#endif
 
 #define _GLIBCXX_APPLY_SYMVER _GLIBCXX_3_4_SYMVER
 #include <abi/compatibility.h>

Index: src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/istream.cc
diff -u src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/istream.cc:1.1.1.4 src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/istream.cc:1.2
--- src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/istream.cc:1.1.1.4	Sat Jan 19 05:14:04 2019
+++ src/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/istream.cc	Tue Apr 23 16:55:53 2019
@@ -112,8 +112,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     basic_istream<char>::
     ignore(streamsize __n, int_type __delim)
     {
+#ifdef _GLIBCXX_COMPAT_
       if (traits_type::eq_int_type(__delim, traits_type::eof()))
 	return ignore(__n);
+#endif
 
       _M_gcount = 0;
       sentry __cerb(*this, true);
@@ -354,8 +356,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     basic_istream<wchar_t>::
     ignore(streamsize __n, int_type __delim)
     {
+#ifdef _GLIBCXX_COMPAT_
       if (traits_type::eq_int_type(__delim, traits_type::eof()))
 	return ignore(__n);
+#endif
 
       _M_gcount = 0;
       sentry __cerb(*this, true);

Index: src/external/gpl3/gcc/lib/libstdc++-v3/Makefile
diff -u src/external/gpl3/gcc/lib/libstdc++-v3/Makefile:1.46 src/external/gpl3/gcc/lib/libstdc++-v3/Makefile:1.47
--- src/external/gpl3/gcc/lib/libstdc++-v3/Makefile:1.46	Wed Mar 20 01:09:27 2019
+++ src/external/gpl3/gcc/lib/libstdc++-v3/Makefile	Tue Apr 23 16:55:53 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.46 2019/03/20 05:09:27 mrg Exp $
+#	$NetBSD: Makefile,v 1.47 2019/04/23 20:55:53 christos Exp $
 
 REQUIRETOOLS=	yes
 NOLINT=		# defined
@@ -18,6 +18,8 @@ LIBDPLIBS+=	m ${.CURDIR}/../../../../../
 COPTS.random.cc+=	${${ACTIVE_CC} == "clang":? -mrdrnd :}
 .endif
 
+CSHLIBFLAGS+=	-D_GLIBCXX_COMPAT_
+
 DIST=		${GCCDIST}
 GNUVER=		${DIST}/libstdc++-v3/config/abi/pre/gnu.ver
 SYMBOLS=	libstdc++-symbols.ver

Reply via email to