Short: IXemul 43.1 - 68000 trace library Author: various Uploader: fnf@ninemoons.com Type: dev/gcc This is ixemul.library release 43.1, a shared library that makes it possible to compile and run most Unix programs under AmigaOS with almost no changes. IXemul is part of the ADE (Amiga Developer's Environment), a community effort to produce a complete development environment that is stable, available in source, and completely self-hosting. See the ADE readme file at ftp://ftp.ninemoons.com/pub/ade/README for more details about ADE. IXemul includes Jeff Shepherd's networking code. If ixnet.library (included) is installed then ixemul.library will use the networking functions from the ixnet.library, instead of the default dummy implementation. Ixnet.library works with AS225 and with AmiTCP. It supports both clients and daemons. A program that uses networking functions is completely shielded from the AS225 and AmiTCP differences by ixnet.library, which will take care of all the details for you. That means that there is no longer any need to provide two different binaries, one for AS225 and one for AmiTCP. Furthermore, it is relatively easy to add support for other network packages. The following are the changes made since the previous release: Ixemul no longer uses async writes. All I/O is now synchronous. This allowed me to remove several Disable()/Enable() pairs, and actually made ixemul faster. Apparently the overhead in handling async I/O was substantial. Applied patches from Jeff Shepherd fixing various problems in the ixnet.library. Among them improved AS225 passwd handling. Moved the resolver functions out of ixnet.library into libc.a. All programs that used these functions will have to be recompiled. Very few programs use these functions, and since they are really higher level functions and do not belong in a low level library like ixnet, I've moved them. Also moved tty database functions (getttyent() and friends, ttyname() and ttyslot()) to libc.a, for much the same reason. Added the NetBSD DB sources to libc.a and removed the hacked versions from ixnet. Replaced various headers with the NetBSD versions. Important for certain socket-related ioctl defines that were incorrect in the old headers. Added ptrace(GETA4, pid, 0, 0) to obtain the value of the a4 register if this executable was compiled with -fbaserel or -resident. Needed by gdb to find out where the data section is. Added ptrace(GETEXENAME, pid, 0, 0) to obtain the name of the current executable. Useful in scripts that start with '#!/bin/sh' or something similar. 'argv[0]' as seen by sh is the name of the script, but if you want to get the pathname of 'sh' itself, you can use this ptrace call. Added setlocale() and ctermid() to libc.a. It is now possible to unlink() a file that is owned by another process (just like Unix). Gcc uses this to remove temporary files that are actually owned by cpp (or as). Of course, on the Amiga this is implemented as a delayed delete, i.e. a flag is set in the 'struct file' to tell ixemul to delete the file when it is closed by the owner process. Added support for a root ('/') directory. This will only work for programs that use ixemul.library. So if you start pdksh, 'cd' to the root (cd /) and use the AmigaDOS command 'list' to view this directory, then you won't get what you expect. If you use the Unix ls command however, then you will see all the volumes that you have as top level directories. Removed an old hack in __wait_packet.c that interfered with Ctrl-F handling. Fixed a bug in fnctl(), F_SETFL. Added AFS, AFSFloppy and PFS support. Many thanks to the AFS author, Michiel Pelt, who provided me with the necessary technical information, and to Kriton Kyrimis for giving some very useful suggestions. Added MultiUserFileSystem support, contributed by Mike Krings. Thanks Mike! Added new function ix_warning: similar to ix_panic, but allows the user to choose between "Continue" and "Abort". This to work around a case like: for (;;) crypt(); where one couldn't break out of the program because the requester kept popping up. Fixed -mstackcheck support and fixed buggy baserel-stackextend support. The call socket(AF_UNIX, SOCK_STREAM, 0) no longer crashes if ixnet.library is not installed. Reorganized Makefiles. I've removed the option to compile each source separately, instead they are always catenated together. Also, 'make' no longer starts itself two more times in order to make the library. I've used GNU make wizardry to let 'make' figure out all the targets by itself. Sigsetjmp and siglongjmp were broken. Fixed. Replaced the old man pages with the new NetBSD manual pages in the original troff form. Replaced the nice() stub in ix_stub with nice.c from NetBSD. Removed a Delay(100) that was called just before a vfork()ed program finally terminated. Made h_errno a global variable like errno. At several places in the library the errno variable was reset to 0. However, the library should (almost) never set errno to 0. This caused problems with the 'ping' program, where recvfrom set errno to 4, but the library changed it back to 0 before 'ping' got to see it. Now sets st_uid and st_gid from a 'stat' structure to the effective UID and GID. Some programs tested these fields and they failed when using networking support. These fields used to be 0. Reread the global environment variables only when 1) a new program is started, and 2) the ENV: directory has been changed (i.e., a new setting was added to ENV:). ENV: used to be read every time a program was started, whether it was needed or not. Given the shell script s.sh in /ram/t: #!/bin/sh /bin/echo $0 'sh /ram/t/s.sh' produced '/ram/t/s.sh', while typing '/ram/t/s.sh' from within the pdksh shell produced 'Ram:t/s.sh'. Fixed. Removed a dubious CurrentDir() to a *file* instead of a directory. While this is apparently supported for the standard AmigaOS filesystems, not all third-party filesystems supported this. When you try to use a >68020 ixemul.library on a 68000 Amiga, you now get a decent message instead of a crash. The net ixemul library distribution consists of several archives: ixemul-bin.lha Utils for gnu/bin, like ixtrace and ixconfig ixemul-sdk.lha Files needed to build applications that use ixemul.library. ixemul-doc.lha Various documentation, such as this file ixemul-src.lha Complete source code for ixemul library ixemul-tz.lha Pieces for doing TZ (timezone) management ixemul-CCCF.lha Specific flavors of the library, where 'CCC' is one of 000, 020, 030, or 040, for 68000, 68020, 68030, and 68040 respectively, and 'F' is either 'f', 's', or 't' for FPU support or soft floating point or a "trace" version (also soft float) respectively. For further information consult the NEWS, INSTALL, README and TODO files in the documentation archive. -Fred Fish (fnf@ninemoons.com)