diff options
Diffstat (limited to 'gcc45-libstdc.diff')
-rw-r--r-- | gcc45-libstdc.diff | 791 |
1 files changed, 791 insertions, 0 deletions
diff --git a/gcc45-libstdc.diff b/gcc45-libstdc.diff new file mode 100644 index 0000000..79bc0c6 --- /dev/null +++ b/gcc45-libstdc.diff @@ -0,0 +1,791 @@ +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/config/os/mingw32/os_defines.h src/gcc-4.5.0/libstdc++-v3/config/os/mingw32/os_defines.h +--- origsrc/gcc-4.5.0/libstdc++-v3/config/os/mingw32/os_defines.h 2009-11-30 23:22:04.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/config/os/mingw32/os_defines.h 2010-04-19 05:11:01.671875000 +0100 +@@ -60,4 +60,10 @@ + // See libstdc++/37522. + #define _GLIBCXX_HAVE_BROKEN_VSWPRINTF 1 + ++#ifdef _DLL ++#define _GLIBCXX_IMPORT __attribute__((dllimport)) ++#else ++#define _GLIBCXX_IMPORT ++#endif ++ + #endif +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/config/os/newlib/os_defines.h src/gcc-4.5.0/libstdc++-v3/config/os/newlib/os_defines.h +--- origsrc/gcc-4.5.0/libstdc++-v3/config/os/newlib/os_defines.h 2009-11-30 23:22:04.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/config/os/newlib/os_defines.h 2010-04-19 05:11:01.687500000 +0100 +@@ -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 +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/configure.host src/gcc-4.5.0/libstdc++-v3/configure.host +--- origsrc/gcc-4.5.0/libstdc++-v3/configure.host 2009-11-30 23:22:04.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/configure.host 2010-04-19 05:11:01.703125000 +0100 +@@ -209,6 +209,7 @@ case "${host_os}" in + ;; + cygwin*) + os_include_dir="os/newlib" ++ OPT_LDFLAGS="-Wl,--exclude-modules-for-implib=\`cd ../libsupc++; ls *type_inf*.o -1 | tr '\012' ':'\`tinfo.o:tinfo2.o" + OPT_LDFLAGS="${OPT_LDFLAGS} -no-undefined -bindir \$(bindir)" + ;; + darwin | darwin[1-7] | darwin[1-7].*) +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/backward/strstream src/gcc-4.5.0/libstdc++-v3/include/backward/strstream +--- origsrc/gcc-4.5.0/libstdc++-v3/include/backward/strstream 2010-03-16 22:34:53.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/include/backward/strstream 2010-04-19 05:11:01.703125000 +0100 +@@ -55,7 +55,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + + // Class strstreambuf, a streambuf class that manages an array of char. + // Note that this class is not a template. +- class strstreambuf : public basic_streambuf<char, char_traits<char> > ++ class _GLIBCXX_IMPORT strstreambuf : public basic_streambuf<char, char_traits<char> > + { + public: + // Types. +@@ -117,7 +117,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + }; + + // Class istrstream, an istream that manages a strstreambuf. +- class istrstream : public basic_istream<char> ++ class _GLIBCXX_IMPORT istrstream : public basic_istream<char> + { + public: + explicit istrstream(char*); +@@ -134,7 +134,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + }; + + // Class ostrstream +- class ostrstream : public basic_ostream<char> ++ class _GLIBCXX_IMPORT ostrstream : public basic_ostream<char> + { + public: + ostrstream(); +@@ -151,7 +151,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + }; + + // Class strstream +- class strstream : public basic_iostream<char> ++ class _GLIBCXX_IMPORT strstream : public basic_iostream<char> + { + public: + typedef char char_type; +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/basic_ios.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/basic_ios.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/basic_ios.tcc 2009-04-09 16:00:19.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/basic_ios.tcc 2010-04-19 05:11:01.703125000 +0100 +@@ -175,10 +175,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_ios<char>; ++ extern template class _GLIBCXX_IMPORT basic_ios<char>; + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_ios<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_ios<wchar_t>; + #endif + #endif + +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/c++config src/gcc-4.5.0/libstdc++-v3/include/bits/c++config +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/c++config 2009-11-30 23:22:04.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/c++config 2010-04-19 05:11:01.718750000 +0100 +@@ -376,4 +376,8 @@ _GLIBCXX_END_NAMESPACE + # endif + #endif + ++#ifndef _GLIBCXX_IMPORT ++#define _GLIBCXX_IMPORT ++#endif ++ + // End of prewritten config; the discovered settings follow. +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/codecvt.h src/gcc-4.5.0/libstdc++-v3/include/bits/codecvt.h +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/codecvt.h 2010-02-10 05:45:24.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/codecvt.h 2010-04-19 05:11:01.750000000 +0100 +@@ -476,7 +476,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class codecvt_byname<char, char, mbstate_t>; ++ extern template class _GLIBCXX_IMPORT codecvt_byname<char, char, mbstate_t>; + + extern template + const codecvt<char, char, mbstate_t>& +@@ -487,7 +487,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + has_facet<codecvt<char, char, mbstate_t> >(const locale&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class codecvt_byname<wchar_t, char, mbstate_t>; ++ extern template class _GLIBCXX_IMPORT codecvt_byname<wchar_t, char, mbstate_t>; + + extern template + const codecvt<wchar_t, char, mbstate_t>& +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/fstream.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/fstream.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/fstream.tcc 2009-04-09 16:00:19.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/fstream.tcc 2010-04-19 05:11:01.750000000 +0100 +@@ -908,16 +908,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_filebuf<char>; +- extern template class basic_ifstream<char>; +- extern template class basic_ofstream<char>; +- extern template class basic_fstream<char>; ++ extern template class _GLIBCXX_IMPORT basic_filebuf<char>; ++ extern template class _GLIBCXX_IMPORT basic_ifstream<char>; ++ extern template class _GLIBCXX_IMPORT basic_ofstream<char>; ++ extern template class _GLIBCXX_IMPORT basic_fstream<char>; + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_filebuf<wchar_t>; +- extern template class basic_ifstream<wchar_t>; +- extern template class basic_ofstream<wchar_t>; +- extern template class basic_fstream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_filebuf<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_ifstream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_ofstream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_fstream<wchar_t>; + #endif + #endif + +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/ios_base.h src/gcc-4.5.0/libstdc++-v3/include/bits/ios_base.h +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/ios_base.h 2010-02-17 05:43:24.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/ios_base.h 2010-04-19 05:07:26.125000000 +0100 +@@ -204,7 +204,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * 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: + +@@ -214,7 +214,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * + * 27.4.2.1.1 Class ios_base::failure + */ +- class failure : public exception ++ class _GLIBCXX_IMPORT failure : public exception + { + public: + // _GLIBCXX_RESOLVE_LIB_DEFECTS +@@ -529,7 +529,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // 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: +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/istream.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/istream.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/istream.tcc 2009-09-05 01:18:07.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/istream.tcc 2010-04-19 05:11:01.750000000 +0100 +@@ -1018,7 +1018,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_istream<char>; ++ extern template class _GLIBCXX_IMPORT basic_istream<char>; + extern template istream& ws(istream&); + extern template istream& operator>>(istream&, char&); + extern template istream& operator>>(istream&, char*); +@@ -1041,10 +1041,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + extern template istream& istream::_M_extract(long double&); + extern template istream& istream::_M_extract(void*&); + +- extern template class basic_iostream<char>; ++ extern template class _GLIBCXX_IMPORT basic_iostream<char>; + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_istream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_istream<wchar_t>; + extern template wistream& ws(wistream&); + extern template wistream& operator>>(wistream&, wchar_t&); + extern template wistream& operator>>(wistream&, wchar_t*); +@@ -1063,7 +1063,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + extern template wistream& wistream::_M_extract(long double&); + extern template wistream& wistream::_M_extract(void*&); + +- extern template class basic_iostream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_iostream<wchar_t>; + #endif + #endif + +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_classes.h src/gcc-4.5.0/libstdc++-v3/include/bits/locale_classes.h +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_classes.h 2010-02-17 05:43:24.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/locale_classes.h 2010-04-19 05:11:01.765625000 +0100 +@@ -59,7 +59,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * 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: +@@ -67,9 +67,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + 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; +@@ -334,7 +334,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * + * Facets may not be copied or assigned. + */ +- class locale::facet ++ class _GLIBCXX_IMPORT locale::facet + { + private: + friend class locale; +@@ -429,7 +429,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * 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; +@@ -468,7 +468,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + + + // Implementation object for locale. +- class locale::_Impl ++ class _GLIBCXX_IMPORT locale::_Impl + { + public: + // Friends. +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_classes.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/locale_classes.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_classes.tcc 2009-04-18 22:19:18.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/locale_classes.tcc 2010-04-19 05:11:01.765625000 +0100 +@@ -241,8 +241,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class collate<char>; +- extern template class collate_byname<char>; ++ extern template class _GLIBCXX_IMPORT collate<char>; ++ extern template class _GLIBCXX_IMPORT collate_byname<char>; + + extern template + const collate<char>& +@@ -253,8 +253,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + has_facet<collate<char> >(const locale&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class collate<wchar_t>; +- extern template class collate_byname<wchar_t>; ++ extern template class _GLIBCXX_IMPORT collate<wchar_t>; ++ extern template class _GLIBCXX_IMPORT collate_byname<wchar_t>; + + extern template + const collate<wchar_t>& +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets.h src/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets.h +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets.h 2010-02-19 03:30:46.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets.h 2010-04-19 05:11:01.765625000 +0100 +@@ -670,7 +670,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * optimizations as well. + */ + template<> +- class ctype<char> : public locale::facet, public ctype_base ++ class _GLIBCXX_IMPORT ctype<char> : public locale::facet, public ctype_base + { + public: + // Types: +@@ -1171,7 +1171,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * __ctype_abstract_base<wchar_t>. + */ + template<> +- class ctype<wchar_t> : public __ctype_abstract_base<wchar_t> ++ class _GLIBCXX_IMPORT ctype<wchar_t> : public __ctype_abstract_base<wchar_t> + { + public: + // Types: +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets.tcc 2009-07-18 23:58:10.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets.tcc 2010-04-19 05:11:01.781250000 +0100 +@@ -1276,11 +1276,11 @@ _GLIBCXX_END_LDBL_NAMESPACE + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class numpunct<char>; +- extern template class numpunct_byname<char>; +- extern template class _GLIBCXX_LDBL_NAMESPACE num_get<char>; +- extern template class _GLIBCXX_LDBL_NAMESPACE num_put<char>; +- extern template class ctype_byname<char>; ++ extern template class _GLIBCXX_IMPORT numpunct<char>; ++ extern template class _GLIBCXX_IMPORT numpunct_byname<char>; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_LDBL_NAMESPACE num_get<char>; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_LDBL_NAMESPACE num_put<char>; ++ extern template class _GLIBCXX_IMPORT ctype_byname<char>; + + extern template + const ctype<char>& +@@ -1315,11 +1315,11 @@ _GLIBCXX_END_LDBL_NAMESPACE + has_facet<num_get<char> >(const locale&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class numpunct<wchar_t>; +- extern template class numpunct_byname<wchar_t>; +- extern template class _GLIBCXX_LDBL_NAMESPACE num_get<wchar_t>; +- extern template class _GLIBCXX_LDBL_NAMESPACE num_put<wchar_t>; +- extern template class ctype_byname<wchar_t>; ++ extern template class _GLIBCXX_IMPORT numpunct<wchar_t>; ++ extern template class _GLIBCXX_IMPORT numpunct_byname<wchar_t>; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_LDBL_NAMESPACE num_get<wchar_t>; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_LDBL_NAMESPACE num_put<wchar_t>; ++ extern template class _GLIBCXX_IMPORT ctype_byname<wchar_t>; + + extern template + const ctype<wchar_t>& +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets_nonio.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets_nonio.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets_nonio.tcc 2010-01-07 17:20:45.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/locale_facets_nonio.tcc 2010-04-19 05:11:01.781250000 +0100 +@@ -1214,19 +1214,19 @@ _GLIBCXX_END_LDBL_NAMESPACE + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class moneypunct<char, false>; +- extern template class moneypunct<char, true>; +- extern template class moneypunct_byname<char, false>; +- extern template class moneypunct_byname<char, true>; +- extern template class _GLIBCXX_LDBL_NAMESPACE money_get<char>; +- extern template class _GLIBCXX_LDBL_NAMESPACE money_put<char>; +- extern template class __timepunct<char>; +- extern template class time_put<char>; +- extern template class time_put_byname<char>; +- extern template class time_get<char>; +- extern template class time_get_byname<char>; +- extern template class messages<char>; +- extern template class messages_byname<char>; ++ extern template class _GLIBCXX_IMPORT moneypunct<char, false>; ++ extern template class _GLIBCXX_IMPORT moneypunct<char, true>; ++ extern template class _GLIBCXX_IMPORT moneypunct_byname<char, false>; ++ extern template class _GLIBCXX_IMPORT moneypunct_byname<char, true>; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_LDBL_NAMESPACE money_get<char>; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_LDBL_NAMESPACE money_put<char>; ++ extern template class _GLIBCXX_IMPORT __timepunct<char>; ++ extern template class _GLIBCXX_IMPORT time_put<char>; ++ extern template class _GLIBCXX_IMPORT time_put_byname<char>; ++ extern template class _GLIBCXX_IMPORT time_get<char>; ++ extern template class _GLIBCXX_IMPORT time_get_byname<char>; ++ extern template class _GLIBCXX_IMPORT messages<char>; ++ extern template class _GLIBCXX_IMPORT messages_byname<char>; + + extern template + const moneypunct<char, true>& +@@ -1289,19 +1289,19 @@ _GLIBCXX_END_LDBL_NAMESPACE + has_facet<messages<char> >(const locale&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class moneypunct<wchar_t, false>; +- extern template class moneypunct<wchar_t, true>; +- extern template class moneypunct_byname<wchar_t, false>; +- extern template class moneypunct_byname<wchar_t, true>; +- extern template class _GLIBCXX_LDBL_NAMESPACE money_get<wchar_t>; +- extern template class _GLIBCXX_LDBL_NAMESPACE money_put<wchar_t>; +- extern template class __timepunct<wchar_t>; +- extern template class time_put<wchar_t>; +- extern template class time_put_byname<wchar_t>; +- extern template class time_get<wchar_t>; +- extern template class time_get_byname<wchar_t>; +- extern template class messages<wchar_t>; +- extern template class messages_byname<wchar_t>; ++ extern template class _GLIBCXX_IMPORT moneypunct<wchar_t, false>; ++ extern template class _GLIBCXX_IMPORT moneypunct<wchar_t, true>; ++ extern template class _GLIBCXX_IMPORT moneypunct_byname<wchar_t, false>; ++ extern template class _GLIBCXX_IMPORT moneypunct_byname<wchar_t, true>; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_LDBL_NAMESPACE money_get<wchar_t>; ++ extern template class _GLIBCXX_IMPORT _GLIBCXX_LDBL_NAMESPACE money_put<wchar_t>; ++ extern template class _GLIBCXX_IMPORT __timepunct<wchar_t>; ++ extern template class _GLIBCXX_IMPORT time_put<wchar_t>; ++ extern template class _GLIBCXX_IMPORT time_put_byname<wchar_t>; ++ extern template class _GLIBCXX_IMPORT time_get<wchar_t>; ++ extern template class _GLIBCXX_IMPORT time_get_byname<wchar_t>; ++ extern template class _GLIBCXX_IMPORT messages<wchar_t>; ++ extern template class _GLIBCXX_IMPORT messages_byname<wchar_t>; + + extern template + const moneypunct<wchar_t, true>& +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/ostream.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/ostream.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/ostream.tcc 2009-09-05 01:18:07.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/ostream.tcc 2010-04-19 05:11:01.781250000 +0100 +@@ -357,7 +357,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_ostream<char>; ++ extern template class _GLIBCXX_IMPORT basic_ostream<char>; + extern template ostream& endl(ostream&); + extern template ostream& ends(ostream&); + extern template ostream& flush(ostream&); +@@ -380,7 +380,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + extern template ostream& ostream::_M_insert(const void*); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_ostream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_ostream<wchar_t>; + extern template wostream& endl(wostream&); + extern template wostream& ends(wostream&); + extern template wostream& flush(wostream&); +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/sstream.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/sstream.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/sstream.tcc 2009-04-09 16:00:19.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/sstream.tcc 2010-04-19 05:11:01.796875000 +0100 +@@ -255,16 +255,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_stringbuf<char>; +- extern template class basic_istringstream<char>; +- extern template class basic_ostringstream<char>; +- extern template class basic_stringstream<char>; ++ extern template class _GLIBCXX_IMPORT basic_stringbuf<char>; ++ extern template class _GLIBCXX_IMPORT basic_istringstream<char>; ++ extern template class _GLIBCXX_IMPORT basic_ostringstream<char>; ++ extern template class _GLIBCXX_IMPORT basic_stringstream<char>; + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_stringbuf<wchar_t>; +- extern template class basic_istringstream<wchar_t>; +- extern template class basic_ostringstream<wchar_t>; +- extern template class basic_stringstream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_stringbuf<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_istringstream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_ostringstream<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_stringstream<wchar_t>; + #endif + #endif + +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/bits/streambuf.tcc src/gcc-4.5.0/libstdc++-v3/include/bits/streambuf.tcc +--- origsrc/gcc-4.5.0/libstdc++-v3/include/bits/streambuf.tcc 2009-04-09 16:00:19.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/bits/streambuf.tcc 2010-04-19 05:11:01.796875000 +0100 +@@ -146,7 +146,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. + #if _GLIBCXX_EXTERN_TEMPLATE +- extern template class basic_streambuf<char>; ++ extern template class _GLIBCXX_IMPORT basic_streambuf<char>; + extern template + streamsize + __copy_streambufs(basic_streambuf<char>*, +@@ -157,7 +157,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + basic_streambuf<char>*, bool&); + + #ifdef _GLIBCXX_USE_WCHAR_T +- extern template class basic_streambuf<wchar_t>; ++ extern template class _GLIBCXX_IMPORT basic_streambuf<wchar_t>; + extern template + streamsize + __copy_streambufs(basic_streambuf<wchar_t>*, +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/ext/concurrence.h src/gcc-4.5.0/libstdc++-v3/include/ext/concurrence.h +--- origsrc/gcc-4.5.0/libstdc++-v3/include/ext/concurrence.h 2009-04-09 16:00:19.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/ext/concurrence.h 2010-04-19 05:11:01.796875000 +0100 +@@ -60,7 +60,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + + // 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* +@@ -68,7 +68,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + { 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* +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/std/iostream src/gcc-4.5.0/libstdc++-v3/include/std/iostream +--- origsrc/gcc-4.5.0/libstdc++-v3/include/std/iostream 2010-02-04 18:20:34.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/include/std/iostream 2010-04-19 05:11:01.796875000 +0100 +@@ -56,16 +56,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * 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 + //@} + +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/include/std/stdexcept src/gcc-4.5.0/libstdc++-v3/include/std/stdexcept +--- origsrc/gcc-4.5.0/libstdc++-v3/include/std/stdexcept 2009-04-09 16:00:19.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/include/std/stdexcept 2010-04-19 05:11:01.812500000 +0100 +@@ -50,7 +50,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * 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; + +@@ -70,14 +70,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + + /** 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); + }; + + /** 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); +@@ -85,7 +85,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + + /** 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); +@@ -93,7 +93,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + + /** 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); +@@ -104,7 +104,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + * 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; + +@@ -123,7 +123,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + }; + + /** 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); +@@ -137,7 +137,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + }; + + /** 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); +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/Makefile.am src/gcc-4.5.0/libstdc++-v3/libsupc++/Makefile.am +--- origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/Makefile.am 2009-08-23 08:28:35.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/libsupc++/Makefile.am 2010-04-19 05:11:01.812500000 +0100 +@@ -154,7 +154,8 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --ta + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) + +-LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) ++LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ ++ -no-undefined -bindir $(bindir) + + # 3) We'd have a problem when building the shared libstdc++ object if + # the rules automake generates would be used. We cannot allow g++ to +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/Makefile.in src/gcc-4.5.0/libstdc++-v3/libsupc++/Makefile.in +--- origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/Makefile.in 2010-04-02 19:18:06.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/libsupc++/Makefile.in 2010-04-19 05:11:01.812500000 +0100 +@@ -466,7 +466,9 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --ta + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) + +-LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) ++LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ ++ -no-undefined -bindir $(bindir) ++ + + # 3) We'd have a problem when building the shared libstdc++ object if + # the rules automake generates would be used. We cannot allow g++ to +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/exception src/gcc-4.5.0/libstdc++-v3/libsupc++/exception +--- origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/exception 2010-02-18 17:58:53.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/libsupc++/exception 2010-04-19 05:09:20.750000000 +0100 +@@ -58,7 +58,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() throw() { } +@@ -71,7 +71,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() throw() { } +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/new src/gcc-4.5.0/libstdc++-v3/libsupc++/new +--- origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/new 2010-02-18 17:58:53.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/libsupc++/new 2010-04-19 05:11:01.828125000 +0100 +@@ -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() { } +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/typeinfo src/gcc-4.5.0/libstdc++-v3/libsupc++/typeinfo +--- origsrc/gcc-4.5.0/libstdc++-v3/libsupc++/typeinfo 2010-02-18 17:58:53.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/libsupc++/typeinfo 2010-04-19 05:10:35.125000000 +0100 +@@ -84,7 +84,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 +@@ -171,7 +171,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() throw() { } +@@ -188,7 +188,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 () throw() { } +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/scripts/testsuite_flags.in src/gcc-4.5.0/libstdc++-v3/scripts/testsuite_flags.in +--- origsrc/gcc-4.5.0/libstdc++-v3/scripts/testsuite_flags.in 2007-09-11 23:32:51.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/scripts/testsuite_flags.in 2010-04-19 05:11:01.828125000 +0100 +@@ -27,6 +27,7 @@ EOF + BUILD_DIR=@glibcxx_builddir@ + SRC_DIR=@glibcxx_srcdir@ + PREFIX_DIR=@glibcxx_prefixdir@ ++target=@target@ + query=$1 + + case ${query} in +@@ -71,6 +72,12 @@ case ${query} in + ;; + --cxxldflags) + SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@" ++ case ${target} in ++ *cygwin*) ++ SECTIONLDFLAGS="${SECTIONLDFLAGS} -Wl,--enable-auto-import" ++ ;; ++ esac ++ + echo ${SECTIONLDFLAGS} + ;; + *) +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/src/Makefile.am src/gcc-4.5.0/libstdc++-v3/src/Makefile.am +--- origsrc/gcc-4.5.0/libstdc++-v3/src/Makefile.am 2010-02-22 18:07:07.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/src/Makefile.am 2010-04-19 05:11:01.828125000 +0100 +@@ -210,7 +210,8 @@ libstdc___la_DEPENDENCIES = \ + $(top_builddir)/libsupc++/libsupc++convenience.la + + libstdc___la_LDFLAGS = \ +- -version-info $(libtool_VERSION) ${version_arg} -lm ++ -version-info $(libtool_VERSION) ${version_arg} -lm \ ++ -no-undefined -bindir $(bindir) + + libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS) + +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/src/Makefile.in src/gcc-4.5.0/libstdc++-v3/src/Makefile.in +--- origsrc/gcc-4.5.0/libstdc++-v3/src/Makefile.in 2010-04-02 19:18:06.000000000 +0100 ++++ src/gcc-4.5.0/libstdc++-v3/src/Makefile.in 2010-04-19 05:11:01.828125000 +0100 +@@ -452,7 +452,8 @@ libstdc___la_DEPENDENCIES = \ + $(top_builddir)/libsupc++/libsupc++convenience.la + + libstdc___la_LDFLAGS = \ +- -version-info $(libtool_VERSION) ${version_arg} -lm ++ -version-info $(libtool_VERSION) ${version_arg} -lm \ ++ -no-undefined -bindir $(bindir) + + libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS) + +diff -pruN origsrc/gcc-4.5.0/libstdc++-v3/testsuite/lib/libstdc++.exp src/gcc-4.5.0/libstdc++-v3/testsuite/lib/libstdc++.exp +--- origsrc/gcc-4.5.0/libstdc++-v3/testsuite/lib/libstdc++.exp 2010-01-07 00:22:51.000000000 +0000 ++++ src/gcc-4.5.0/libstdc++-v3/testsuite/lib/libstdc++.exp 2010-04-19 05:11:01.843750000 +0100 +@@ -124,6 +124,9 @@ proc libstdc++_init { testfile } { + if { [string match "powerpc-*-darwin*" $target_triplet] } { + append DEFAULT_CXXFLAGS " -multiply_defined suppress" + } ++ if { [string match "*-*-cygwin*" $target_triplet] } { ++ append DEFAULT_CXXFLAGS " -Wl,--enable-auto-import" ++ } + } + v3track DEFAULT_CXXFLAGS 2 + +@@ -144,6 +147,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. |