* kernel should not reject -mips2 ELF binaries
@ 2000-11-07 2:20 Jay Carlson
2000-11-07 2:20 ` Jay Carlson
2000-11-07 2:28 ` Ralf Baechle
0 siblings, 2 replies; 5+ messages in thread
From: Jay Carlson @ 2000-11-07 2:20 UTC (permalink / raw)
To: linux-mips, linux-mips
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.
2) compare the value with E_MIPS_ARCH_1 and E_MIPS_ARCH_2
3) figure out what the capabilities of the current processor are and reject
E_MIPS_ARCH2 on R2/3000s.
I'd just go do #3 except it looks like a bigger pain than it's worth. No
other linux kernel port goes to that amount of trouble, of course.
(I may do #1 or #2 in the Linux VR CVS as a stopgap.)
Jay
^ permalink raw reply [flat|nested] 5+ messages in thread
* kernel should not reject -mips2 ELF binaries
2000-11-07 2:20 kernel should not reject -mips2 ELF binaries Jay Carlson
@ 2000-11-07 2:20 ` Jay Carlson
2000-11-07 2:28 ` Ralf Baechle
1 sibling, 0 replies; 5+ messages in thread
From: Jay Carlson @ 2000-11-07 2:20 UTC (permalink / raw)
To: linux-mips, linux-mips
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.
2) compare the value with E_MIPS_ARCH_1 and E_MIPS_ARCH_2
3) figure out what the capabilities of the current processor are and reject
E_MIPS_ARCH2 on R2/3000s.
I'd just go do #3 except it looks like a bigger pain than it's worth. No
other linux kernel port goes to that amount of trouble, of course.
(I may do #1 or #2 in the Linux VR CVS as a stopgap.)
Jay
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: kernel should not reject -mips2 ELF binaries
2000-11-07 2:20 kernel should not reject -mips2 ELF binaries Jay Carlson
2000-11-07 2:20 ` Jay Carlson
@ 2000-11-07 2:28 ` Ralf Baechle
2000-11-07 3:00 ` Jay Carlson
1 sibling, 1 reply; 5+ messages in thread
From: Ralf Baechle @ 2000-11-07 2:28 UTC (permalink / raw)
To: Jay Carlson; +Cc: linux-mips, linux-mips
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
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: kernel should not reject -mips2 ELF binaries
2000-11-07 2:28 ` Ralf Baechle
@ 2000-11-07 3:00 ` Jay Carlson
2000-11-07 3:00 ` Jay Carlson
0 siblings, 1 reply; 5+ messages in thread
From: Jay Carlson @ 2000-11-07 3:00 UTC (permalink / raw)
To: Ralf Baechle, Jay Carlson; +Cc: linux-mips, linux-mips
> > if (__h->e_flags & EF_MIPS_ARCH) \
> > __res = 0; \
> > 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.
OK. I'm going to remove the above two lines in the Linux VR CVS repository.
Thanks!
Jay
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: kernel should not reject -mips2 ELF binaries
2000-11-07 3:00 ` Jay Carlson
@ 2000-11-07 3:00 ` Jay Carlson
0 siblings, 0 replies; 5+ messages in thread
From: Jay Carlson @ 2000-11-07 3:00 UTC (permalink / raw)
To: Ralf Baechle, Jay Carlson; +Cc: linux-mips, linux-mips
> > if (__h->e_flags & EF_MIPS_ARCH) \
> > __res = 0; \
> > 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.
OK. I'm going to remove the above two lines in the Linux VR CVS repository.
Thanks!
Jay
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2000-11-07 3:00 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-11-07 2:20 kernel should not reject -mips2 ELF binaries Jay Carlson
2000-11-07 2:20 ` Jay Carlson
2000-11-07 2:28 ` Ralf Baechle
2000-11-07 3:00 ` Jay Carlson
2000-11-07 3:00 ` Jay Carlson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox