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
- Date: Thu, 01 May 2008 07:01:05 +1200
- From: Danny Smith <dannysmith@xxxxxxxxxxxx>
- Subject: ***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