This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: mingw-hosted xgcc


I wrote:

> Jx Saarinen wrote:
> > Actually I managed to do this OK. But when I tested the mingw32-h8300
>  I think this being fixed in the current egcs-snapshots, i.e. these things
> edited in the Makefile.in.

 The 'egcs' was a typo, should be binutils...

 Anyhow, the mingw32 host has some problems to be solved somehow. The h8300-hms 
target is one of those revealing these. Its specs has the following predefines, 
going through the MS library routines to cpp :

%{!mh:%{!ms:-D__SIZE_TYPE__=unsigned\ int -D__PTRDIFF_TYPE__=int}}
%{mh:-D__SIZE_TYPE__=unsigned\ long -D__PTRDIFF_TYPE__=long}
%{ms:-D__SIZE_TYPE__=unsigned\ long -D__PTRDIFF_TYPE__=long}

 Of course this kind of 'spaces in the options' doesn't work with them.
There is some kind of argument fixing in the 'pexecute.c' for mingw32,
but it doesn't cure this case. So the simplest way would to remove these
from specs and move them to some 'always included' header, or to a header
which is included in this... Could <sys/types.h> be the proper one?
I moved them somewhere, but cannot find where, perhaps I have written
them over...

 In the h8300-hms case the '-mh' and '-ms' will cause the '-D__H8300H__'
and '-D__H8300S__', so the info about '-mh' or '-ms' is available...

 The 'mips-ecoff' (and probably all the other 'mips-xxxx' targets) has
just the same kind of things in the 'specs'... These can also be fixed by
moving the definitions to headers... The 'newlib/targ-include' gathers these
kind of 'target specific' headers, so looking at where the modified headers
should be put, or if just using the same :

 #if !defined (__SIZE_TYPE__) && !defined (__PTRDIFF_TYPE__)

 #if defined (__H8300__) || defined (__H8300H__) ||  defined (__H8300S__)
 # ifdef __H8300__
 #  define __SIZE_TYPE__	unsigned int
 #  define __PTRDIFF_TYPE__	int
 # else
 #  define __SIZE_TYPE__	unsigned long
 #  define __PTRDIFF_TYPE__	long
 # endif
 #endif

  <the equivalent lines for the MIPS cases>

 #endif /* not __SIZE_TYPE__ or __PTRDIFF_TYPE__ yet defined */

in the standard newlib headers would be the solution...

 Or one can struggle with the GCC mingw32 port to get these things to work with 
the mingw32 host...

 Cheers, Kai
_______________________________________________
New CrossGCC FAQ: http://www.objsw.com/CrossGCC
_______________________________________________
To remove yourself from the crossgcc list, send
mail to crossgcc-request@cygnus.com with the
text 'unsubscribe' (without the quotes) in the
body of the message.