lists.zerezo.com



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

***BOGO*** Re: [Mingw-users] Test program crashes with g++ 4.2.1-dw2 usinglibstdc++_s




> -----Original Message-----
> From: mingw-users-bounces@xxxxxxxxxxxxxxxxxxxxx 
> [mailto:mingw-users-bounces@xxxxxxxxxxxxxxxxxxxxx] On Behalf 
> Of Lothar May
> Sent: Thursday, 1 May 2008 3:06 a.m.
> To: MinGW Users List
> Subject: Re: [Mingw-users] Test program crashes with g++ 
> 4.2.1-dw2 usinglibstdc++_s
> 
> 
> Hi again,
> 
> OK just after sending this I finally solved it by adding 
> -D_DLL, but why 
> does it link at all without?
> 


the -D_DLL adds the dllimport attribute to global object std::cout, so the
linker looks for the __imp__mangled_name_for std_cout rather than non-__imp
name.  It finds that in the import libstdc_s import lib and uses it. 

Without the -D_DLL the  std::cout does is refereenced without dllimport semantics so the
linker, not finding the name in the dll import lib uses the one in static libstdc++ which
is automatically added to the specs.  Now, the exe uses a different stdc::cout object than
the one used by the library code, so bad things happen.

Danny

> Regards,
> 
> Lothar
> 
> Lothar May wrote:
> > Hi,
> > 
> > I've been testing mingw-g++ 4.2.1-dw2 on Windows XP as 
> non-admin user 
> > using the dynamic runtime libraries. I renamed g++-dw2.exe 
> to g++.exe 
> > and gcc-dw2.exe to gcc.exe.
> > 
> > D:\Path with spaces\dev\workspace\test>g++ -v
> > Using built-in specs.
> > Target: mingw32
> > Configured with: ../gcc-4.2.1-2-src/configure --with-gcc 
> > --enable-libgomp --host
> > =mingw32 --build=mingw32 --target=mingw32 --program-suffix=-dw2 
> > --with-arch=i486
> >   --with-tune=generic --disable-werror --prefix=/mingw 
> > --with-local-prefix=/mingw
> >   --enable-threads --disable-nls 
> > --enable-languages=c,c++,fortran,objc,obj-c++,ad
> > a --disable-win32-registry --disable-sjlj-exceptions 
> > --enable-libstdcxx-debug --
> > enable-cxx-flags=-fno-function-sections -fno-data-sections 
> > --enable-version-spec
> > ific-runtime-libs --disable-bootstrap
> > Thread model: win32
> > gcc version 4.2.1-dw2 (mingw32-2)
> > 
> > I ran across the missing libgcc_s.a and solved this problem:
> > 
> http://lists-archives.org/mingw-users/07776-g-4-2-1-with-share
> d-libstdc-not-catchingexceptions.html
> > 
> > D:\Path with spaces\mingw\bin>pexports libgcc_dw2_1.dll > 
> libgcc_s.def
> > D:\Path with spaces\mingw\bin>dlltool -d libgcc_s.def -l libgcc_s.a 
> > libgcc_dw2_1.dll
> > D:\Path with spaces\dev\mingw\bin>move libgcc_s.a 
> > ..\lib\gcc\mingw32\4.2.1-dw2\
> > 
> > Then I tested a simple hello world program main.cpp which 
> uses iostreams:
> > 
> > --cut here--
> > #include <iostream>
> > 
> > using namespace std;
> > 
> > int
> > main()
> > {
> > 	cout << "Test" << endl;
> > 	return 0;
> > }
> > --cut here--
> > 
> > It compiles/links fine, but it crashes with -lstdc++_s.
> > 
> > D:\Path with spaces\dev\workspace\test>g++ -shared-libgcc main.cpp 
> > -lstdc++_s -o test
> > 
> > D:\Path with spaces\dev\workspace\test>test
> > (crash)
> > (I was asked to send a bug report to Microsoft which I did, but I 
> > suppose that won't help ;-) )
> > 
> > D:\Path with spaces\dev\workspace\test>gdb test
> > GNU gdb 6.8
> > Copyright (C) 2008 Free Software Foundation, Inc.
> > License GPLv3+: GNU GPL version 3 or later 
> > <http://gnu.org/licenses/gpl.html>
> > This is free software: you are free to change and redistribute it.
> > There is NO WARRANTY, to the extent permitted by law.  Type 
> "show copying"
> > and "show warranty" for details.
> > This GDB was configured as "i686-pc-mingw32"...
> > (gdb) run
> > Starting program: D:\Path with spaces\dev\workspace\test/test.exe
> > [New thread 3604.0xd80]
> > 
> > Program received signal SIGSEGV, Segmentation fault.
> > 0x66453f5c in std::ostream::sentry::sentry ()
> >     from D:\Path with spaces\dev\workspace\test\libstdc++_dw2_6.dll
> > (gdb) bt
> > #0  0x66453f5c in std::ostream::sentry::sentry ()
> >     from D:\Path with spaces\dev\workspace\test\libstdc++_dw2_6.dll
> > #1  0x66470cfb in std::__ostream_insert<char, 
> std::char_traits<char> > ()
> >     from D:\Path with spaces\dev\workspace\test\libstdc++_dw2_6.dll
> > #2  0x6647269e in std::operator<< <std::char_traits<char> > ()
> >     from D:\Path with spaces\dev\workspace\test\libstdc++_dw2_6.dll
> > #3  0x00401556 in main ()
> > (gdb)
> > 
> > 
> > Other variants work:
> > 
> > D:\Path with spaces\dev\workspace\test>g++ -shared-libgcc 
> main.cpp -o test
> > 
> > D:\Path with spaces\dev\workspace\test>test
> > Test
> > 
> > D:\Path with spaces\dev\workspace\test>g++ main.cpp -o test
> > 
> > D:\Path with spaces\dev\workspace\test>test
> > Test
> > 
> > As the release notes state that version 3.13 of mingw-runtime is 
> > required, I retried using this version instead of 3.14, 
> with the same 
> > result.
> > 
> > Any suggestions?
> > 
> > Best regards,
> > 
> > Lothar
> > 
> > 
> --------------------------------------------------------------
> -----------
> > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
> > Don't miss this year's exciting event. There's still time 
> to save $100. 
> > Use priority code J8TL2D2. 
> > 
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java
.sun.com/javaone
> _______________________________________________
> MinGW-users mailing list
> MinGW-users@xxxxxxxxxxxxxxxxxxxxx
> 
> You may change your MinGW Account Options or unsubscribe at:
> https://lists.sourceforge.net/lists/listinfo/mingw-users
> 


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
MinGW-users mailing list
MinGW-users@xxxxxxxxxxxxxxxxxxxxx

You may change your MinGW Account Options or unsubscribe at:
https://lists.sourceforge.net/lists/listinfo/mingw-users


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
MinGW-users mailing list
MinGW-users@xxxxxxxxxxxxxxxxxxxxx

You may change your MinGW Account Options or unsubscribe at:
https://lists.sourceforge.net/lists/listinfo/mingw-users