Subject: Re: cross-compiling on i386 for m68k
To: Thomas J. Trebisky <tom@as.arizona.edu>
From: Dale Rahn <drahn@pacific.urbana.mcd.mot.com>
List: m68k
Date: 11/15/1994 13:27:27
> 'Tom Trebisky'
> 
> Hello,
> 
> I have pretty much finished up getting NetBSD 1.0 installed on a
> i386 box I have recently acquired. Now I am getting down to
> business with what I really want to do, namely use this
> as a development system for a m68k port.  The target system is
> a motorola vm04 (a versabus monster, the heart of which is
> a 68030 running at 20Mhz, but I spare you all the details).
> 
> At any rate, I am posting to ask for hints and help in getting
> a cross-development platform set up, expecting and hoping that
> some of you have covered this ground already and can help me and
> save me a lot of time and effort.  Here is what I see as the
> task before me, please correct me where you see me going astray.
> 
> 1) Buid gcc as a cross compiler.  Apparently I have 2.4.5 on my
> system, and I can go into the source directory and config this as
> a cross-compiler.  But I noticed yesterday in the 2.6.1 announcement
> that NetBSD-m68k is a newly supported configuration, perhaps this
> is the way to go.  Either way, I expect this step to be easy.
> 
> 2) Build the binutils for cross-compile use.  From prior experience
> I expect gas to be pretty easy.  gnu-ld may or may not be easy
> depending on progress made with the binutils since my experience
> with them a year or so ago when I was cross-compiling from a sparc.
>
I just used the NetBSD utilities in the NetBSD src, 
all but ar seems to not have too many problems(see below).

> 
> Once I get to this point I should be off to the races, ... at least for now,
> any helpful comments or discussion will be appreciated!
> 

I attempted to get this to work with host NetBSD-i386 and target
NetBSD-amiga. I had to make some changes to ld to make it produce correct
relocations.  I did all of this back in about May 94, some of the stuff
may have changed since then to fix stuff.

I was able to create objects and executables with what I had but I
did not have time to go about fixing ar to produce the correct libraries.

This is the list of things I did to get it almost working.
(from the top of my head).
	compilation (cc):
		add -nostdinc 
		add -idirafter /usr/m68kinclude
		add -b m68k
		to make:
		CC=/usr/bin/cc -nostdinc -idirafter /usr/m68kinclude -b m68k
		put gcc cross executables in /usr/libexec/m68k/2.4.5 (???)
	
	ld:
		the swapin/swapout routines in ld/m68k/md.c
		did not seem to work correctly with i386 host.
		I rewrote them with structures of opposite order with
		correct padding.
		md_swapin_reloc
		md_swapout_reloc

Some directory build executables and then run them to generate files which
are used in the compilation. There is no distinction between a HOST_CC
and TARGET_CC. All just use CC.

Unfortunately, I stopped working on the problem once NetBSD-amiga 
got stable enough to nfs mount the source and then I just compiled on
the amiga. I then removed all of the changes with a later snapshot upgrade.

Dale Rahn