Subject: Strange behaviour of Linux emulation and amd
To: None <port-i386@NetBSD.ORG>
From: Jesus M. Gonzalez <jgb@gsyc.inf.uc3m.es>
List: port-i386
Date: 05/23/1997 00:50:47
Hi! I'm suspecting some strange interaction of binary emulation
with amd. I have a kernel with COMPAT_LINUX enabled, and /emul
as a link to an amd-mounted NFS filesystem. Linux binaries seem
to work pretty well when I reboot without amd (and manually mounting
/emul), but I cannot do anything with dymanically linked Linux
binaries when I run amd (statically linked binaries also seem to work,
in both situations).
With /emul mounted by amd, I get the following (being ./gcc a
Linux dynamic binary):
% ./gcc
./gcc: Exec format error. Wrong Architecture.
If I try to run Linux ldd on it (ldd is statically linked),
I get:
% ./ldd ./gcc
./ldd: can't execute ./gcc (Exec format error)
ktrace/kdump doesn't produce valuable information (at least
for me):
% ktrace -tc ./gcc
./gcc: 1: Syntax error: "(" unexpected
(see at the end of the message for result of kdump ./gcc).
Has anybody seen something similar? Am I missing something?
(if this hasn't been already reported, I'll submit a pr, anyway).
All of this is with vanilla 1.2.1/i386.
Thanks in advance,
Jesus.
490 ktrace RET ktrace 0
490 ktrace CALL execve(0xf7bfd91f,0xf7bfd8b0,0xf7bfd8b8)
490 ktrace RET execve -1 errno 8 Exec format error
490 ktrace CALL __sysctl(0xf7bfd3e0,0x2,0xb198,0xf7bfd3e8,0,0)
490 ktrace RET __sysctl 0
490 ktrace CALL break(0xb1d0)
490 ktrace RET break 0
490 ktrace CALL break(0xbffc)
490 ktrace RET break 0
490 ktrace CALL break(0xcffc)
490 ktrace RET break 0
490 ktrace CALL execve(0x2272,0xc000,0xf7bfd8b8)
490 sh RET execve 0
490 sh CALL getpid
490 sh RET getpid 490/0x1ea
490 sh CALL geteuid
490 sh RET geteuid 213/0xd5
490 sh CALL __sysctl(0xf7bfd7e8,0x2,0x4b65c,0xf7bfd7f0,0,0)
490 sh RET __sysctl 0
490 sh CALL break(0x4c2a8)
490 sh RET break 0
490 sh CALL break(0x4cffc)
490 sh RET break 0
490 sh CALL break(0x4dffc)
490 sh RET break 0
490 sh CALL open(0xf7bfd91f,0,0xf7bfd8b4)
490 sh RET open 3
490 sh CALL fcntl(0x3,0,0xa)
490 sh RET fcntl 10/0xa
490 sh CALL close(0x3)
490 sh RET close 0
490 sh CALL break(0x4effc)
490 sh RET break 0
490 sh CALL stat(0x26d24,0xf7bfd6c8)
490 sh RET stat 0
490 sh CALL lstat(0x4e000,0xf7bfd6c8)
490 sh RET lstat 0
490 sh CALL open(0x4e000,0x4,0xf7bfd91c)
490 sh RET open 3
490 sh CALL fstat(0x3,0xf7bfd60c)
490 sh RET fstat 0
490 sh CALL fcntl(0x3,0x2,0x1)
490 sh RET fcntl 0
490 sh CALL break(0x4fffc)
490 sh RET break 0
490 sh CALL fstatfs(0x3,0xf7bfd50c)
490 sh RET fstatfs 0
490 sh CALL break(0x51ffc)
490 sh RET break 0
490 sh CALL fstat(0x3,0xf7bfd6c8)
490 sh RET fstat 0
490 sh CALL getdirentries(0x3,0x50000,0x1000,0x4f014)
490 sh RET getdirentries 512/0x200
490 sh CALL lstat(0x4e000,0xf7bfd6c8)
490 sh RET lstat 0
490 sh CALL lseek(0x3,0,0,0,0)
490 sh RET lseek 0
490 sh CALL close(0x3)
490 sh RET close 0
490 sh CALL lstat(0x4e000,0xf7bfd6c8)
490 sh RET lstat 0
490 sh CALL break(0x52ffc)
490 sh RET break 0
490 sh CALL getuid
490 sh RET getuid 213/0xd5
490 sh CALL geteuid
490 sh RET geteuid 213/0xd5
490 sh CALL getgid
490 sh RET getgid 21/0x15
490 sh CALL getegid
490 sh RET getegid 21/0x15
490 sh CALL read(0xa,0x4bc58,0x3ff)
490 sh RET read 1023/0x3ff
490 sh CALL break(0x53ffc)
490 sh RET break 0
490 sh CALL write(0x2,0x53000,0x27)
490 sh RET write 39/0x27
490 sh CALL exit(0x2)
--
Jesus M. Gonzalez Barahona | addr.: c/ Butarque, 15
Grupo de Sistemas y Comunicaciones | 28911 Leganes, Spain
Departamento de Informatica | tel: +34 1 624 94 58
Universidad Carlos III de Madrid | fax: +34 1 624 94 30
e-mail: jgb@gsyc.inf.uc3m.es | www: http://www.gsyc.inf.uc3m.es/~jgb