2011/3/21 NightStrike <[email protected]>: > On Mon, Feb 28, 2011 at 7:16 PM, Dock, Dion <[email protected]> wrote: >>> -----Original Message----- >>> From: Jon [mailto:[email protected]] On Behalf Of JonY >>> Sent: Thursday, January 27, 2011 5:50 PM >>> To: Dock, Dion >>> Cc: [email protected] >>> Subject: Re: [Mingw-w64-public] undefined reference to __GSHandlerCheck >>> >>> -----BEGIN PGP SIGNED MESSAGE----- >>> Hash: SHA1 >>> >>> On 1/28/2011 09:29, Dock, Dion wrote: >>> > I've searched and searched for an answer but maybe my Google-fu is >>> weak. >>> > >>> > We produce a library with VS 2005. When I try to link it into a test >>> > program using g++, I get lots of messages like >>> > >>> > ... >>> > >>> C:\Views\dockd_headers\lip__mgls_nt\mgls_nt\src\release\mgls64.lib(./x6 >>> 4/release/lpclsdll.obj):(.text[?messageBox@@YAXPEAD@Z]+0xcb): >>> undefined reference to `__security_check_cookie' >>> > >>> C:\Views\dockd_headers\lip__mgls_nt\mgls_nt\src\release\mgls64.lib(./x6 >>> 4/release/lpclsdll.obj):(.xdata[$unwind$?messageBox@@YAXPEAD@Z]+0xc) >>> : undefined reference to `__GSHandlerCheck' >>> > ... >>> > >>> > If I recompile our library without the "Buffer Security Check" option >>> > (/GS-), >>> then ld.exe crashes after the compile: >>> > >>> > C:\Temp>C:\mingw_64\bin\x86_64-w64-mingw32-g++.exe checkout.cpp >>> C:\Views\dockd_headers\lip__mgls_nt\mgls_nt\src\release\mgls64.lib -I >>> C:\Views\dockd_headers\lip__mgls_nt\mgls_nt\src\include >>> > checkout.cpp: In function 'int main()': >>> > checkout.cpp:12:47: warning: deprecated conversion from string >>> constant to 'char *' >>> > collect2: ld returned 5 exit status >>> > >>> > Any thoughts on where `__GSHandlerCheck' and >>> `__security_check_cookie' are defined? There has to be a way to link with a >>> Visual Studio created lib. >>> > >>> > thanks, >>> > -Dion >>> >>> Hi, >>> >>> you should never link C++ libraries from different compilers together as >>> they >>> have different ABIs underneath, though C is usually fine. I'm surprised >>> that it >>> even worked. >>> >>> I don't know what __GSHandlerCheck and __security_check_cookie are, >>> possibly found only in MSVC libraries. >> >> I tried recompiling the source as C code (not C++) with Visual Studio and >> these >> problems still occurred. They go away if I compile the source with gcc. >> >> I thought C compilers produced interchangeable code? > > I'm guessing this is still an issue. How much farther along are you?
Yes, we don't provide __GSHandlerCheck and __security_check_cookie in our runtime. Patches are welcome for this. Nevertheless be careful about mixing VC and gcc compiled code. At least for C++ you will run into issues for sure. The name-mangling isn't standarized and so VC and g++ are using here different mangling algorithms. Kai ------------------------------------------------------------------------------ Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
