δΊ 2011/9/20 21:52, Charles Wilson ει:
On 9/20/2011 9:20 AM, JonY wrote:
On 9/20/2011 13:59, Kai Tietz wrote:
2011/9/20 JonY:
Its been used in the automated toolchain builds for sometime,
seems like a good idea to enable it by default. It can be
easily changed to match for all mingw as well if needed.
This patch looks reasonable to me. Note that this is no approval
for it, as I'm not a libstdc++ maintainer. But I can confirm
that patch is ok from perspective of windows-target maintainer.
Just one question I have here. Why do we enable this option only
for w64 flavor? AFAIK is mingw.org also building their libstdc++
with enabling this configure-option
OK "i?86-*-mingw* | x86_64-*-mingw*)" then, any mingw.org
developers care to comment?
Unfortunately, while very old (3.x?) versions of mingw.org gcc used
this option IIRC, neither the latest official, nor the immediately
previous official mingw.org version were compiled with that option:
../gcc-4.6.1/configure --enable-languages=c,c++,fortran,objc,obj-c++
--disable-sjlj-exceptions --with-dwarf2 --enable-shared
--enable-libgomp --disable-win32-registry --enable-libstdcxx-debug
--enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw
../gcc-4.5.2/configure
--enable-languages=c,c++,ada,fortran,objc,obj-c++
--disable-sjlj-exceptions --with-dwarf2 --enable-shared
--enable-libgomp --disable-win32-registry --enable-libstdcxx-debug
--enable-version-specific-runtime-libs --disable-werror
--build=mingw32 --prefix=/mingw
To match native mingw.org behavior, the cygwin->mingw.org-ish cross
toolchain is configured as:
Configured with:
/usr/src/packages/mingw-gcc/mingw-gcc-4.5.2-1/src/gcc-4.5.2/configure
--srcdir=/usr/src/packages/mingw-gcc/mingw-gcc-4.5.2-1/src/gcc-4.5.2
--prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin
--libexecdir=/usr/lib --datadir=/usr/share --localstatedir=/var
--sysconfdir=/etc --datarootdir=/usr/share
--docdir=/usr/share/doc/mingw-gcc -C --build=i686-pc-cygwin
--host=i686-pc-cygwin --target=i686-pc-mingw32
--with-sysroot=/usr/i686-pc-mingw32/sys-root
--with-build-sysroot=/usr/i686-pc-mingw32/sys-root --disable-multilib
--disable-win32-registry --enable-languages=c,c++,fortran,objc,obj-c++
--enable-libgomp --disable-sjlj-exceptions --enable-libstdcxx-debug
--enable-version-specific-runtime-libs --with-dwarf2 --disable-werror
--enable-lto
So, this would be a change in current mingw.org behavior. I *was*
under the impression that this workaround for the old "can't pass
empty strings across DLL boundary" problem[1] was no longer necessary
in the gcc-4.x era, but I haven't tested the proposition. Was I wrong
about that?
I'm not really opposed to making this change for i*86-pc-mingw -- and
now's the time to do it, as the recently released 4.6.1 mingw.org gcc
broke the C++ abi anyway, thanks to thiscall.
[1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24196
'course, Cesar will have to weigh in.
Based on TDM's advice, "--enable-fully-dynamic-string" can fix a bug
when passing empty std::string objects between DLLs and EXEs.
--
Best Regards,
xunxun