From: Michael G. <mg...@te...> - 2005-12-06 17:15:38
|
> Consider this program: > > ////////////////////////// > #include <exception> > #include <stdio.h> > #include <stdlib.h> > > void myterm() > { > printf( "myterm\n" ); > exit( 0 ); > } > > int main( int, char** ) > { > std::set_terminate( myterm ); > std::terminate(); > return 0; > } > ////////////////////////// > > I think it should output "myterm", but with mingw the call to set_terminate crashes, at least for me. > > I'am using gcc-3.4.2 cross compiling from linux. > > Configured with: ../configure --with-gcc --with-gnu-ld --with-gnu-as --target=i586-mingw32 --prefix=/tools/pkg/mingw --enable-threads --disable-nls --enable-languages=c,c++ --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug > Thread model: win32 > gcc version 3.4.2 (mingw-special) > > > Does anybody know this problem? And how to fix it? I have generated asm-listings of the natively compiled version (mingw-set_terminateg.asm) and the one generated by the linux hosted xcompiler (mingw-set_terminatex.asm). Both are attached below. Maybe someone more fluent with the way gcc creates the code can analyse why the created code is different (or is this a bug in gcc ?) Best, Michael -- Vote against SPAM - see http://www.politik-digital.de/spam/ Michael Gerdau email: mg...@te... GPG-keys available on request or at public keyserver |