This is the mail archive of the
mailing list for the libstdc++ project.
[PING^2] Re: [PING/tiny respin] Re: [PATCH, 0...4/4] Enable libstdc++ as a DLL on windows platforms.
- From: Dave Korn <dave dot korn dot cygwin at googlemail dot com>
- To: Dave Korn <dave dot korn dot cygwin at googlemail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, libstdc++ at gcc dot gnu dot org
- Date: Sun, 09 Aug 2009 20:55:19 +0100
- Subject: [PING^2] Re: [PING/tiny respin] Re: [PATCH, 0...4/4] Enable libstdc++ as a DLL on windows platforms.
- References: <4A60F7BA.email@example.com> <4A6FCDB1.firstname.lastname@example.org>
Dave Korn wrote:
> Dave Korn wrote:
>> The series of patches (contained in the four follow-ups to this post) allow
>> Windows platforms to compile libstdc++ as a shared DLL, which is desirable on
>> Windows for all the same reasons as on other platforms. It is derived from
>> work by Aaron, Danny and myself that has been previously developed in the
>> Cygwin and MinGW distro compiler versions.
> Here is the final version of the patch, respun, retested (with no change in
> the results, i.e. still no regressions), and merged into one big patch.
Ping; part of this patch is still awaiting review by a v3 maintainer, and the
clock is starting to tick on stage 1, so I've remembered to Cc the v3 list this
The original series of patches are archived at
and the tweaked respin at
The attached patch is functionally identical to that, just merged up-to-date
with HEAD. It still bootstraps and I'm re-running the tests right now; I don't
anticipate any change to the no-regressions status (and if there was it would
probably mean a bug has been introduced on HEAD rather than that the patch is
The v3-related changes were in parts 3 and 4 of the original; in the full
patch, it's this part:
> * src/Makefile.am (LTLDFLAGS): Add -no-undefined.
> * libsupc++/Makefile.am (LTLDFLAGS): Likewise.
> * src/Makefile.in: Regenerate.
> * libsupc++/Makefile.in: Regenerate.
> * config/os/newlib/os_defines.h (_GLIBCXX_IMPORT): Define to
> dllimport when indicated by _GLIBCXX_DLL.
> * config/os/mingw32/os_defines.h (_GLIBCXX_IMPORT): Likewise.
> * testsuite/lib/libstdc++.exp (proc libstdc++_init): Adjust
> DEFAULT_CXXFLAGS and ld_library_path_tmp for Cygwin.
> * include/bits/c++config (_GLIBCXX_IMPORT): Add empty definition
> for non-dllimport targets.
> * include/std/iostream (cin): Annotate with _GLIBCXX_IMPORT.
> (cout, cerr, clog): Likewise.
> * include/std/stdexcept (class logic_error, domain_error,
> invalid_argument, length_error, out_of_range, runtime_error,
> range_error, underflow_error): Likewise.
> * include/ext/concurrence.h (class __concurrence_lock_error,
> __concurrence_unlock_error): Likewise.
> * include/bits/locale_classes.tcc (template class collate<char>,
> collate_byname<char>, collate<wchar_t>,
> collate_byname<wchar_t>): Likewise.
> * include/bits/locale_facets.tcc (template class numpunct<char>,
> numpunct_byname<char>, num_get<char>, num_put<char>,
> ctype_byname<char>, numpunct<wchar_t>, numpunct_byname<wchar_t>,
> num_get<wchar_t>, num_put<wchar_t>, ctype_byname<wchar_t>): Likewise.
> * include/bits/locale_classes.h (class locale, facet, id, _Impl,
> locale::facet, locale::id, locale::_Impl): Likewise.
> * include/bits/locale_facets.h (template class ctype<char>,
> ctype<wchar_t>): Likewise.
> * include/bits/basic_ios.tcc (template class basic_ios<char>,
> basic_ios<wchar_t>): Likewise.
> * include/bits/ios_base.h (class ios_base, failure, Init): Likewise.
> * include/bits/istream.tcc (template class basic_istream<char>,
> basic_iostream<char>, basic_istream<wchar_t>,
> basic_iostream<wchar_t>): Likewise.
> * include/bits/codecvt.h (template class codecvt_byname<char, char,
> mbstate_t>, codecvt_byname<wchar_t, char, mbstate_t>): Likewise.
> * include/bits/ostream.tcc (template class basic_ostream<char>,
> basic_ostream<wchar_t>): Likewise.
> * include/bits/sstream.tcc (template class basic_stringbuf<char>,
> basic_istringstream<char>, basic_ostringstream<char>,
> basic_stringstream<char>, basic_stringbuf<wchar_t>,
> basic_istringstream<wchar_t>, basic_ostringstream<wchar_t>,
> basic_stringstream<wchar_t>): Likewise.
> * include/bits/basic_string.tcc (template class basic_string<char>,
> basic_string<wchar_t>, related overloaded operator<<, operator>>,
> getline): Likewise.
> * include/bits/locale_facets_nonio.tcc (template class
> moneypunct<char, false>, moneypunct<char, true>,
> moneypunct_byname<char, false>, moneypunct_byname<char, true>,
> money_get<char>, money_put<char>, __timepunct<char>, time_put<char>,
> time_put_byname<char>, time_get<char>, time_get_byname<char>,
> messages<char>, messages_byname<char>, moneypunct<wchar_t, false>,
> moneypunct<wchar_t, true>, moneypunct_byname<wchar_t, false>,
> moneypunct_byname<wchar_t, true>, money_get<wchar_t>,
> money_put<wchar_t>, __timepunct<wchar_t>, time_put<wchar_t>,
> time_put_byname<wchar_t>, time_get<wchar_t>, time_get_byname<wchar_t>,
> messages<wchar_t>, messages_byname<wchar_t>): Likewise.
> * include/bits/streambuf.tcc (template class basic_streambuf<char>,
> basic_streambuf<wchar_t>): Likewise.
> * include/bits/fstream.tcc (template class basic_filebuf<char>,
> basic_ifstream<char>, basic_ofstream<char>, basic_fstream<char>,
> basic_filebuf<wchar_t>, basic_ifstream<wchar_t>,
> basic_ofstream<wchar_t>, basic_fstream<wchar_t>): Likewise.
> * include/backward/strstream (class strstreambuf, istrstream,
> ostrstream, strstream): Likewise.
> * libsupc++/typeinfo (class type_info, bad_cast, bad_typeid): Likewise.
> * libsupc++/exception (class exception, bad_exception): Likewise.
> * libsupc++/new (class bad_alloc): Likewise.
Ok for HEAD?