956 lines
38 KiB
Plaintext
956 lines
38 KiB
Plaintext
============
|
|
Version 61.1
|
|
============
|
|
* add C99 func log2 log2f lrint lrintf to math.h (lrint/lrintf is fastest way to convert a float in integer)
|
|
* add C99 func strtok_r to string.h
|
|
* mmap use now page size alligned memory that is need by some programs(GCC) to work ok
|
|
* correct handling for extern inline in C99 Mode add.see http://gcc.gnu.org/ml/gcc/2007-03/msg01096.html
|
|
* additional poolmem memsystem add.this let bugs find more easy because AOS memtracker work.
|
|
POOLMEM define can switch between them.
|
|
* ix_CreateChildData function add in libc.a.This create correct Userdata structure ixemul need
|
|
to store filehandles and used memlist of current task when a task is create with amiga OS create Task.
|
|
change to follow Unix spec(not used in vfork process)
|
|
child tasks use mem list from parent task.
|
|
child tasks use same file handle as parent task
|
|
need by many Unix programs that create tasks with SDL.
|
|
this function is 100% compatible to old because only programs that use ix_CreateChildData
|
|
set u_parent_userdata != 0 and so new code is active.
|
|
|
|
* because most Linux programs do not check if enough memory is here and to avoid them crash badly after a failed malloc
|
|
a check is add if memory cant allocate.
|
|
then a requester come that show how many mem need, and the user can free memory on other programs
|
|
and can then click on try again.
|
|
|
|
|
|
============
|
|
VERSION 50.0
|
|
============
|
|
|
|
* Fix a bug in lseek, so ffmpeg work without changes
|
|
* Add atan2, strtoll func.Need link with new libc
|
|
* Over 25 Math C99 functions add in math.h
|
|
* add stdint.h and inttypes.h to includes.many programs need them
|
|
* add func atoll to stdlib.h
|
|
* autoconfig detect now correct that AOS have a vfork function and use this automatic
|
|
(help gcc, make build and i guess lots other without source changes)
|
|
* assert use the in newer GCC obsolete eeprintf func not.
|
|
* Use V48 signal method this get working CTRL+c, OWB, vfork on 68k again(was broken in V49 68k)
|
|
|
|
* if no int __stack variable is set in program source, a default stacksize from the envvar ixstack is use.
|
|
if no envarc:ixstack env var is find, the minimum stacksize is set to 512000 bytes.
|
|
If on shell or Icon more stack than the minimum is set, then this stack size is use.
|
|
|
|
Sound large, but Unix/Linux programs need lot stack.the value of 512 kb is a praxis value,
|
|
because i find no program currently that use more stack than 400 kb.but dont think 512 kb is far enough.
|
|
The cygwin Unix API give Unix/Linux tasks 2 MB of stack and also windows programs get on default
|
|
2,5 MB of stack.So if you have lots of ram and you want be on the safe side better set ixstack to 2000000
|
|
If you are low on amiga mem, you can lower the stack value upto 16384 same value as ixemul 48 or 49.
|
|
|
|
BUT BE SURE ALWAYS look how much stack a program need.there are not much programs out, that work with this
|
|
low stacksize correct.So you need carefully set the values in shell-startup or Icons by yourself to
|
|
usefull values.
|
|
|
|
|
|
* a env variable IXENVARC add, if set then ixemul read the env variables on dir
|
|
envarc and not in env:.This "Hack" help easy to get ixemul working when envhandler or happyenv is used.
|
|
Change a envarc that allready exist, work in env: and envarc
|
|
Limits: when you create a new env variable only in env: and not in envarc: then this is not
|
|
notice.So rule is, add new env vars always in envarc.
|
|
|
|
* stack usage can see when program end, work also on vfork tasks now
|
|
In ixprefs enable show stack usage and start program ixstack -s from shell.
|
|
|
|
|
|
|
|
IMPORTANT: if you use cubicide or ixpipe set the stack size from ixpipe Mountlist to 4000, because on test some
|
|
installs are found that need more stack than 3000 bytes.
|
|
|
|
============
|
|
VERSION 49.0
|
|
============
|
|
|
|
Fixed a race condition in wait4().
|
|
|
|
New signal handling scheme. See machdep.c.
|
|
|
|
First version supporting MorphOS.
|
|
|
|
Includes reworked a bit to make use of _G_config.h. This
|
|
helps preventing new warnings to appear when one switch
|
|
compilers.
|
|
|
|
============
|
|
VERSION 48.0
|
|
============
|
|
|
|
Fixed a bug in ftruncate reported by Niels Froehling (incorrect
|
|
interpretation of the SetFileSize return value).
|
|
|
|
Fixed a malloc bug (it no longer accepts sizes < 0).
|
|
|
|
Added a few things for Holger Jakob's ppc ixemul support.
|
|
|
|
p.OS is no longer supported. While 99% of the code is still there
|
|
it is no longer compiled, nor supported. Binaries compiled for
|
|
ixemul 48.0 will no longer work under a p.OS system, nor do you
|
|
need the p.OS headers anymore to compile ixemul.library.
|
|
|
|
============
|
|
VERSION 47.3
|
|
============
|
|
|
|
Fixed a bug in getUserPasswd where certain strings weren't properly
|
|
0-terminated.
|
|
|
|
Fixed a bug in setpriority and getpriority: these functions always failed
|
|
due to an wrong test.
|
|
|
|
Fixed a bug in ctype.h: all macros (e.g. isspace and friends) failed to
|
|
work properly with character code >= 128. Now cast everything to unsigned
|
|
char first.
|
|
|
|
Applied patch from David Zaroski to uname.c. Improved OS version number
|
|
reporting.
|
|
|
|
============
|
|
VERSION 47.2
|
|
============
|
|
|
|
Fixed a bug in handling of "/". Thanks to Norbert Pueschel for providing me
|
|
with a fix.
|
|
|
|
Updated ixprefs from Kriton Kyrimis.
|
|
|
|
Fixed problems with vfork() and sockets when the program was started from
|
|
inetd.
|
|
|
|
============
|
|
VERSION 47.1
|
|
============
|
|
|
|
Fixed ixtrace bug that made it impossible to set the stacksize.
|
|
|
|
Fixed bug in crt0.c which caused a crash under p.OS.
|
|
|
|
============
|
|
VERSION 47.0
|
|
============
|
|
|
|
It was possible to kill a process with a SIGKILL signal when that process
|
|
was already in the exit() function: this can cause major crashes.
|
|
|
|
Fixed more bugs in wait4(): the list of child processes could contain
|
|
processes whose 'getuser()' pointer was NULL, causing enforcer hits and
|
|
general mayhem.
|
|
|
|
Signalling processes that were asleep waiting for some event would not wake
|
|
these processes.
|
|
|
|
Fixed a bug in wait4: if there are no longer any childs available that
|
|
meet the criteria of wait4, then wait4 should exit. In previous versions
|
|
this test was only done for the zombie processes, and not for all other
|
|
childs.
|
|
|
|
Updated timezone sources and databases.
|
|
|
|
Kriton Kyrimis supplied patches to port ixprefs to p.OS.
|
|
|
|
David Zaroski supplied patches to upgrade ixtrace to this ixemul version.
|
|
|
|
vfork() will now copy any open sockets to the child, previously the
|
|
sockets inherited by the child from the parent were always invalid.
|
|
|
|
Added Unix Sys V semaphore and message support (sem* and msg* functions).
|
|
|
|
Added low-level mutex (semaphore) functions: ix_mutex_lock(),
|
|
ix_mutex_attempt_lock() and ix_mutex_unlock(). These functions are
|
|
wrappers for the AmigaOS or p.OS kernel semaphore functions. See ix.h for
|
|
more info.
|
|
|
|
Fixed several nasty bugs in the shm support code.
|
|
|
|
Added a new checkbox to ixprefs: Enable MuFS support. By default the
|
|
support for the Multi-user File System is turned off. One reason for adding
|
|
this checkbox is that apparently the MuFS support isn't bug-free.
|
|
|
|
ade -> gg
|
|
|
|
Added workaround for AFS bug with symlink("", "").
|
|
|
|
The resolv.conf keyword scan is now case-insensitive: the AmiTCP
|
|
resolv.conf file is uppercase, while NetBSD assumes lowercase.
|
|
|
|
Applied patches from Norbert Pueschel fixing argv[0] when starting a
|
|
script: it was the name of the scripts, now it is the name of the
|
|
interpreter. This conforms to NetBSD and fixes problems with dld.
|
|
|
|
ttyname() in libc.a now always returns "/dev/tty" if the device is a tty
|
|
and NULL otherwise.
|
|
|
|
"#!shell arg" handling has been changed to be consistent with NetBSD: all
|
|
arguments after the shell name are now passed as the first argument to the
|
|
shell.
|
|
|
|
munmap() now calls msync().
|
|
|
|
Ixemul now fully supports pOS.
|
|
|
|
chown() will succeed if the device doesn't support this action instead of
|
|
reporting an error.
|
|
|
|
The -enforcer flag of gdb now also supports the 68060.
|
|
|
|
Improved getppid and added hstrerror thanks to Norbert Pueschel.
|
|
|
|
Added ix_obtain_socket and ix_release_socket thanks to Jeff Shepherd.
|
|
Added __flush_cache for gcc trampoline handling.
|
|
Added ix_flush_insn_cache, ix_flush_caches and ix_flush_data_cache for OS
|
|
independent cache flushing.
|
|
Added ix_get_first_segment and ix_get_next_segment.
|
|
Added ix_select.
|
|
Added isascii, isiso, toascii and toiso.
|
|
Added ix_get_long, ix_set_long.
|
|
|
|
Removed aselect.
|
|
Removed CreatePort, CreateExtIO, CreateStdIO, CreateTask.
|
|
Removed DeletePort, DeleteExtIO, DeleteStdIO, DeleteTask.
|
|
Removed ix_get_vars.
|
|
Removed _wb_parse, _cli_parse and _main.
|
|
|
|
Renamed achmod to ix_chmod.
|
|
Renamed ix_get_vars2 to ix_get_vars.
|
|
Renamed vfork2 to ix_vfork.
|
|
Renamed vfork_resume to ix_vfork_resume.
|
|
Renamed __amiga_filehandle to ix_filehandle.
|
|
Renamed tracecntl to ix_tracecntl.
|
|
Renamed ix_amiga.h to ix.h.
|
|
|
|
============
|
|
VERSION 46.1
|
|
============
|
|
|
|
Renamed __os to ix_os as a preparation for ixemul-47.0. Also renamed
|
|
expand_cmd_line to ix_expand_cmd_line and default_wb_window to
|
|
ix_default_wb_window.
|
|
|
|
============
|
|
VERSION 46.0
|
|
============
|
|
|
|
Copied basic pOS support from ixemul-47.0 especially for GeekGadgets 2. The
|
|
ixemul.library does *not* support pOS, you have to use ixemul-47.0 for
|
|
that, but all programs compiled with the new libc.a and *crt0.o will also
|
|
run on pOS using ixemul-47.0. Unless Amiga kernel functions are used, of
|
|
course. See README.pOS for more information.
|
|
|
|
Added ipcs and ipcrm to manage the shm functionality.
|
|
|
|
Upgraded db to version 1.85.
|
|
|
|
Added an ixprefs option to show the stack usage of all the programs that
|
|
use ixemul.library.
|
|
|
|
chmod() now also checks if someone else has the same file open, and makes
|
|
sure that when that file is closed the same mode flags are written instead
|
|
of the flags specified when the file was opened.
|
|
|
|
Added shared memory support (shmget, shmat, shmdt and shmctl) and the ftok
|
|
function.
|
|
|
|
Fixed a bug in memccpy (the wrong pointer was returned).
|
|
|
|
Added a patch from Marc Espie to correctly setup the program name and
|
|
directory in the CLI structure so that GetProgramName and GetProgramDir do
|
|
the right thing.
|
|
|
|
============
|
|
VERSION 45.1
|
|
============
|
|
|
|
Fixed a bug in the Unix Domain socket code that would occasionally cause a
|
|
client to wait indefinately for a connection to be granted, while in fact
|
|
the server had already accepted the connection.
|
|
|
|
getdtablesize() now returns FD_SETSIZE instead of NOFILE (256 instead of
|
|
512). The result of this function was used by several X clients to discover
|
|
the number of filehandles select() can test. And if that value is too large,
|
|
you'll get unexpected and hard to find crashes. The same change was made to
|
|
sysconf(_SC_OPEN_MAX).
|
|
|
|
shutdown() could close down the whole Unix domain socket, causing a
|
|
crash when the socket was closed a second time by the 'real' close.
|
|
|
|
rename() now tests for a rename across devices and returns the correct
|
|
error code.
|
|
|
|
Applied patch from Norbert Pueschel to improve delayed unlink.
|
|
|
|
Closing of Unix domain sockets is now atomic (between Forbid/Permit),
|
|
otherwise the Amiga could crash if the X server was running at a higher
|
|
priority than the client.
|
|
|
|
Fixed a bug in ixemul.trace that caused Enforcer hits in gcc.
|
|
|
|
Fixed a bug with 'du -ks /volume'. The convert_dir() function stored the
|
|
directory name in Amiga format instead of Unix format.
|
|
|
|
Norbert Pueschel greatly improved uid/gid handling in ixemul.library. See
|
|
the README for detailed information.
|
|
|
|
Fixed a bug in handling volumes/devices named "dev:". Ixemul handles the
|
|
volume /dev specially (e.g., /dev/console is translated to console:) and
|
|
that interfered with the handling of the DEV: device or any volume named
|
|
DEV:. To circumvent the /dev handling you can now use "dev:" instead of
|
|
"/dev" or write "DEV" instead of "dev" (in other words, the open() function
|
|
tests for the string "/dev/" in a case-sensitive way).
|
|
|
|
Due to a clumsy design of the ENV: notification a signal was occasionally
|
|
left unfreed. WShell gives warnings for that, so I changed the design and
|
|
that should take care of the warning. The unfreed signal warning was
|
|
harmless, but annoying.
|
|
|
|
Now fill the file type in the dirent struct. Thanks to Lars Hecking for
|
|
reporting this.
|
|
|
|
Some AmigaOS programs started from an ixemul program set Signals that were
|
|
allocated by ixemul. This can happen because ixemul resets the allocated
|
|
signal mask in the Task structure. Because of that a handshake between the
|
|
child and the parent when the child process is dying failed, and Enforcer
|
|
hits (usually followed by a crash) were the result. Fixed by resetting all
|
|
Signals.
|
|
|
|
Fixed a bug in the trap.s supervisor() code: you cannot safely pass data on
|
|
the stack to the function to be executed in supervisor mode. In fact, this
|
|
failed with a beta version of the 68060.library from Phase 5. Now pass the
|
|
data through registers.
|
|
|
|
Fixed bug in frexp(0.0, &i) where i was set to 1 instead of 0.
|
|
|
|
Fixed 32 Kb memory leak.
|
|
|
|
Added tty CRMOD support.
|
|
|
|
Fixed serious bug in unix domain sockets where a kind of deadlock situation
|
|
could occur.
|
|
|
|
system() now searches the whole path for 'sh' and doesn't use /bin/sh only.
|
|
Also the paths in paths.h have been adjusted for Geek Gadgets. Thanks to
|
|
Robert Davis for pointing out the system() problem.
|
|
|
|
select() on a small file that was stored in memory if the user selected a
|
|
non-zero Membuf size in ixprefs didn't produce the expected results. Thanks
|
|
to Stefan Grosse Pawig for reporting this.
|
|
|
|
============
|
|
VERSION 45.0
|
|
============
|
|
|
|
Moved popen() and pclose() into ixemul.library from libc.a. These functions
|
|
are used regularly by libraries, and having them in ixemul.library makes
|
|
the conversion of those static libraries into shared libraries easier.
|
|
Besides, these functions are used frequently enough to warrant their
|
|
integration into ixemul.library.
|
|
|
|
Added a patch from Kamil Iskra that fixes problems with -mstackextend and
|
|
vfork2(). However, such programs *must* call vfork_setup_child().
|
|
|
|
Thanks to Lars Hecking, a new fnmatch(3) with extended functionality is
|
|
available. The fnmatch code is copied from the NetBSD sources.
|
|
|
|
Added new manual pages.
|
|
|
|
Upgraded ixemul to the new structure passing scheme of gcc (A1 contains a
|
|
pointer to the return structure). This involved ldiv(), div() and
|
|
inet_makeaddr(). Thanks to Kamil Iskra for providing me with patches to
|
|
implement this.
|
|
|
|
Upgraded the timezone stuff to the latest version.
|
|
|
|
Implemented Unix Domain sockets. Missing features: datagrams aren't
|
|
(yet?) supported, and connect() doesn't have a timeout.
|
|
|
|
Removed stack watcher code. It was seldom used, and it was never very
|
|
reliable.
|
|
|
|
Implemented sessions. This improves Ctrl-C handling, and is required to
|
|
make full use of xterm.
|
|
|
|
Fixed an unlink bug (it has to check all open files for the given filename)
|
|
and a bug in ix_lock_base/ix_unlock_base: if these calls were nested, the
|
|
signal masked was restored to ~0 instead of the original value.
|
|
|
|
Added a new utility, ixstack, and a new global variable, __stack, to allow
|
|
the user and programmer to specify a minimum stacksize. If the current
|
|
stack is too small, a new stack is automatically allocated. Thanks to Kamil
|
|
Iskra for implementing this.
|
|
|
|
ioctl(fd, TIOCGPGRP, ...) now returns something useful. NcFtp didn't show
|
|
the progress bar anymore because of this.
|
|
|
|
Added large-baserel libraries and startup-code.
|
|
|
|
============
|
|
VERSION 44.0
|
|
============
|
|
|
|
Kriton Kyrimis updated ixprefs.
|
|
|
|
David Zaroski updated ixtrace.
|
|
|
|
Fixed link count for directories. Thanks to Norbert Pueschel.
|
|
|
|
umask implemented for for open() and mkdir(). Thanks to Norbert Pueschel.
|
|
|
|
Added muFIBB_SET_GID, which will be implemented in the next version
|
|
of MultiUser. The old way of handling setgid was confusing and even
|
|
potentially dangerous. Thanks to Norbert Pueschel.
|
|
|
|
Added the translation unix sticky bit -> AmigaOS h bit. This one is
|
|
more for aestaethical reasons, as the h bit is no longer supported in 3.x.
|
|
Thanks to Norbert Pueschel.
|
|
|
|
Added a field 'void *u_user;' near the beginning of the user struct which
|
|
everybody is free to (ab)use. It can be handy to store task private data
|
|
in the user struct, at least, I had to use it recently.
|
|
|
|
Added an ix_amiga.h header, which will contain all amiga specific functions
|
|
and macros in ixemul.library and libc.a, together with a description.
|
|
|
|
Profiling has been enhanced. Ixprefs adds a new profiling preference:
|
|
either take samples only while your program is running and the PC is within
|
|
your program, or take samples while your program is running and if the PC
|
|
is outside your program code (e.g. in ixemul or in intuition.library), use
|
|
the last function your program entered before calling ixemul or whatever,
|
|
or always take samples, even if other programs are running. Again, the
|
|
last recorded function gets the hit in those cases.
|
|
|
|
An array of 100 longs to store the A4 register of shared libraries has been
|
|
added to the user struct. This array can be easily increased in future
|
|
releases, should the need arise. The first 20 slots are for your own free
|
|
use, the other slots should be registered. See the file REGISTRY in the
|
|
ixemul source distribution for more details.
|
|
|
|
Fixed yet another path bug. Running a shell script that's placed somewhere
|
|
in your PATH from 'make' failed, unless the filename of the script was
|
|
absolute.
|
|
|
|
Added vfork_setup_child to libc.a. This is a wrapper intended to make life
|
|
just a little bit easier for those who need to use the vfork2()/vfork_resume()
|
|
trick. It replaces the old 'ix_resident()/ix_get_vars2()' pair.
|
|
|
|
Fixed more problems with the routines that start a shell script. This time
|
|
problems with symbolic links have been fixed.
|
|
|
|
Fixed problems when parsing a pathname of a shell script, preventing the
|
|
execution of that script.
|
|
|
|
Replaced the stdio-sources by the NetBSD 44.0 versions, which incidentally
|
|
fixed the broken fgetpos function. This change also adds printf() and scanf()
|
|
support for the 'long long' datatype.
|
|
|
|
Added support for the O_CASE open() flag: this will open an existing file
|
|
only if the filenames match using a case-sensitive comparison.
|
|
|
|
fstat() didn't compensate the file time for the current timezone offset.
|
|
|
|
Ixemul now supports the 68010 CPU. Thanks to Pascal Eeftinck for pointing
|
|
out that the 68010 uses a 68020-like stackframe.
|
|
|
|
Build the version.[ch] files in the build directory instead of in the
|
|
source directory.
|
|
|
|
Fixed fchdir().
|
|
|
|
Changed the machine name as returned by uname() to "m68k". Thanks to Lars
|
|
Hecking for this.
|
|
|
|
O_ASYNC I/O is now partially supported: select() will test for this
|
|
situation.
|
|
|
|
/dev/tty is now translated to console:.
|
|
|
|
Implemented pseudo-terminals support using the FIFO device.
|
|
|
|
Many, mostly small, changes to become more NetBSD compatible. Where
|
|
possible, I've replaced the old sources with the NetBSD 1.1 sources.
|
|
|
|
The select() function has been improved: it is now much faster and works
|
|
much better.
|
|
|
|
Using F_SETFL with fcntl() failed if the file wasn't a regular file. It now
|
|
also works for pipes and sockets.
|
|
|
|
Requesters that are from ixemul.library or ixnet.library now have the name
|
|
of the library as their title, so that you can see that they are from the
|
|
library, and not from the application. Thanks to Udo Schnurpfeil for
|
|
suggesting this.
|
|
|
|
The tty database functions unfortunately slipped through and weren't
|
|
included with 43.1. They are back in 44.0.
|
|
|
|
Implemented mmap() and friends. Of course, any mmap feature that actually
|
|
requires a MMU will return an error. But if mmap() is used to load a file
|
|
into memory, then it works fine.
|
|
|
|
============
|
|
VERSION 43.2
|
|
============
|
|
|
|
Applied patch from Kamil Iskra to improve ixemul stack extension
|
|
handling.
|
|
|
|
============
|
|
VERSION 43.1
|
|
============
|
|
|
|
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 AmigaOS 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.
|
|
|
|
============
|
|
VERSION 43.0
|
|
============
|
|
|
|
Integrated Jeff Shepherd's networking code. If ixnet.library 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. That library 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. Thanks, Jeff!
|
|
|
|
Added stackchecking and extension code, thanks to Matthias Fleischer.
|
|
|
|
Finalized GDB support.
|
|
|
|
============
|
|
VERSION 42.1
|
|
============
|
|
|
|
Fixed bugs when running non-ixemul programs from tools like pdksh or make.
|
|
You could get Enforcer hits and the Ctrl-C support also crashed the Amiga.
|
|
|
|
Use the NetBSD code for the system() function instead of using the Amiga
|
|
kernel function SystemTagList. This was the cause of several
|
|
incompatibilities when porting Unix programs.
|
|
|
|
Improved termios support (added OPORT and ONLCR flags and the INLCR flag).
|
|
|
|
Fixed ptrace handling. Almost none of Leonard's code has survived, I used a
|
|
completely different method.
|
|
|
|
Fixed a problem where the name of the current directory, as is visible
|
|
by the shell, wasn't changed when a program terminated and ixemul reset the
|
|
current directory to its original place.
|
|
|
|
Improved performance somewhat by no longer going through address 4 to get
|
|
to the ExecBase structure. Instead, it's copied once to the SysBase
|
|
variable, and thereafter only that variable is used. The Enforcer manual
|
|
warned against accessing address 4 too often, and ixemul.library did that
|
|
a lot.
|
|
|
|
Also improved performance by fixing a busy wait. At one point in the
|
|
ixemul, the program cannot continue until a context switch has taken place.
|
|
So ixemul waits until the dispatch count of ExecBase has changed,
|
|
indicating that a context switch has taken place. By installing a small,
|
|
high priority (9) task with body "for (;;) Wait(1 << 31);" and signalling
|
|
that task whenever a context switch is needed, I was able to circumvent the
|
|
busy wait loop. Because of the high priority of the Task, a context switch
|
|
would take place immediately. The task itself goes back to sleep at once,
|
|
so there is no time lost there.
|
|
|
|
============
|
|
VERSION 42.0
|
|
============
|
|
|
|
Installed patch in arith.c to work around bug in IEEEDPCmp. If the first
|
|
32 bits of both doubles are equal, and both doubles are negative, then
|
|
the result can no longer be trusted. Discovered by Bart Van Assche.
|
|
|
|
Ixtrace has been updated to recognize all 42.0 syscalls, thanks to David
|
|
Zaroski.
|
|
|
|
Ctrl-C handling worked with KingCON, but not with the standard AmigaOS
|
|
CON-handler (since I use KingCON I never noticed this until it was pointed
|
|
out to me by Fred Fish :-). This has now been fixed. See the comments in
|
|
library/__read.c for more information.
|
|
|
|
Added the uname() function, written by Lars Hecking.
|
|
|
|
The termios code now properly recognizes the ICRNL input flag for '\r' to
|
|
'\n' translation.
|
|
|
|
Fixed a bug in the fcntl() function (actually, in the fcntl.h and
|
|
sys/fcntl.h headers).
|
|
|
|
Moved several static variables to user.h, so they are now process-specific.
|
|
|
|
Added profiling support. It was always there, but it was never actually
|
|
used.
|
|
|
|
The write() function writes its buffer line-by-line instead of in one big
|
|
chunk if the filehandle is the handle of an interactive stream (for
|
|
example, a console window). This allows the user to interrupt the output by
|
|
pressing a key and it also allows the use of Ctrl-C to break the program.
|
|
In previous versions you were unable to stop the output if you forgot to
|
|
redirect it to a file. E.g., 'cat /libs/ixemul.library' would essentially
|
|
take over the computer.
|
|
|
|
Changed default stack size handling when a new process is launched. It is
|
|
either the value of the environment variable IXSTACK, or it inherits the
|
|
size from its parent, but if that size is less than 16384, it uses a stack
|
|
of 16384 bytes instead.
|
|
|
|
Replaced ixconfig by ixprefs (written by Kriton Kyrimis).
|
|
|
|
Integrated the partial ptrace support from Leonard Norrgard.
|
|
|
|
Removed the gnulib, gnulib-68881 and gnulib-soft-float directories.
|
|
|
|
Compiled with -Wall and fixed (nearly) all warnings. Some warnings are
|
|
inevitable and cannot be avoided. -Wall already caught one illegal memory
|
|
access bug in __Close()!
|
|
|
|
Added functions to set and get ixemulbase-private information. This will
|
|
break older ixconfig's but is much cleaner. Nearly all of the ixemulbase
|
|
structure is now off-limits and liable to change without notice! You are
|
|
warned! In fact, the structure has been changed already. The library will
|
|
complain if a program called 'ixconfig' tries to use it to prevent the user
|
|
from using an old ixconfig with the new library.
|
|
|
|
Removed several arithmetic functions dealing with 'long long' types. They
|
|
didn't belong in the library, link with libgcc.a instead. Also removed some
|
|
arithmetic functions that are never called because they are compiled
|
|
directly in 68000 assembly. Don't know why they were ever added.
|
|
|
|
Fixed gen_glue.c so that it no longer generates glue for obsolete functions.
|
|
|
|
Removed ssystem(). ssystem() was the precursor of vfork/execve, and is no
|
|
longer needed. NOTE: it is still used in gcc. But this fails spectacularly
|
|
once you use Ctrl-C! Delete gcc and replace it by gccv, this one uses
|
|
vfork/execve as it should and works perfectly.
|
|
|
|
ixemul.library now uses the new-style inlines.
|
|
|
|
qsort() is now re-entrant and no longer uses the horrible Semaphore hack.
|
|
|
|
Moved general/fts.c to the static library. These directory-tree traversal
|
|
functions are rarely, if ever used, so they belong in libc.a and not in a
|
|
shared library.
|
|
|
|
Reorganized the Makefiles. The makefiles now use several GNU make-only
|
|
features to make them smaller and easier to maintain. 'make clean' and
|
|
'make clobber' now work correctly. It is also no longer nessecary to add
|
|
the -srcdir option to 'sh configure' in order to create valid Makefiles.
|
|
|
|
The top level Makefile contains the line 'export CATENATE = 1'. If this
|
|
line is present, the compilation speed is greatly improved by catenating
|
|
several small C-sources together into one bigger C-source, and then the
|
|
bigger one is compiled. By commenting this line each separate source is
|
|
compiled. Note that besides improving compilation speed, the library also
|
|
gets smaller as the compiler can now determine whether a call can be made
|
|
relative or should remain absolute.
|
|
|
|
Fixed a symlink-bug (ln -s /ram/t created a symlink to /am/t, removing the
|
|
first character of the volumename).
|
|
|
|
Moved ixtrace to the new utils directory, together with the small ixrun
|
|
utility. ixrun can be used to run Amiga batch files from /bin/sh (just put
|
|
';!ixrun' at the second line (!) of the batch file). Also added manual
|
|
page for ixrun.
|
|
|
|
Cleaned up the static directory: removed xmalloc.c and alloca.c as they do
|
|
not belong in the standard C library. Also replaced the ctime.c source by
|
|
the version from elsie.nci.nih.gov, which is the official version used by
|
|
NetBSD and Linux, among others. Finally, errlst.c and siglist.c now just
|
|
include their counterparts in the general directory.
|
|
|
|
The version information is placed in the version.in file in the
|
|
top-level directory. The version.c and version.h sources are created from
|
|
this file.
|
|
|
|
The print_base_size.c and print_user.c sources have been replaced by
|
|
create_header.c, which creates a header containing a few defines that are
|
|
used by start.s and trap.s. These used to be hard-coded, but now they are
|
|
generated, preventing future mistakes.
|
|
|
|
Added the raise function. For some reason, raise.c was never compiled into
|
|
the library. It is now.
|
|
|
|
Removed ALL sources that were not needed for compilation.
|
|
|
|
Added timezone handling. The timezone databases from elsie.nci.nih.gov are
|
|
used and installed in etc:zoneinfo. The new ixtimezone utility should be
|
|
added to the startup-sequence. This utility determines the correct offset
|
|
for Greenwich Mean Time. Read the manual page (Yes! Documentation at last!)
|
|
for more information.
|
|
|
|
Merged the ixpipe-handler into the ixemul-distribution. It has been placed
|
|
in the utils-directory.
|
|
|
|
Added hack to allow ixemul to run AmigaOS scripts without breaking them
|
|
when run from the AmigaOS shell. The problem is that the ".KEY" string
|
|
must be at the first line of the script, while ixemul also looks for "#!"
|
|
and ";!" in the first line. If a file starts with ".KEY", ixemul will now
|
|
skip the first line, before checking for "#!" and ";!".
|
|
|
|
============
|
|
VERSION 41.4
|
|
============
|
|
|
|
Integrated patches from Hans Verkuil that fix CTRL-C handling, fix another
|
|
signal bug, fix problem with "rm -f", prepare for proper timezone handling,
|
|
and remove '@' hack in argument parsing.
|
|
|
|
Applied patch from Kamil Iskra to avoid incompatibility between ixemul
|
|
and the popular KingCON 1.3. This is KingCON's fault because it makes
|
|
invalid assumptions about the nature of reply port contained in "dp_Port"
|
|
of packets sent to it. Also applied patch (duplicated in Hans' patches)
|
|
to crt0.c that fixes bug where the revision requester was not working
|
|
properly if the current revision is 0.
|
|
|
|
Applied patch from Rask Lambertsen (duplicated in Hans' patches) that makes
|
|
ixemul.library open "CONSOLE:" instead of "*".
|
|
|
|
Added implementation from Kriton Kyrimis for srand48, seed48, lcong48,
|
|
lrand48, nrand48, mrand48, jrand48, drand48, and erand48.
|
|
|
|
Added "#include <sys/types.h>" to <dirent.h> to be more compatible
|
|
with most current systems that do this inclusion for you. This change
|
|
should be backwards compatible with code that does the inclusion
|
|
explicitly. Suggested by Lars Hecking.
|
|
|
|
Changed prototype in <unistd.h> for getpgrp() to take a pid_t argument,
|
|
which matches the implementation in library/getcrap.c. Suggested by
|
|
Lars Hecking.
|
|
|
|
Made change to <math-68881.h> in pow() so that if x<0 the code does
|
|
log(-x) rather than log(x). Suggested by Thomas Radtke and implemented
|
|
by Lars Hecking.
|
|
|
|
Disable definitions of F_GETLK, F_SETLK, F_SETLKW, F_RDLCK, F_UNLCK, and
|
|
F_WRLCK in <fcntl.h> since they are unimplemented and thus might have misled
|
|
autoconfiguration schemes into thinking they were available. Also fix
|
|
ixtrace.c so it will still compile without these defined. Suggested by
|
|
Robert Ramiega.
|
|
|
|
Integrated patch from Joop van de Wege (duplicated in Hans' patches) for
|
|
setting up fpu on 68060.
|
|
|
|
============
|
|
VERSION 41.3
|
|
============
|
|
|
|
Updated DBL_MIN and DBL_MAX in float.h to include one additional digit
|
|
of precision. Enclose negative constants in parens to avoid unexpected
|
|
conversion to subtraction via cpp macros.
|
|
|
|
Applied patch from Hans Verkuil to fix serious bug in signal handling,
|
|
to reset all signal handlers after an execve, except for those which are
|
|
being ignored (SIG_IGN).
|
|
|
|
Applied patch from Joop van de Wege to trap.s to set 68881 rounding mode
|
|
back to truncation instead of "round to nearest", as required by the
|
|
ANSI C standard which specifies truncation.
|
|
|
|
Integrated ixtrace into source tree and arranged for it to be built and
|
|
installed.
|
|
|
|
============
|
|
VERSION 41.2
|
|
============
|
|
|
|
Added "#include <sys/types.h>" to <sys/stat.h> to be more compatible
|
|
with most current systems that do this inclusion for you. This change
|
|
should be backwards compatible with code that does the inclusion
|
|
explicitly.
|
|
|
|
Changed version string to be style guide compliant. Also arranged that
|
|
version.o gets linked in, since it has the $VER: string and is otherwise
|
|
unreferenced by any ixemul.library code.
|
|
|
|
Merged patches from Hans Verkuil to fix execve environment passing,
|
|
always open the console for stderr if no other file handle is provided,
|
|
move AmigaOS style filename matching into glob(), and fix a small problem
|
|
with "open(NULL,...) that caused enforcer hits.
|
|
|
|
============
|
|
VERSION 41.1
|
|
============
|
|
|
|
A 68040 version of the library with soft floating point is now built,
|
|
since there are apparently systems that use the versions of the 68040
|
|
without FPUs.
|
|
|
|
Fixed crt0 files to use "jra _ENTRY" as first instruction rather than
|
|
"jmp pc@(_ENTRY)" which was getting assembled by gas 2.5.2 as a 68020+
|
|
instruction. Note "jmp pc@(_ENTRY:W)" seems to generate the 68000
|
|
instruction but a bad jump offset. Added corresponding change to
|
|
execve.c to recognize ixemul using executables with this change.
|
|
|
|
Fixed cpu.h, machdep.c, trap.s to avoid pc relative assembly instruction
|
|
that was getting compiled as 68020+ instruction and causing crashes on
|
|
68000 machines.
|
|
|
|
Fixed numerous files that did "#include" of "DEFS.H" rather than "defs.h".
|
|
This is an innocuous bug on the Amiga, which is case independent, but
|
|
it kills cross compilations.
|
|
|
|
============
|
|
VERSION 41.0
|
|
============
|
|
|
|
No significant changes since the 40.6 beta release other than the
|
|
mechanism (and macros) for building debug versions has been cleaned
|
|
up and the version number has been bumped to 41.0.
|
|
|
|
Did include the cat'able man pages back in the source tree, but no
|
|
work has been done yet to track down the sources for the man pages
|
|
and arrange for them to be properly integrated into the tree and
|
|
have the cat'able versions generated from those sources.
|
|
|
|
============
|
|
VERSION 40.6
|
|
============
|
|
|
|
Many bugs have been fixed since the 40.4 release, including a serious
|
|
one that was causing memory corruption and many enforcer or mungwall
|
|
hits.
|
|
|
|
Network support has been reintegrated into the library, however it is
|
|
still mostly untested. In particular, many functions are only
|
|
available for static linking from the libnet.a library. By the next
|
|
release, it is expected that libnet.a will be incorporated in libc.a.
|
|
|
|
Work is underway to merge the best features from at least two
|
|
different strains of the ixemul library. Many more changes are
|
|
expected by the 41.0 release.
|
|
|
|
An environment variable called "IXSTACK" is now used to control the
|
|
stack size of programs started by system(). If the current stack is
|
|
smaller than the value in IXSTACK, the stack is raised to the value
|
|
specified in IXSTACK. So IXSTACK is a minimum value.
|
|
|
|
Automatic stack checking, with a requestor if the stack overflows, is
|
|
available for executables compiled with a version of gcc that supports
|
|
the -mstackcheck option. This also requires linking with new crt0 and
|
|
libc.a.
|
|
|
|
Automatic stack extension as necessary is available for executables
|
|
compiled with a version of gcc that supports the -mstackextend option.
|
|
This also requires linking with new crt0 and libc.a.
|