Subject: Re: cross-compiler building notes (Was: Is 1.4.1 fpe busted?)
To: Chris Baird <cbaird@turing.une.edu.au>
From: Richard Pennington <rich@introl.com>
List: port-mac68k
Date: 09/07/1999 15:44:21
Hi,

Are 1.4.1 binaries incompatable with 1.4 systems for some reason?

I cross compiled a program for someone with a Mac68k running 1.4 and
it dumps core. Not initially - it can print out a sign-on message -
but after it gets going.

The program is pretty simple, it just opens some files for read and write
and reads and writes them. :-)

-Rich

On Mon, 06 Sep 1999, Chris Baird wrote:
>The cross-binutils should be installed before gcc, so the later's configure
>will find and use them. I found it easiest to download binutils and untar
>it-- binutils-2.9.1 was the closest at hand, but NetBSD-1.4.1 was released
>with 2.9.
>
>binutils-2.9.1 has a sys_errlist problem in libiberty/strerror.c at line
>461. Replace
>    static const char **sys_errlist;
>with
>    static __const char *__const *sys_errlist;
>
>    binutils-2.9.1$ ./configure --host=i386-pc-netbsd1.4 \
>	--target m68k-apple-netbsd1.4 --prefix=/usr/local
>    binutils-2.9.1$ make
>    binutils-2.9.1# umask 022; make install
>
>There might be complaints if makeinfo isn't available. Building binutils
>will require about 32M of disk space.
>
>
>Installing mac68k header files and libraries: I downloaded
>ftp://ftp.xx.netbsd.org/pub/NetBSD/NetBSD-1.4.1/mac68k/binary/sets/comp.tgz
>and took what was needed:
>
>    $ cd path_to_untarred_comp_tgz/usr/
>    $ rm -rf include/dev/microcode lib/*_p.a lib/*_pic.a
>    # tar cf - include|tar -C /usr/local/m68k-apple-netbsd1.4 -xf -
>    # tar cf - lib|tar -C /usr/local/m68k-apple-netbsd1.4 -xf -
>
>
>Now for gcc. I used the NetBSD-supplied gnu sources (egcs-2.91.60):
>
>    tmp# umask 022; tar -C /usr/src/gnu/dist -cf - gcc | tar -xf -
>    tmp# cp /usr/src/gnu/dist/install.sh gcc/
>
>Configure exactly as binutils:
>
>    gcc$ ./configure --host=i386-pc-netbsd1.4 --target=m68k-apple-netbsd1.4 \
>	--prefix=/usr/local
>
>    gcc$ make LANGUAGES="c"
>
>All going to plan, the make will crash when it reaches libgcc.
>
>    gcc# make -k LANGUAGES="c" install
>
>Again, this will crash (don't forget the "-k"). Building gcc will require
>about 58M of disk space.
>
>
>Post-install cleanup:
>
>    # find /usr/local/m68k-apple-netbsd1.4 -type d|xargs chmod a+rx $1
>    # find /usr/local/m68k-apple-netbsd1.4 -type f|xargs chmod a+r $1
>    # cd /usr/local/m68k-apple-netbsd1.4/bin
>    # ln -s ../../bin/m68k-apple-netbsd1.4-gcc cc
>    # ln -s ../../bin/m68k-apple-netbsd1.4-size size
>    # ln -s ../../bin/m68k-apple-netbsd1.4-addr2line addr2line
>    # ln -s ../../bin/m68k-apple-netbsd1.4-c++filt c++filt
>    # ln -s ../../bin/m68k-apple-netbsd1.4-gasp gasp
>    # ln -s ../../bin/m68k-apple-netbsd1.4-objcopy objcopy
>    # ln -s ../../bin/m68k-apple-netbsd1.4-objdump objdump
>    # ln -s ../../bin/m68k-apple-netbsd1.4-strings strings
>    # ln -s ../../bin/m68k-apple-netbsd1.4-protoize protoize
>    # ln -s ../../bin/m68k-apple-netbsd1.4-unprotoize unprotoize
>    # strip *; chmod 755 *
>
>
>Using the cross-compiler to build a kernel:
>
>    # config FOO; cd ../compile/FOO
>    # declare/setenv/whatever MACHINE_ARCH=m68k
>    # declare/setenv/whatever PATH=/usr/local/m68k-apple-netbsd1.4/bin:$PATH
>    # make depend netbsd
>
>For binutils-2.9.1, I found it necessary to edit /sys/arch/m68k/fpsp/asm2gas,
>line 149 from:
>    s/#:/#:0x/g
>to
>    s/#:/#0x/g
>
>
>For those trusting types who would like the cross-compiler without going
>through the above, I've put up a tarfile with all the necessary executables
>and files for installation under /usr/local/ (package? what's that?), at
>http://mcs.une.edu.au/~cbaird/gcc-i386m68k.tar.gz (5060kB compressed,
>16M untarred).
>
>--
>Chris Baird,, <cjb@brushtail.apana.org.au>
--
Richard Pennington		Introl Corporation, Milwaukee, WI USA
Email: rich@introl.com		Phone: +1 414-273-6100	Fax: +1 414-273-6106
				US and Canada: 1 800-327-7171
Cross development tools for the 68HC05, 68HC08, 6809, 68HC11, 68HC12, 68HC16,
and 68XXX:			http://www.introl.com	ftp://ftp.introl.com