linux-mips
[Top] [All Lists]

Re: IP32 - issues with last CVS snapshoot

To: "Stephen P. Becker" <geoman@gentoo.org>
Subject: Re: IP32 - issues with last CVS snapshoot
From: "Maciej W. Rozycki" <macro@linux-mips.org>
Date: Fri, 11 Feb 2005 18:41:50 +0000 (GMT)
Cc: Frederic TEMPORELLI - astek <ftemporelli@astek.fr>, linux-mips@linux-mips.org
In-reply-to: <420CF611.5030705@gentoo.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <420CEE7F.3080201@astek.fr> <420CF611.5030705@gentoo.org>
Sender: linux-mips-bounce@linux-mips.org
On Fri, 11 Feb 2005, Stephen P. Becker wrote:

> > First, there's something wrong with "make ip32_defconfig" which generate
> > config file with "Kernel code model = 64-bit kernel" (MIPS64=y) but
> > doesn't preselect  "Use 64-bit ELF format for building" (BUILD_ELF64=n)
> > doing so, "make" quickly generates an error:
> 
> O2 doesn't use 64-bit ELF format.  You have to use o64.  See the

 O64 isn't a supported ABI for Linux.  It's a crazy ad-hoc hack that 
shouldn't be used at all.  Code to handle it somehow may still exist in 
binutils, but it's abandoned -- nobody bothers checking if it still works.  
With the upcoming explicit reloc support for non-PIC code in GCC 4.0 it 
won't work at all anymore.

> arch/mips/Makefile portion of http://dev.gentoo.org/~geoman/cvs.diff for the
> proper changes.  I'm willing to bet a lot of your problems will go away if you
> stop using ELF64.  Such a kernel will boot, but it never quite works right.

 If you have a problem with n64 binaries, then either you have broken 
tools or there is a bug in the platform-dependent code somewhere -- 
probably some inline asm forgetting about the %higher and %highest 
relocations.  Check your tools (I'd recommend GCC 3.4.3 and binutils 2.15) 
and if they're fine, then file a bug report.  N64 binaries work for 
several platforms (I've tested three myself; I'm sure others did that 
for others as well).

 Regardless of the format used for building, the final executable is 
converted to ELF32 or ELF64 if necessary to suit the bootloader used, as 
controlled by the CONFIG_BOOT_ELF32 and CONFIG_BOOT_ELF64 options.

  Maciej

<Prev in Thread] Current Thread [Next in Thread>