Date: Wed, 17 Mar 1999 13:23:39 +0100 From: Marcel Moolenaar <marcel@scc.nl> To: emulation@FreeBSD.ORG Subject: Re: /lib/ld-linux.so.2 in 2.2.8 Message-ID: <36EF9ECB.96C0FBA9@scc.nl> References: <36EEFB0C.C4A24A87@bigshed.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Ken Marx wrote:
> bash: /lib/ld-linux.so.2: cannot execute binary file
>
> (Same as any wrongly attempted execution of any .so.)
To follow up on my on post:
The reason is in fact very simple. Linux allows the execution of shared
objects whereas FreeBSD doesn't. IMO, FreeBSD has it right: you don't execute
ELF binaries when they are not flagged as such.
For users of 2.x systems this is a bit annoying, since they do not have an
alternative. The problem can be solved by applying the following *untested*
patch on 2.2.7 and 2.2.8 systems:
*** imgact_elf.c.orig Wed Mar 17 13:16:39 1999
--- imgact_elf.c Wed Mar 17 13:19:34 1999
***************
*** 252,260 ****
if (hdr->e_machine != EM_386 && hdr->e_machine != EM_486)
return ENOEXEC;
! if (hdr->e_type != type)
! return ENOEXEC;
!
return 0;
}
--- 252,266 ----
if (hdr->e_machine != EM_386 && hdr->e_machine != EM_486)
return ENOEXEC;
! if (type == ET_EXEC) {
! if (hdr->e_type != ET_EXEC && hdr->e_type != ET_DYN)
! return ENOEXEC;
! }
! else {
! if (hdr->e_type != type)
! return ENOEXEC;
! }
!
return 0;
}
An equivalent patch on my -current system does solve the problem. I just
don't have a 2.2.x system available for testing. In any case, you'll get the
drift...
marcel
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-emulation" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?36EF9ECB.96C0FBA9>
