Subject: kernel compile: big endian not recognized properly
To: None <tech-toolchain@netbsd.org>
From: Hubert Feyrer <hubert.feyrer@informatik.fh-regensburg.de>
List: tech-toolchain
Date: 10/26/2001 17:55:13
The following is from a fresh -current (today's sources) kernel compile. I
made sure that there are no old object files/libs left on the systemm:

 ld -EB -Ttext 0x88002000 -e start -G 0 -T ../../../../arch/mips/conf/kern.ldscript --oformat elf32-littlemips -x -o netbsd ${SYSTEM_OBJ} vers.o
 ld: locore.o: compiled for a big endian system and target is little endian
 File in wrong format: failed to merge target specific data of file locore.o

This is because the following test in the generated
(compile/INDY/)Makefile doesn't fire:

 .if (${ENDIAN} == "-EB")

This in turn can be fixed by setting ENDIAN to -EB (-EL) instead of
"-EB" ("-EL") - just remove the quotes:

	--- Makefile.BAK        Fri Oct 26 17:52:47 2001
	+++ Makefile    Fri Oct 26 17:53:00 2001
	@@ -22,9 +22,9 @@
	 .include <bsd.own.mk>
	 
	 .if ${MACHINE_ARCH} == "mipsel"
	-ENDIAN="-EL"
	+ENDIAN=-EL
	 .elif ${MACHINE_ARCH} == "mipseb"
	-ENDIAN="-EB"
	+ENDIAN=-EB
	 .else
	 .BEGIN:
	        @echo "MACHINE_ARCH ${MACHINE_ARCH} is invalid"

I don't know where the source for this is (config(8)?), but I guess this
problem will show on all big-endian MIPS platforms, so if someone could
please have a look...? Thanks!


 - Hubert

-- 
Want to get a clue on IPv6 but don't know where to start? Try this:
* Basics -> http://www.onlamp.com/pub/a/onlamp/2001/05/24/ipv6_tutorial.html
* Setup  -> http://www.onlamp.com/pub/a/onlamp/2001/06/01/ipv6_tutorial.html 
Of course with your #1 IPv6 ready operating system -> http://www.NetBSD.org/