Building mingw32-x-h8300 tools
Michael K. Elwood
Thu Sep 16 16:15:00 GMT 1999
Well, since nobody wanted to solve my problem for me, I had to go solve it
myself. But the problem (and solution) may be interesting to people trying
to build mingw32-hosted cross tools, or to mingw32 people in general.
To recap, after Mumit pointed out that collect2 should never get built when
compiling mingw32-hosted tools, I justed edited the makefile in the gcc
directory to empty the USE_COLLECT2 variable. The tools then built without
complaint. I installed the compiler on my WinNT partition and fired it up
with some simple code (known be build properly). CPP.EXE kept puking with
the message "Too many arguments".
If all else fails...try GDB, right?
It turns out that the specs file for the h8300 target (which, as of GCC
2.95, apparently lives outside the compiler in the
lib/gcc-lib/h8300-hms/2.95/ directory) contains some cpp arguments like
cpp hates that space in the value, so you really need double quotes around
the "unsigned\ int" part. So I fixed the specs file by surrounding these
values with double quotes. Everything seemed great...only it didn't fix the
problem. Back to GDB.
When gcc goes to spawn cpp, it calls pexecute() in libiberty, which in turn
calls the Win32 _spawnv or _spawnvp function. Just before it does this, the
mingw32 pexecute() calls fix_argv(), which scans every string in the argv
array and escapes any double quotes with a preceding \. Instead of helping,
though, this just confused cpp. So i took out the call to fix_argv().
Presto! Everything worked. :)
I now have a working mingw32-hosted h8300-targeted GNU cross compiler
(version 2.95). Many thanks to Mumit Khan and others who have helped along
the way. I can provide a patch for the changed files if anybody is
Now a question: Is fix_argv() still necessary? It seems to be causing more
harm than good.
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to email@example.com
More information about the crossgcc