From: Hin-Tak L. <hin...@ya...> - 2009-07-12 19:20:29
|
gcc-4.4.0-20090418-dllimport-libstdc++.patch in gcc-4.4.0-mingw32-src-2.tar..gz failed to patch (and aaron(?)'s gccbuild.sh script seems to ignore return status of patch?) in this chunk: -------------------------------------------------------------------- --- libstdc++-v3/include/bits/c++config (revision 146010) +++ libstdc++-v3/include/bits/c++config (working copy) @@ -314,4 +314,8 @@ _GLIBCXX_END_NAMESPACE #undef min #undef max +#ifndef _GLIBCXX_IMPORT +#ifdef _GLIBCXX_DLL +#define _GLIBCXX_IMPORT __attribute__((dllimport)) +#else +#define _GLIBCXX_IMPORT +#endif +#endif + + // End of prewritten config; the discovered settings follow. ------------------------------------------------------------------ it should be "-314,4 +314,13" instead of "-314,4 +314,8", and also one of the blank lines before the addition seems to be a mistake from manual edit and should not be there; without this patch, I think cross-dll exception handling breaks? On a different and unrelated issue, I had spent a day trying to get the cross-script to work and it seems that gcc 4.4 doesn't want to build crtbegin.o for some unknown reason. It fails when trying to compile w32api. The fedora-shipped 4.4-pre cross-compiler have this file, so it seems that either redhat had worked around it, or there is some important difference between 4.4pre and 4.4... (I had the cross-script worked with 4.2.1 - I am just trying to see if I can still do it manually; also distro-shipped compiler is not quite 4.4 - it is a 20090319 snapshot). |
From: Aaron W. L. <aar...@aa...> - 2009-07-13 06:39:51
|
Hin-Tak Leung wrote: > it should be "-314,4 +314,13" instead of "-314,4 +314,8", and also one of the blank lines before the addition seems to be a mistake from manual edit and should not be there; without this patch, I think cross-dll exception handling breaks? I'm not sure why this is broken, but I'll look into it. Thanks for the report. It is needed to link against libstdc++-v3 as a DLL. This is not generally needed for cross-DLL exceptions, unless you're throwing a standard type or something. This is pretty much the continuation of a patch I pulled out of Danny's old patchset for 4.2. I think Dave Korn is working on a better way for this for FSF GCC. |
From: Hin-Tak L. <hin...@ya...> - 2009-07-13 13:16:44
|
--- On Mon, 13/7/09, Aaron W. LaFramboise <aar...@aa...> wrote: > Hin-Tak Leung wrote: > > > it should be "-314,4 +314,13" instead of "-314,4 > +314,8", and also one of the blank lines before the addition > seems to be a mistake from manual edit and should not be > there; without this patch, I think cross-dll exception > handling breaks? > > I'm not sure why this is broken, but I'll look into > it. Thanks for the > report. > Thanks - I think it is just some manual editing gone wrong and the script'ed patching doesn't check the return status of one of the 13 patches. > It is needed to link against libstdc++-v3 as a DLL. > This is not > generally needed for cross-DLL exceptions, unless you're > throwing a > standard type or something. In a way I don't quite get the whole discussion - my main use is for building standalone console applications - presumably it is more important for people providing dll's... |