Hi,
> Maybe your path is not set correctly (for this specific problem).
Today has been one dumb mistake after another. I apologize.
I'll do it properly shall I:
# sysctl -a | grep linux
kern.emul.linux=1
# ls -al a.out
-rwxr-xr-x 1 edd edd 1176578 May 28 13:18 a.out
# file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1, for
GNU/Linux 2.6.9, statically linked, not stripped
# uname -a
OpenBSD puff.langash.lan 4.1 GENERIC#1435 i386
# ktrace ./a.out
ktrace: exec of './a.out' failed: Operation not permitted
# kdump -f ktrace.out
8108 ktrace RET ktrace 0
8108 ktrace CALL execve(0xcfbdc9d3,0xcfbdc89c,0xcfbdc8a4)
8108 ktrace NAMI "./a.out"
8108 ktrace RET execve -1 errno 1 Operation not permitted
8108 ktrace CALL mprotect(0x7e522000,0x1000,0x3)
8108 ktrace RET mprotect 0
8108 ktrace CALL mprotect(0x7e522000,0x1000,0x1)
8108 ktrace RET mprotect 0
8108 ktrace CALL write(0x2,0xcfbdbeb0,0x8)
8108 ktrace GIO fd 2 wrote 8 bytes
"ktrace: "
8108 ktrace RET write 8
8108 ktrace CALL write(0x2,0xcfbdbed0,0x18)
8108 ktrace GIO fd 2 wrote 24 bytes
"exec of './a.out' failed"
8108 ktrace RET write 24/0x18
8108 ktrace CALL write(0x2,0x3c00213c,0x2)
8108 ktrace GIO fd 2 wrote 2 bytes
": "
8108 ktrace RET write 2
8108 ktrace CALL issetugid()
8108 ktrace RET issetugid 0
8108 ktrace CALL open(0xcfbdc280,0,0)
8108 ktrace NAMI "/usr/share/nls/C/libc.cat"
8108 ktrace RET open 3
8108 ktrace CALL fstat(0x3,0xcfbdc1e0)
8108 ktrace RET fstat 0
8108 ktrace CALL mmap(0,0xe5a,0x1,0x1,0x3,0,0,0)
8108 ktrace RET mmap -2046947328/0x85fe1000
8108 ktrace CALL close(0x3)
8108 ktrace RET close 0
8108 ktrace CALL readlink(0x3c002168,0xcfbdc120,0x3f)
8108 ktrace NAMI "/etc/malloc.conf"
8108 ktrace RET readlink -1 errno 2 No such file or directory
8108 ktrace CALL issetugid()
8108 ktrace RET issetugid 0
8108 ktrace CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
8108 ktrace RET mmap 2086334464/0x7c5af000
8108 ktrace CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
8108 ktrace RET mmap -2141827072/0x80565000
8108 ktrace CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
8108 ktrace RET mmap 2143391744/0x7fc19000
8108 ktrace CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
8108 ktrace RET mmap -1960751104/0x8b215000
8108 ktrace CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
8108 ktrace RET mmap -1952120832/0x8ba50000
8108 ktrace CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
8108 ktrace RET mmap -1965772800/0x8ad4b000
8108 ktrace CALL munmap(0x85fe1000,0xe5a)
8108 ktrace RET munmap 0
8108 ktrace CALL __sysctl(1.37,0xcfbdc540,0xcfbdc534,0,0)
8108 ktrace RET __sysctl 0
8108 ktrace CALL getpid()
8108 ktrace RET getpid 8108/0x1fac
8108 ktrace CALL write(0x2,0xcfbdbeb0,0x18)
8108 ktrace GIO fd 2 wrote 24 bytes
"Operation not permitted
"
8108 ktrace RET write 24/0x18
8108 ktrace CALL munmap(0x7e522000,0x1000)
8108 ktrace RET munmap 0
8108 ktrace CALL exit(0x1)
The above was run as root.
I iterate again, this binary was cross compiled with g++, and has
proven to work when copied onto an linux i386 machine. This was all
done by my friend who uses linux. He tells me he used the -m32 switch
of g++ to do so.
I hope this is all the information this time.