mirror of
https://github.com/DoctorWkt/unix-jun72.git
synced 2026-02-02 06:51:49 +00:00
156 lines
5.4 KiB
Plaintext
156 lines
5.4 KiB
Plaintext
Bugs in Binaries
|
|
----------------
|
|
|
|
One of the V5 C compiler passes requires -DZERO_MEMORY: it must not
|
|
initialise a variable properly. V5 and V6 ar(1) do not close a file
|
|
descriptor after writing has finished. If Apout is compiled with
|
|
stream buffering, when this file is copied it is truncated. Either
|
|
turn off Apout stream buffering (a performance penalty), or patch
|
|
ar.s to behave itself. The patch is:
|
|
|
|
*** ar.s.orig Thu Jan 14 09:40:46 1999
|
|
--- ar.s Thu Jan 14 09:41:12 1999
|
|
***************
|
|
*** 444,449 ****
|
|
--- 444,451 ----
|
|
bes crterr
|
|
mov r0,afo
|
|
sys write; magic; 2
|
|
+ mov tfo,r0 / need to close before reading
|
|
+ sys close
|
|
1:
|
|
mov tfi,r0
|
|
sys read; buf; 512.
|
|
|
|
|
|
Floating-point Limitations
|
|
--------------------------
|
|
|
|
PDP-11 doubles are treated as floats. FEA/FEC don't exist.
|
|
FP errors are not dealt with. Mistrust FP results for now.
|
|
|
|
Limitations for 7th Edition Emulation in Apout 2.3
|
|
--------------------------------------------------
|
|
|
|
Note that V5 and V6 binaries are considered V7 binaries. Overlay
|
|
binaries (type 0405) are not recognised.
|
|
|
|
The errno values on the native system are not translated back to
|
|
the V7 errno values. There is normally a 1-to-1 mapping, but V7
|
|
only had 32 errno values; native errno values above this are going
|
|
to confuse the emulated application.
|
|
|
|
The following system calls are not implemented, and return an
|
|
EPERM error to the application: phys(2), prof(2), ptrace(2),
|
|
acct(2), mount(2), umount(2), times(2). The following system
|
|
calls are ignored: lock(2), stime(2).
|
|
|
|
The following systems calls are only partially implemented:
|
|
|
|
signal(2): Only SIG_DFL and SIG_IGN are implemented.
|
|
stty(2), gtty(2): These should work, but V7 stty(1) doesn't work.
|
|
ioctl(2): Only enough to emulate stty(2) amd gtty(2).
|
|
|
|
The emulated applications use the native filesystem. Native filenames bigger
|
|
than 14 characters are truncated to 14 characters before being passed to
|
|
the application. In a similar way, inode numbers bigger than 65,536 are
|
|
truncated modulo 65,536 before being passed to the application.
|
|
|
|
Limitations for 5th & 6th Edition Emulation in Apout 2.3
|
|
--------------------------------------------------------
|
|
|
|
There seems to be a bug in V5/V6 ctime() which stops dates after
|
|
November 1999 being displayed correctly. Apout works around this
|
|
problem by modifying dates returned from system calls to be in
|
|
the year 1998 if they are 1999 or later.
|
|
|
|
Limitations for 2.9BSD Emulation in Apout 2.3
|
|
---------------------------------------------
|
|
|
|
At present, 2.9BSD binaries are treated as V7 binaries, so the limitations
|
|
above apply. This also means that overlays are not understood, and also the
|
|
2.9-specific system calls have not yet been implemented.
|
|
|
|
Limitations for 2.11BSD Emulation in Apout 2.3
|
|
----------------------------------------------
|
|
|
|
Flags passed as arguments to the 2.11 syscalls are promoted to 32-bit
|
|
ints and passed to the native syscall. The errno values on the native
|
|
system are not translated back to the 2.11 errno values. To find out
|
|
what syscalls have been implemented, grep for the word DONE in bsdtrap.c.
|
|
|
|
The following 2.11 syscalls are not handled:
|
|
|
|
S_GETSOCKOPT, S_SETSOCKOPT, S_SELECT,
|
|
S_RECVMSG, S_SENDMSG, S_SENDTO,
|
|
S_SIGBLOCK, S_SIGPAUSE, S_SIGRETURN,
|
|
S_SIGSETMASK, S_SIGSTACK, S_SIGVEC
|
|
|
|
Limitations for 1st Edition Emulation in Apout 2.3
|
|
--------------------------------------------------
|
|
|
|
This is still in the experimental stages, with some problems with time
|
|
values. The KE11A emulation is also incomplete. However, the following
|
|
0405-magic binaries from Dennis Ritchie's s2.tar archive are known to work:
|
|
|
|
cat, cp, date, echo, ls, mkdir, sh, wc
|
|
|
|
Most of the others seem to work as well, but I haven't tested them completely.
|
|
The list of 0405-magic files on the s2 archive is:
|
|
|
|
bin/: bin/mv
|
|
bin/ar bin/od
|
|
bin/bas bin/pr
|
|
bin/cat bin/rew
|
|
bin/chball bin/rmdir
|
|
bin/check bin/roff
|
|
bin/chown bin/sh
|
|
bin/cmp bin/skip
|
|
bin/cp bin/sort
|
|
bin/date bin/stat
|
|
bin/db bin/stty
|
|
bin/dc bin/su
|
|
bin/df bin/sum
|
|
bin/du bin/tap
|
|
bin/echo bin/tm
|
|
bin/ed bin/tty
|
|
bin/exit bin/wc
|
|
bin/form bin/who
|
|
bin/goto bin/write
|
|
bin/if etc/getty
|
|
bin/login etc/glob
|
|
bin/ls etc/init
|
|
bin/mail etc/msh
|
|
bin/mesg /tc/suftab
|
|
bin/mkdir
|
|
|
|
The following 1st Edition system calls are not yet emulated: GTTY, STTY, TELL.
|
|
|
|
Limitations for 2nd Edition Emulation in Apout 2.3
|
|
--------------------------------------------------
|
|
|
|
The few 2nd Edition binaries with 0407-magic on the s2 archive can now
|
|
be run with Apout. Essentially, they receive the same environment as
|
|
the 1st Edition binaries, with a few small syscall differences. Note
|
|
that, at present, I don't have a copy of the V2 manuals, so I can
|
|
guarantee that 2nd Edition emulation still needs work.
|
|
|
|
However, the emulation is good enough to allow the C compiler on the s2
|
|
archive to compile the last1120c C compiler on Dennis Ritchie's homepage.
|
|
|
|
The list of 0407-magic files in the s2 archive is below. I have starred
|
|
those binaries that I know work with Apout.
|
|
|
|
* bin/as usr/fort/fc1
|
|
* bin/cc usr/fort/fc2
|
|
bin/ds usr/fort/fc3
|
|
bin/fc usr/fort/fc4
|
|
bin/find usr/jack/a.out
|
|
* bin/ld usr/jack/x.o
|
|
bin/maki * usr/lib/c0
|
|
bin/nm * usr/lib/c1
|
|
* bin/size usr/lib/crt0.o
|
|
bin/strip usr/lib/fr0.o
|
|
bin/un usr/sys/a.out
|
|
* etc/as2
|