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