Hi,
I'm new to this mailing list and hope this is the right one I'm addressing.
Lately I have been trying to port gcc and g++ from GCC 4.4.0 to interix (the
BSD-like unix subsystem optionally available for WinXP and Vista). The
subsystem is shipped with gcc and g++ 3.3 and binutils 2.13 which I have
used for the bootstrap. Based on other peoples patches I have had some
success.
Until now there is no compiler available for interix that supports OpenMP
and that's what I'm after. As libgomp in GCC so far isn't targeting interix
I have made some changes to libgomp in my copy of the GCC 4.4.0
distribution. A new source file was created,
gcc-4.4.0/libgomp/config/posix/interix/proc.c, which is templated on the
existing gcc-4.4.0/libgomp/config/posix/proc.c and
gcc-4.4.0/libgomp/config/posix/mingw32/proc.c in the distribution (see
http://www.oeffner.net/stuff/gcc-4.4.0_interix_changes.zip
or http://www.suacommunity.com/forum/tm.aspx?m=16600 ). With this file and
modifications to GCC configuration files in the distribution I can bootstrap
GCC 4.4.0 to build gcc and g++ compilers to support OpenMP on interix.
Although small OpenMP C++ programs builds and runs just fine I have problems
with a large program that also uses OpenMP. The large program is unstable
and crashes when compiled with OpenMP on interix. Compiled with g++4.4.0
without OpenMP it runs like a charm. As we distribute this program to other
platforms like Linux, MacOSX and Win32 where it runs fine with OpenMP I
believe that my current implementation I have for porting libgomp to interix
is buggy.
If anyone knows about some common or obvious pitfalls when porting libgomp
to a new platform or if anyone has got any advice about what not to do I'd
be very grateful.
Many thanks,
Rob