linux-mips-fnet
[Top] [All Lists]

Re: kernel should not reject -mips2 ELF binaries

To: Jay Carlson <nop@nop.com>
Subject: Re: kernel should not reject -mips2 ELF binaries
From: Ralf Baechle <ralf@oss.sgi.com>
Date: Tue, 7 Nov 2000 03:28:02 +0100
Cc: linux-mips@oss.sgi.com, linux-mips@fnet.fr
In-reply-to: <KEEOIBGCMINLAHMMNDJNEEDHCAAA.nop@nop.com>; from nop@nop.com on Mon, Nov 06, 2000 at 09:20:00PM -0500
References: <KEEOIBGCMINLAHMMNDJNEEDHCAAA.nop@nop.com>
On Mon, Nov 06, 2000 at 09:20:00PM -0500, Jay Carlson wrote:

> include/asm-mips/elf.h contains a macro, elf_check_arch, that decides if an
> executable is plausible to run under this kernel.  It currently accepts
> binaries flagged as MIPS1 ISA, and rejects all other ISAs.
> 
> #define elf_check_arch(hdr)                                           \
> ({                                                                    \
>       int __res = 1;                                                  \
>       struct elfhdr *__h = (hdr);                                     \
>                                                                       \
>       if ((__h->e_machine != EM_MIPS) &&                              \
>           (__h->e_machine != EM_MIPS_RS4_BE))                         \
>               __res = 0;                                              \
>       if (__h->e_flags & EF_MIPS_ARCH)                                \
>               __res = 0;                                              \
>                                                                       \
>       __res;                                                          \
> })
> 
> I think we should make an exception for MIPS2.  Turns out that the two Linux
> VR processor families benefit from some of the MIPS II features; most
> notably, code density is improved by eliminating load delay slots.  If I
> build executables that take advantage of this, they legitimately should be
> flagged with E_MIPS_ARCH_2 (since they won't run on my decstation).
> 
> So what's the right way to fix this?  Three things come to mind:
> 
> 1) rip out the EF_MIPS_ARCH check from elf_check_arch.

Take 1).  The problem we have is distiguishing Linux binaries from IRIX
binaries.  The code causing problems for you is a heuristic that no
longer works these days so I'll have to come up with something new.

  Ralf

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