[Gc] Re: Boehm GC on mingw
Ivan Maidanski
ivmai at mail.ru
Sun Jan 15 23:51:25 PST 2012
Hi Bruno,
Please try recent snapshot of Git master branch (not sure for "release" branch).
I haven't launched configure in mingw sys but I've tried it in cygwin (without --host).
Regards.
15 01 2012, 23:43 Bruno Haible <bruno at clisp.org>:
> Hi,
>
> When configuring gc 7.2alpha6 for mingw, from within a Cygwin 1.5.x
> development environment, on a Windows XP SP3 machine, the configuration
> fails:
>
> $ ./configure --host=i586-pc-mingw32 --prefix=/usr/local/mingw \
> CC="gcc-3 -mno-cygwin" \
> CXX="g++-3 -mno-cygwin" \
> CPPFLAGS="-I/usr/local/mingw/include -Wall" \
> LDFLAGS="-L/usr/local/mingw/lib"
> configure: WARNING: if you wanted to set the --build type, don't use --host.
> If a cross compiler is detected then cross compile mode will be used
> checking build system type... i686-pc-cygwin
> checking host system type... i586-pc-mingw32
> checking target system type... i586-pc-mingw32
> checking GC version numbers... major=7 minor=2 alpha=6
> ...
> checking for thread model used by GCC... posix
> checking for inline... inline
> checking for pthread_self in -lpthread... yes
> configure: error: "Pthreads not supported by the GC on this platform."
> make: *** No targets specified and no makefile found. Stop.
> make: *** No rule to make target `check'. Stop.
> make: *** No rule to make target `install'. Stop.
>
> Well, the "thread model used by GCC" is not really right:
>
> $ gcc-3 -mno-cygwin -v
> Reading specs from /usr/lib/gcc/i686-pc-mingw32/3.4.4/specs
> Configured with: /managed/gcc-build/final-v3-bootstrap/gcc-3.4.4-999/configure --verbose --program-suffix=-3 --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug
> Thread model: posix
> gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
>
> When compiling for Cygwin, the thread model is posix. But on this system
> (with pthreads-win32 *not* installed), the thread model of mingw programs
> is windows.
>
> And the test program
> ===================== conftest.c =================================
> /* Override any GCC internal prototype to avoid an error.
> Use char because int might match the return type of a GCC
> builtin and then its argument prototype would still apply. */
> #ifdef __cplusplus
> extern "C"
> #endif
> char pthread_self ();
> int
> main ()
> {
> return pthread_self ();
> ;
> return 0;
> }
> ==================================================================
> can actually be linked with -lpthread. Then it uses the /usr/lib/libpthread.a
> from Cygwin! So IMO that test program is broken: It should
> #include <pthread.h>
> before attempting to use pthread_self. This would make the test fail
> on mingw:
> ===================== conftest.c =================================
> #include <pthread.h>
> int
> main ()
> {
> return pthread_self ();
> ;
> return 0;
> }
> ==================================================================
>
> As a workaround, I had to manually add the option --enable-threads=win32.
>
> Can the configuration be improved to recognize this automatically?
>
> During "make check", then, the 'gctest' program does not terminate
> within 10 minutes. (It does not eat CPU time.)
>
> And other test crashes:
>
> /bin/sh: line 5: 3352 Segmentation fault (core dumped) ${dir}$tst
> FAIL: threadkey_test.exe
>
> Is this configuration expected to be reliable?
>
> Bruno
>
>
More information about the Gc
mailing list