From 08163f0587b4807e32a9fc0e4a887c8d45a641d1 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Fri, 28 Jun 2013 15:44:38 -0500 Subject: cygwin-gcc 4.7.3 --- gcc47-libstdc.patch | 671 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 671 insertions(+) create mode 100644 gcc47-libstdc.patch (limited to 'gcc47-libstdc.patch') diff --git a/gcc47-libstdc.patch b/gcc47-libstdc.patch new file mode 100644 index 0000000..45ff50e --- /dev/null +++ b/gcc47-libstdc.patch @@ -0,0 +1,671 @@ +--- origsrc/gcc-4.7.2/libstdc++-v3/config/os/mingw32/os_defines.h 2011-12-16 18:43:06.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/config/os/mingw32/os_defines.h 2012-10-31 16:49:35.703125000 +0000 +@@ -72,4 +72,10 @@ + #define _GLIBCXX_CDTOR_CALLABI __thiscall + #endif + ++#ifdef _DLL ++#define _GLIBCXX_IMPORT __attribute__((dllimport)) ++#else ++#define _GLIBCXX_IMPORT ++#endif ++ + #endif +--- origsrc/gcc-4.7.2/libstdc++-v3/config/os/newlib/os_defines.h 2011-01-03 20:52:22.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/config/os/newlib/os_defines.h 2012-10-31 16:49:35.734375000 +0000 +@@ -35,6 +35,8 @@ + + #ifdef __CYGWIN__ + #define _GLIBCXX_GTHREAD_USE_WEAK 0 ++#define __GXX_MERGED_TYPEINFO_NAMES 0 ++#define __GXX_TYPEINFO_EQUALITY_INLINE 0 + + #if defined (_GLIBCXX_DLL) + #define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +@@ -47,6 +49,13 @@ + + // See libstdc++/20806. + #define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 ++ ++#ifdef _DLL ++#define _GLIBCXX_IMPORT __attribute__((dllimport)) ++#else ++#define _GLIBCXX_IMPORT ++#endif ++ + #endif + + #endif +--- origsrc/gcc-4.7.2/libstdc++-v3/include/backward/strstream 2011-02-01 01:31:42.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/backward/strstream 2012-10-31 16:49:37.468750000 +0000 +@@ -62,7 +62,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Class strstreambuf, a streambuf class that manages an array of char. + // Note that this class is not a template. +- class strstreambuf : public basic_streambuf > ++ class _GLIBCXX_IMPORT strstreambuf : public basic_streambuf > + { + public: + // Types. +@@ -124,7 +124,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + }; + + // Class istrstream, an istream that manages a strstreambuf. +- class istrstream : public basic_istream ++ class _GLIBCXX_IMPORT istrstream : public basic_istream + { + public: + explicit istrstream(char*); +@@ -141,7 +141,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + }; + + // Class ostrstream +- class ostrstream : public basic_ostream ++ class _GLIBCXX_IMPORT ostrstream : public basic_ostream + { + public: + ostrstream(); +@@ -158,7 +158,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + }; + + // Class strstream +- class strstream : public basic_iostream ++ class _GLIBCXX_IMPORT strstream : public basic_iostream + { + public: + typedef char char_type; +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/basic_ios.tcc 2011-03-04 21:51:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/basic_ios.tcc 2012-10-31 16:49:37.468750000 +0000 +@@ -176,10 +176,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_ios; ++ extern template class _GLIBCXX_IMPORT basic_ios; + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_ios; ++ extern template class _GLIBCXX_IMPORT basic_ios; + #endif + #endif + +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/c++config 2011-11-02 04:23:33.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/c++config 2012-10-31 16:54:57.125000000 +0000 +@@ -225,6 +225,9 @@ namespace __gnu_cxx + # define _GLIBCXX_END_NAMESPACE_VERSION + #endif + ++#ifndef _GLIBCXX_IMPORT ++#define _GLIBCXX_IMPORT ++#endif + + // Inline namespaces for special modes: debug, parallel, profile. + #if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/codecvt.h 2011-10-14 01:12:40.000000000 +0100 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/codecvt.h 2012-10-31 16:49:37.484375000 +0000 +@@ -479,7 +479,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class codecvt_byname; ++ extern template class _GLIBCXX_IMPORT codecvt_byname; + + extern template + const codecvt& +@@ -490,7 +490,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + has_facet >(const locale&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class codecvt_byname; ++ extern template class _GLIBCXX_IMPORT codecvt_byname; + + extern template + const codecvt& +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/fstream.tcc 2011-03-04 21:51:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/fstream.tcc 2012-10-31 16:49:37.484375000 +0000 +@@ -965,16 +965,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_filebuf; +- extern template class basic_ifstream; +- extern template class basic_ofstream; +- extern template class basic_fstream; ++ extern template class _GLIBCXX_IMPORT basic_filebuf; ++ extern template class _GLIBCXX_IMPORT basic_ifstream; ++ extern template class _GLIBCXX_IMPORT basic_ofstream; ++ extern template class _GLIBCXX_IMPORT basic_fstream; + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_filebuf; +- extern template class basic_ifstream; +- extern template class basic_ofstream; +- extern template class basic_fstream; ++ extern template class _GLIBCXX_IMPORT basic_filebuf; ++ extern template class _GLIBCXX_IMPORT basic_ifstream; ++ extern template class _GLIBCXX_IMPORT basic_ofstream; ++ extern template class _GLIBCXX_IMPORT basic_fstream; + #endif + #endif + +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/ios_base.h 2011-08-07 08:27:06.000000000 +0100 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/ios_base.h 2012-10-31 16:49:37.484375000 +0000 +@@ -198,7 +198,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * people will only see @c ios_base when they need to specify the full + * name of the various I/O flags (e.g., the openmodes). + */ +- class ios_base ++ class _GLIBCXX_IMPORT ios_base + { + public: + +@@ -208,7 +208,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * + * 27.4.2.1.1 Class ios_base::failure + */ +- class failure : public exception ++ class _GLIBCXX_IMPORT failure : public exception + { + public: + // _GLIBCXX_RESOLVE_LIB_DEFECTS +@@ -532,7 +532,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Used to initialize standard streams. In theory, g++ could use + // -finit-priority to order this stuff correctly without going + // through these machinations. +- class Init ++ class _GLIBCXX_IMPORT Init + { + friend class ios_base; + public: +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/istream.tcc 2011-03-04 21:51:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/istream.tcc 2012-10-31 16:49:37.484375000 +0000 +@@ -1039,7 +1039,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_istream; ++ extern template class _GLIBCXX_IMPORT basic_istream; + extern template istream& ws(istream&); + extern template istream& operator>>(istream&, char&); + extern template istream& operator>>(istream&, char*); +@@ -1062,10 +1062,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + extern template istream& istream::_M_extract(long double&); + extern template istream& istream::_M_extract(void*&); + +- extern template class basic_iostream; ++ extern template class _GLIBCXX_IMPORT basic_iostream; + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_istream; ++ extern template class _GLIBCXX_IMPORT basic_istream; + extern template wistream& ws(wistream&); + extern template wistream& operator>>(wistream&, wchar_t&); + extern template wistream& operator>>(wistream&, wchar_t*); +@@ -1084,7 +1084,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + extern template wistream& wistream::_M_extract(long double&); + extern template wistream& wistream::_M_extract(void*&); + +- extern template class basic_iostream; ++ extern template class _GLIBCXX_IMPORT basic_iostream; + #endif + #endif + +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/locale_classes.h 2011-12-10 15:33:06.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/locale_classes.h 2012-10-31 16:49:37.484375000 +0000 +@@ -61,7 +61,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * This library supports efficient construction and copying of locales + * through a reference counting implementation of the locale class. + */ +- class locale ++ class _GLIBCXX_IMPORT locale + { + public: + // Types: +@@ -69,9 +69,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + typedef int category; + + // Forward decls and friends: +- class facet; +- class id; +- class _Impl; ++ class _GLIBCXX_IMPORT facet; ++ class _GLIBCXX_IMPORT id; ++ class _GLIBCXX_IMPORT _Impl; + + friend class facet; + friend class _Impl; +@@ -337,7 +337,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * + * Facets may not be copied or assigned. + */ +- class locale::facet ++ class _GLIBCXX_IMPORT locale::facet + { + private: + friend class locale; +@@ -435,7 +435,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * cannot be used in a locale. The locale::id ensures that each class + * type gets a unique identifier. + */ +- class locale::id ++ class _GLIBCXX_IMPORT locale::id + { + private: + friend class locale; +@@ -474,7 +474,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + + // Implementation object for locale. +- class locale::_Impl ++ class _GLIBCXX_IMPORT locale::_Impl + { + public: + // Friends. +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/locale_classes.tcc 2011-12-10 15:33:06.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/locale_classes.tcc 2012-10-31 16:49:37.500000000 +0000 +@@ -265,8 +265,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class collate; +- extern template class collate_byname; ++ extern template class _GLIBCXX_IMPORT collate; ++ extern template class _GLIBCXX_IMPORT collate_byname; + + extern template + const collate& +@@ -277,8 +277,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + has_facet >(const locale&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class collate; +- extern template class collate_byname; ++ extern template class _GLIBCXX_IMPORT collate; ++ extern template class _GLIBCXX_IMPORT collate_byname; + + extern template + const collate& +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/locale_facets.h 2012-02-23 22:14:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/locale_facets.h 2012-10-31 16:49:37.500000000 +0000 +@@ -673,7 +673,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * optimizations as well. + */ + template<> +- class ctype : public locale::facet, public ctype_base ++ class _GLIBCXX_IMPORT ctype : public locale::facet, public ctype_base + { + public: + // Types: +@@ -1174,7 +1174,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * __ctype_abstract_base. + */ + template<> +- class ctype : public __ctype_abstract_base ++ class _GLIBCXX_IMPORT ctype : public __ctype_abstract_base + { + public: + // Types: +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/locale_facets.tcc 2011-03-04 21:51:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/locale_facets.tcc 2012-10-31 17:00:42.531250000 +0000 +@@ -1277,11 +1277,11 @@ _GLIBCXX_END_NAMESPACE_LDBL + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class numpunct; +- extern template class numpunct_byname; +- extern template class _GLIBCXX_NAMESPACE_LDBL num_get; +- extern template class _GLIBCXX_NAMESPACE_LDBL num_put; +- extern template class ctype_byname; ++ extern template class _GLIBCXX_IMPORT numpunct; ++ extern template class _GLIBCXX_IMPORT numpunct_byname; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_NAMESPACE_LDBL num_get; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_NAMESPACE_LDBL num_put; ++ extern template class _GLIBCXX_IMPORT ctype_byname; + + extern template + const ctype& +@@ -1316,11 +1316,11 @@ _GLIBCXX_END_NAMESPACE_LDBL + has_facet >(const locale&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class numpunct; +- extern template class numpunct_byname; +- extern template class _GLIBCXX_NAMESPACE_LDBL num_get; +- extern template class _GLIBCXX_NAMESPACE_LDBL num_put; +- extern template class ctype_byname; ++ extern template class _GLIBCXX_IMPORT numpunct; ++ extern template class _GLIBCXX_IMPORT numpunct_byname; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_NAMESPACE_LDBL num_get; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_NAMESPACE_LDBL num_put; ++ extern template class _GLIBCXX_IMPORT ctype_byname; + + extern template + const ctype& +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/locale_facets_nonio.tcc 2011-03-04 21:51:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/locale_facets_nonio.tcc 2012-10-31 17:00:42.546875000 +0000 +@@ -1216,19 +1216,19 @@ _GLIBCXX_END_NAMESPACE_LDBL + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class moneypunct; +- extern template class moneypunct; +- extern template class moneypunct_byname; +- extern template class moneypunct_byname; +- extern template class _GLIBCXX_NAMESPACE_LDBL money_get; +- extern template class _GLIBCXX_NAMESPACE_LDBL money_put; +- extern template class __timepunct; +- extern template class time_put; +- extern template class time_put_byname; +- extern template class time_get; +- extern template class time_get_byname; +- extern template class messages; +- extern template class messages_byname; ++ extern template class _GLIBCXX_IMPORT moneypunct; ++ extern template class _GLIBCXX_IMPORT moneypunct; ++ extern template class _GLIBCXX_IMPORT moneypunct_byname; ++ extern template class _GLIBCXX_IMPORT moneypunct_byname; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_NAMESPACE_LDBL money_get; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_NAMESPACE_LDBL money_put; ++ extern template class _GLIBCXX_IMPORT __timepunct; ++ extern template class _GLIBCXX_IMPORT time_put; ++ extern template class _GLIBCXX_IMPORT time_put_byname; ++ extern template class _GLIBCXX_IMPORT time_get; ++ extern template class _GLIBCXX_IMPORT time_get_byname; ++ extern template class _GLIBCXX_IMPORT messages; ++ extern template class _GLIBCXX_IMPORT messages_byname; + + extern template + const moneypunct& +@@ -1291,19 +1291,19 @@ _GLIBCXX_END_NAMESPACE_LDBL + has_facet >(const locale&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class moneypunct; +- extern template class moneypunct; +- extern template class moneypunct_byname; +- extern template class moneypunct_byname; +- extern template class _GLIBCXX_NAMESPACE_LDBL money_get; +- extern template class _GLIBCXX_NAMESPACE_LDBL money_put; +- extern template class __timepunct; +- extern template class time_put; +- extern template class time_put_byname; +- extern template class time_get; +- extern template class time_get_byname; +- extern template class messages; +- extern template class messages_byname; ++ extern template class _GLIBCXX_IMPORT moneypunct; ++ extern template class _GLIBCXX_IMPORT moneypunct; ++ extern template class _GLIBCXX_IMPORT moneypunct_byname; ++ extern template class _GLIBCXX_IMPORT moneypunct_byname; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_NAMESPACE_LDBL money_get; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_NAMESPACE_LDBL money_put; ++ extern template class _GLIBCXX_IMPORT __timepunct; ++ extern template class _GLIBCXX_IMPORT time_put; ++ extern template class _GLIBCXX_IMPORT time_put_byname; ++ extern template class _GLIBCXX_IMPORT time_get; ++ extern template class _GLIBCXX_IMPORT time_get_byname; ++ extern template class _GLIBCXX_IMPORT messages; ++ extern template class _GLIBCXX_IMPORT messages_byname; + + extern template + const moneypunct& +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/ostream.tcc 2011-03-04 21:51:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/ostream.tcc 2012-10-31 16:49:37.515625000 +0000 +@@ -358,7 +358,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_ostream; ++ extern template class _GLIBCXX_IMPORT basic_ostream; + extern template ostream& endl(ostream&); + extern template ostream& ends(ostream&); + extern template ostream& flush(ostream&); +@@ -381,7 +381,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + extern template ostream& ostream::_M_insert(const void*); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_ostream; ++ extern template class _GLIBCXX_IMPORT basic_ostream; + extern template wostream& endl(wostream&); + extern template wostream& ends(wostream&); + extern template wostream& flush(wostream&); +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/sstream.tcc 2011-03-04 21:51:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/sstream.tcc 2012-10-31 16:49:37.515625000 +0000 +@@ -271,16 +271,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_stringbuf; +- extern template class basic_istringstream; +- extern template class basic_ostringstream; +- extern template class basic_stringstream; ++ extern template class _GLIBCXX_IMPORT basic_stringbuf; ++ extern template class _GLIBCXX_IMPORT basic_istringstream; ++ extern template class _GLIBCXX_IMPORT basic_ostringstream; ++ extern template class _GLIBCXX_IMPORT basic_stringstream; + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_stringbuf; +- extern template class basic_istringstream; +- extern template class basic_ostringstream; +- extern template class basic_stringstream; ++ extern template class _GLIBCXX_IMPORT basic_stringbuf; ++ extern template class _GLIBCXX_IMPORT basic_istringstream; ++ extern template class _GLIBCXX_IMPORT basic_ostringstream; ++ extern template class _GLIBCXX_IMPORT basic_stringstream; + #endif + #endif + +--- origsrc/gcc-4.7.2/libstdc++-v3/include/bits/streambuf.tcc 2011-03-04 21:51:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/bits/streambuf.tcc 2012-10-31 16:49:37.515625000 +0000 +@@ -147,7 +147,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_streambuf; ++ extern template class _GLIBCXX_IMPORT basic_streambuf; + extern template + streamsize + __copy_streambufs(basic_streambuf*, +@@ -158,7 +158,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + basic_streambuf*, bool&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_streambuf; ++ extern template class _GLIBCXX_IMPORT basic_streambuf; + extern template + streamsize + __copy_streambufs(basic_streambuf*, +--- origsrc/gcc-4.7.2/libstdc++-v3/include/ext/concurrence.h 2012-07-16 23:34:13.000000000 +0100 ++++ src/gcc-4.7.2/libstdc++-v3/include/ext/concurrence.h 2012-10-31 16:49:37.515625000 +0000 +@@ -65,7 +65,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + // NB: As this is used in libsupc++, need to only depend on + // exception. No stdexception classes, no use of std::string. +- class __concurrence_lock_error : public std::exception ++ class _GLIBCXX_IMPORT __concurrence_lock_error : public std::exception + { + public: + virtual char const* +@@ -73,7 +73,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + { return "__gnu_cxx::__concurrence_lock_error"; } + }; + +- class __concurrence_unlock_error : public std::exception ++ class _GLIBCXX_IMPORT __concurrence_unlock_error : public std::exception + { + public: + virtual char const* +--- origsrc/gcc-4.7.2/libstdc++-v3/include/std/iostream 2011-01-30 22:39:36.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/std/iostream 2012-10-31 16:53:39.078125000 +0000 +@@ -58,16 +58,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * linked to above. + */ + //@{ +- extern istream cin; /// Linked to standard input +- extern ostream cout; /// Linked to standard output +- extern ostream cerr; /// Linked to standard error (unbuffered) +- extern ostream clog; /// Linked to standard error (buffered) ++ extern _GLIBCXX_IMPORT istream cin; /// Linked to standard input ++ extern _GLIBCXX_IMPORT ostream cout; /// Linked to standard output ++ extern _GLIBCXX_IMPORT ostream cerr; /// Linked to standard error (unbuffered) ++ extern _GLIBCXX_IMPORT ostream clog; /// Linked to standard error (buffered) + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern wistream wcin; /// Linked to standard input +- extern wostream wcout; /// Linked to standard output +- extern wostream wcerr; /// Linked to standard error (unbuffered) +- extern wostream wclog; /// Linked to standard error (buffered) ++ extern _GLIBCXX_IMPORT wistream wcin; /// Linked to standard input ++ extern _GLIBCXX_IMPORT wostream wcout; /// Linked to standard output ++ extern _GLIBCXX_IMPORT wostream wcerr; /// Linked to standard error (unbuffered) ++ extern _GLIBCXX_IMPORT wostream wclog; /// Linked to standard error (buffered) + #endif + //@} + +--- origsrc/gcc-4.7.2/libstdc++-v3/include/std/stdexcept 2011-12-06 20:03:25.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/include/std/stdexcept 2012-10-31 17:02:54.890625000 +0000 +@@ -53,7 +53,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * program runs (e.g., violations of class invariants). + * @brief One of two subclasses of exception. + */ +- class logic_error : public exception ++ class _GLIBCXX_IMPORT logic_error : public exception + { + string _M_msg; + +@@ -72,7 +72,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** Thrown by the library, or by you, to report domain errors (domain in + * the mathematical sense). */ +- class domain_error : public logic_error ++ class _GLIBCXX_IMPORT domain_error : public logic_error + { + public: + explicit domain_error(const string& __arg); +@@ -80,7 +80,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + }; + + /** Thrown to report invalid arguments to functions. */ +- class invalid_argument : public logic_error ++ class _GLIBCXX_IMPORT invalid_argument : public logic_error + { + public: + explicit invalid_argument(const string& __arg); +@@ -89,7 +89,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** Thrown when an object is constructed that would exceed its maximum + * permitted size (e.g., a basic_string instance). */ +- class length_error : public logic_error ++ class _GLIBCXX_IMPORT length_error : public logic_error + { + public: + explicit length_error(const string& __arg); +@@ -98,7 +98,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** This represents an argument whose value is not within the expected + * range (e.g., boundary checks in basic_string). */ +- class out_of_range : public logic_error ++ class _GLIBCXX_IMPORT out_of_range : public logic_error + { + public: + explicit out_of_range(const string& __arg); +@@ -110,7 +110,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + * the program executes. + * @brief One of two subclasses of exception. + */ +- class runtime_error : public exception ++ class _GLIBCXX_IMPORT runtime_error : public exception + { + string _M_msg; + +@@ -128,7 +128,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + }; + + /** Thrown to indicate range errors in internal computations. */ +- class range_error : public runtime_error ++ class _GLIBCXX_IMPORT range_error : public runtime_error + { + public: + explicit range_error(const string& __arg); +@@ -144,7 +144,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + }; + + /** Thrown to indicate arithmetic underflow. */ +- class underflow_error : public runtime_error ++ class _GLIBCXX_IMPORT underflow_error : public runtime_error + { + public: + explicit underflow_error(const string& __arg); +--- origsrc/gcc-4.7.2/libstdc++-v3/libsupc++/exception 2011-12-07 04:03:25.000000000 +0800 ++++ src/gcc-4.7.2/libstdc++-v3/libsupc++/exception 2013-02-26 19:27:32.575916600 +0800 +@@ -59,7 +59,7 @@ namespace std + * your own %exception classes, or use a different hierarchy, or to + * throw non-class data (e.g., fundamental types). + */ +- class exception ++ class _GLIBCXX_IMPORT exception + { + public: + exception() _GLIBCXX_USE_NOEXCEPT { } +@@ -72,7 +72,7 @@ namespace std + + /** If an %exception is thrown which is not listed in a function's + * %exception specification, one of these may be thrown. */ +- class bad_exception : public exception ++ class _GLIBCXX_IMPORT bad_exception : public exception + { + public: + bad_exception() _GLIBCXX_USE_NOEXCEPT { } +--- origsrc/gcc-4.7.2/libstdc++-v3/libsupc++/new 2011-10-12 19:40:58.000000000 +0100 ++++ src/gcc-4.7.2/libstdc++-v3/libsupc++/new 2012-10-31 16:49:37.578125000 +0000 +@@ -53,7 +53,7 @@ namespace std + * + * @c bad_alloc (or classes derived from it) is used to report allocation + * errors from the throwing forms of @c new. */ +- class bad_alloc : public exception ++ class _GLIBCXX_IMPORT bad_alloc : public exception + { + public: + bad_alloc() throw() { } +--- origsrc/gcc-4.7.2/libstdc++-v3/libsupc++/typeinfo 2012-01-27 19:38:56.000000000 +0000 ++++ src/gcc-4.7.2/libstdc++-v3/libsupc++/typeinfo 2012-10-31 17:07:07.796875000 +0000 +@@ -87,7 +87,7 @@ namespace std + * The @c type_info class describes type information generated by + * an implementation. + */ +- class type_info ++ class _GLIBCXX_IMPORT type_info + { + public: + /** Destructor first. Being the first non-inline virtual function, this +@@ -186,7 +186,7 @@ namespace std + * + * If you attempt an invalid @c dynamic_cast expression, an instance of + * this class (or something derived from this class) is thrown. */ +- class bad_cast : public exception ++ class _GLIBCXX_IMPORT bad_cast : public exception + { + public: + bad_cast() _GLIBCXX_USE_NOEXCEPT { } +@@ -203,7 +203,7 @@ namespace std + * @brief Thrown when a NULL pointer in a @c typeid expression is used. + * @ingroup exceptions + */ +- class bad_typeid : public exception ++ class _GLIBCXX_IMPORT bad_typeid : public exception + { + public: + bad_typeid () _GLIBCXX_USE_NOEXCEPT { } +--- origsrc/gcc-4.7.2/libstdc++-v3/testsuite/lib/libstdc++.exp 2012-08-06 22:34:27.000000000 +0800 ++++ src/gcc-4.7.2/libstdc++-v3/testsuite/lib/libstdc++.exp 2013-02-26 19:31:07.934763700 +0800 +@@ -146,6 +146,9 @@ proc libstdc++_init { testfile } { + set gccdir [file dirname $gccdir] + append ld_library_path_tmp ":${gccdir}" + } ++ if { [string match "*-*-cygwin*" $target_triplet] } { ++ append ld_library_path_tmp ":${blddir}/../libgcc" ++ } + v3track gccdir 3 + + # Locate libgomp. This is only required for parallel mode. -- cgit