home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 August - Disc 3 / chip_20018103_hu.iso / amiga / chiputil / gg / ixemul-cross.rea < prev    next >
Text File  |  2001-06-19  |  35KB  |  895 lines

  1. Short:   Cross compiler version of IXEmul v48.2
  2.  
  3. ============
  4. VERSION 48.2
  5. ============
  6.  
  7. Removed all pOS code and references.
  8.  
  9. Fixed error reporting in __extend_file().
  10.  
  11. Fixed potential problem of reading from freed memory, and enforcer hits
  12. caused from running non-ixemul programs under ixemul control (ie. make).
  13. Patches supplied by Emmanuel Lesueur.
  14.  
  15. ============
  16. VERSION 48.1
  17. ============
  18.  
  19. Interim release.
  20.  
  21. ============
  22. VERSION 48.0
  23. ============
  24.  
  25. Fixed a bug in ftruncate reported by Niels Froehling (incorrect
  26. interpretation of the SetFileSize return value).
  27.  
  28. Fixed a malloc bug (it no longer accepts sizes < 0).
  29.  
  30. Added a few things for Holger Jakob's ppc ixemul support.
  31.  
  32. p.OS is no longer supported. While 99% of the code is still there
  33. it is no longer compiled, nor supported. Binaries compiled for
  34. ixemul 48.0 will no longer work under a p.OS system, nor do you
  35. need the p.OS headers anymore to compile ixemul.library.
  36.  
  37. ============
  38. VERSION 47.3
  39. ============
  40.  
  41. Fixed a bug in getUserPasswd where certain strings weren't properly
  42. 0-terminated.
  43.  
  44. Fixed a bug in setpriority and getpriority: these functions always failed
  45. due to an wrong test.
  46.  
  47. Fixed a bug in ctype.h: all macros (e.g. isspace and friends) failed to
  48. work properly with character code >= 128. Now cast everything to unsigned
  49. char first.
  50.  
  51. Applied patch from David Zaroski to uname.c. Improved OS version number
  52. reporting.
  53.  
  54. ============
  55. VERSION 47.2
  56. ============
  57.  
  58. Fixed a bug in handling of "/". Thanks to Norbert Pueschel for providing me
  59. with a fix.
  60.  
  61. Updated ixprefs from Kriton Kyrimis.
  62.  
  63. Fixed problems with vfork() and sockets when the program was started from
  64. inetd.
  65.  
  66. ============
  67. VERSION 47.1
  68. ============
  69.  
  70. Fixed ixtrace bug that made it impossible to set the stacksize.
  71.  
  72. Fixed bug in crt0.c which caused a crash under p.OS.
  73.  
  74. ============
  75. VERSION 47.0
  76. ============
  77.  
  78. It was possible to kill a process with a SIGKILL signal when that process
  79. was already in the exit() function: this can cause major crashes.
  80.  
  81. Fixed more bugs in wait4(): the list of child processes could contain
  82. processes whose 'getuser()' pointer was NULL, causing enforcer hits and
  83. general mayhem.
  84.  
  85. Signalling processes that were asleep waiting for some event would not wake
  86. these processes.
  87.  
  88. Fixed a bug in wait4: if there are no longer any childs available that
  89. meet the criteria of wait4, then wait4 should exit. In previous versions
  90. this test was only done for the zombie processes, and not for all other
  91. childs.
  92.  
  93. Updated timezone sources and databases.
  94.  
  95. Kriton Kyrimis supplied patches to port ixprefs to p.OS.
  96.  
  97. David Zaroski supplied patches to upgrade ixtrace to this ixemul version.
  98.  
  99. vfork() will now copy any open sockets to the child, previously the
  100. sockets inherited by the child from the parent were always invalid.
  101.  
  102. Added Unix Sys V semaphore and message support (sem* and msg* functions).
  103.  
  104. Added low-level mutex (semaphore) functions: ix_mutex_lock(),
  105. ix_mutex_attempt_lock() and ix_mutex_unlock(). These functions are
  106. wrappers for the AmigaOS or p.OS kernel semaphore functions. See ix.h for
  107. more info.
  108.  
  109. Fixed several nasty bugs in the shm support code.
  110.  
  111. Added a new checkbox to ixprefs: Enable MuFS support. By default the
  112. support for the Multi-user File System is turned off. One reason for adding
  113. this checkbox is that apparently the MuFS support isn't bug-free.
  114.  
  115. ade -> gg
  116.  
  117. Added workaround for AFS bug with symlink("", "").
  118.  
  119. The resolv.conf keyword scan is now case-insensitive: the AmiTCP
  120. resolv.conf file is uppercase, while NetBSD assumes lowercase.
  121.  
  122. Applied patches from Norbert Pueschel fixing argv[0] when starting a
  123. script: it was the name of the scripts, now it is the name of the
  124. interpreter. This conforms to NetBSD and fixes problems with dld.
  125.  
  126. ttyname() in libc.a now always returns "/dev/tty" if the device is a tty
  127. and NULL otherwise.
  128.  
  129. "#!shell arg" handling has been changed to be consistent with NetBSD: all
  130. arguments after the shell name are now passed as the first argument to the
  131. shell.
  132.  
  133. munmap() now calls msync().
  134.  
  135. Ixemul now fully supports pOS.
  136.  
  137. chown() will succeed if the device doesn't support this action instead of
  138. reporting an error.
  139.  
  140. The -enforcer flag of gdb now also supports the 68060.
  141.  
  142. Improved getppid and added hstrerror thanks to Norbert Pueschel.
  143.  
  144. Added ix_obtain_socket and ix_release_socket thanks to Jeff Shepherd.
  145. Added __flush_cache for gcc trampoline handling.
  146. Added ix_flush_insn_cache, ix_flush_caches and ix_flush_data_cache for OS
  147. independent cache flushing.
  148. Added ix_get_first_segment and ix_get_next_segment.
  149. Added ix_select.
  150. Added isascii, isiso, toascii and toiso.
  151. Added ix_get_long, ix_set_long.
  152.  
  153. Removed aselect.
  154. Removed CreatePort, CreateExtIO, CreateStdIO, CreateTask.
  155. Removed DeletePort, DeleteExtIO, DeleteStdIO, DeleteTask.
  156. Removed ix_get_vars.
  157. Removed _wb_parse, _cli_parse and _main.
  158.  
  159. Renamed achmod to ix_chmod.
  160. Renamed ix_get_vars2 to ix_get_vars.
  161. Renamed vfork2 to ix_vfork.
  162. Renamed vfork_resume to ix_vfork_resume.
  163. Renamed __amiga_filehandle to ix_filehandle.
  164. Renamed tracecntl to ix_tracecntl.
  165. Renamed ix_amiga.h to ix.h.
  166.  
  167. ============
  168. VERSION 46.1
  169. ============
  170.  
  171. Renamed __os to ix_os as a preparation for ixemul-47.0. Also renamed
  172. expand_cmd_line to ix_expand_cmd_line and default_wb_window to
  173. ix_default_wb_window.
  174.  
  175. ============
  176. VERSION 46.0
  177. ============
  178.  
  179. Copied basic pOS support from ixemul-47.0 especially for GeekGadgets 2. The
  180. ixemul.library does *not* support pOS, you have to use ixemul-47.0 for
  181. that, but all programs compiled with the new libc.a and *crt0.o will also
  182. run on pOS using ixemul-47.0. Unless Amiga kernel functions are used, of
  183. course. See README.pOS for more information.
  184.  
  185. Added ipcs and ipcrm to manage the shm functionality.
  186.  
  187. Upgraded db to version 1.85.
  188.  
  189. Added an ixprefs option to show the stack usage of all the programs that
  190. use ixemul.library.
  191.  
  192. chmod() now also checks if someone else has the same file open, and makes
  193. sure that when that file is closed the same mode flags are written instead
  194. of the flags specified when the file was opened.
  195.  
  196. Added shared memory support (shmget, shmat, shmdt and shmctl) and the ftok
  197. function.
  198.  
  199. Fixed a bug in memccpy (the wrong pointer was returned).
  200.  
  201. Added a patch from Marc Espie to correctly setup the program name and
  202. directory in the CLI structure so that GetProgramName and GetProgramDir do
  203. the right thing.
  204.  
  205. ============
  206. VERSION 45.1
  207. ============
  208.  
  209. Fixed a bug in the Unix Domain socket code that would occasionally cause a
  210. client to wait indefinately for a connection to be granted, while in fact
  211. the server had already accepted the connection.
  212.  
  213. getdtablesize() now returns FD_SETSIZE instead of NOFILE (256 instead of
  214. 512). The result of this function was used by several X clients to discover
  215. the number of filehandles select() can test. And if that value is too large,
  216. you'll get unexpected and hard to find crashes. The same change was made to
  217. sysconf(_SC_OPEN_MAX).
  218.  
  219. shutdown() could close down the whole Unix domain socket, causing a
  220. crash when the socket was closed a second time by the 'real' close.
  221.  
  222. rename() now tests for a rename across devices and returns the correct
  223. error code.
  224.  
  225. Applied patch from Norbert Pueschel to improve delayed unlink.
  226.  
  227. Closing of Unix domain sockets is now atomic (between Forbid/Permit),
  228. otherwise the Amiga could crash if the X server was running at a higher
  229. priority than the client.
  230.  
  231. Fixed a bug in ixemul.trace that caused Enforcer hits in gcc.
  232.  
  233. Fixed a bug with 'du -ks /volume'. The convert_dir() function stored the
  234. directory name in Amiga format instead of Unix format.
  235.  
  236. Norbert Pueschel greatly improved uid/gid handling in ixemul.library. See
  237. the README for detailed information.
  238.  
  239. Fixed a bug in handling volumes/devices named "dev:". Ixemul handles the
  240. volume /dev specially (e.g., /dev/console is translated to console:) and
  241. that interfered with the handling of the DEV:  device or any volume named
  242. DEV:.  To circumvent the /dev handling you can now use "dev:" instead of
  243. "/dev" or write "DEV" instead of "dev" (in other words, the open() function
  244. tests for the string "/dev/" in a case-sensitive way).
  245.  
  246. Due to a clumsy design of the ENV: notification a signal was occasionally
  247. left unfreed. WShell gives warnings for that, so I changed the design and
  248. that should take care of the warning. The unfreed signal warning was
  249. harmless, but annoying.
  250.  
  251. Now fill the file type in the dirent struct. Thanks to Lars Hecking for
  252. reporting this.
  253.  
  254. Some AmigaOS programs started from an ixemul program set Signals that were
  255. allocated by ixemul. This can happen because ixemul resets the allocated
  256. signal mask in the Task structure.  Because of that a handshake between the
  257. child and the parent when the child process is dying failed, and Enforcer
  258. hits (usually followed by a crash) were the result.  Fixed by resetting all
  259. Signals.
  260.  
  261. Fixed a bug in the trap.s supervisor() code: you cannot safely pass data on
  262. the stack to the function to be executed in supervisor mode. In fact, this
  263. failed with a beta version of the 68060.library from Phase 5. Now pass the
  264. data through registers.
  265.  
  266. Fixed bug in frexp(0.0, &i) where i was set to 1 instead of 0.
  267.  
  268. Fixed 32 Kb memory leak.
  269.  
  270. Added tty CRMOD support.
  271.  
  272. Fixed serious bug in unix domain sockets where a kind of deadlock situation
  273. could occur.
  274.  
  275. system() now searches the whole path for 'sh' and doesn't use /bin/sh only.
  276. Also the paths in paths.h have been adjusted for Geek Gadgets.  Thanks to
  277. Robert Davis for pointing out the system() problem.
  278.  
  279. select() on a small file that was stored in memory if the user selected a
  280. non-zero Membuf size in ixprefs didn't produce the expected results. Thanks
  281. to Stefan Grosse Pawig for reporting this.
  282.  
  283. ============
  284. VERSION 45.0
  285. ============
  286.  
  287. Moved popen() and pclose() into ixemul.library from libc.a. These functions
  288. are used regularly by libraries, and having them in ixemul.library makes
  289. the conversion of those static libraries into shared libraries easier.
  290. Besides, these functions are used frequently enough to warrant their
  291. integration into ixemul.library.
  292.  
  293. Added a patch from Kamil Iskra that fixes problems with -mstackextend and
  294. vfork2(). However, such programs *must* call vfork_setup_child().
  295.  
  296. Thanks to Lars Hecking, a new fnmatch(3) with extended functionality is
  297. available. The fnmatch code is copied from the NetBSD sources.
  298.  
  299. Added new manual pages.
  300.  
  301. Upgraded ixemul to the new structure passing scheme of gcc (A1 contains a
  302. pointer to the return structure). This involved ldiv(), div() and
  303. inet_makeaddr(). Thanks to Kamil Iskra for providing me with patches to
  304. implement this.
  305.  
  306. Upgraded the timezone stuff to the latest version.
  307.  
  308. Implemented Unix Domain sockets. Missing features: datagrams aren't
  309. (yet?) supported, and connect() doesn't have a timeout.
  310.  
  311. Removed stack watcher code. It was seldom used, and it was never very
  312. reliable.
  313.  
  314. Implemented sessions. This improves Ctrl-C handling, and is required to
  315. make full use of xterm.
  316.  
  317. Fixed an unlink bug (it has to check all open files for the given filename)
  318. and a bug in ix_lock_base/ix_unlock_base: if these calls were nested, the
  319. signal masked was restored to ~0 instead of the original value.
  320.  
  321. Added a new utility, ixstack, and a new global variable, __stack, to allow
  322. the user and programmer to specify a minimum stacksize. If the current
  323. stack is too small, a new stack is automatically allocated. Thanks to Kamil
  324. Iskra for implementing this.
  325.  
  326. ioctl(fd, TIOCGPGRP, ...) now returns something useful. NcFtp didn't show
  327. the progress bar anymore because of this.
  328.  
  329. Added large-baserel libraries and startup-code.
  330.  
  331. ============
  332. VERSION 44.0
  333. ============
  334.  
  335. Kriton Kyrimis updated ixprefs.
  336.  
  337. David Zaroski updated ixtrace.
  338.  
  339. Fixed link count for directories. Thanks to Norbert Pueschel.
  340.  
  341. umask implemented for for open() and mkdir(). Thanks to Norbert Pueschel.
  342.  
  343. Added muFIBB_SET_GID, which will be implemented in the next version
  344. of MultiUser. The old way of handling setgid was confusing and even
  345. potentially dangerous.  Thanks to Norbert Pueschel.
  346.  
  347. Added the translation unix sticky bit -> AmigaOS h bit. This one is
  348. more for aestaethical reasons, as the h bit is no longer supported in 3.x.
  349. Thanks to Norbert Pueschel.
  350.  
  351. Added a field 'void *u_user;' near the beginning of the user struct which
  352. everybody is free to (ab)use. It can be handy to store task private data
  353. in the user struct, at least, I had to use it recently.
  354.  
  355. Added an ix_amiga.h header, which will contain all amiga specific functions
  356. and macros in ixemul.library and libc.a, together with a description.
  357.  
  358. Profiling has been enhanced. Ixprefs adds a new profiling preference:
  359. either take samples only while your program is running and the PC is within
  360. your program, or take samples while your program is running and if the PC
  361. is outside your program code (e.g. in ixemul or in intuition.library), use
  362. the last function your program entered before calling ixemul or whatever,
  363. or always take samples, even if other programs are running.  Again, the
  364. last recorded function gets the hit in those cases.
  365.  
  366. An array of 100 longs to store the A4 register of shared libraries has been
  367. added to the user struct. This array can be easily increased in future
  368. releases, should the need arise. The first 20 slots are for your own free
  369. use, the other slots should be registered. See the file REGISTRY in the
  370. ixemul source distribution for more details.
  371.  
  372. Fixed yet another path bug. Running a shell script that's placed somewhere
  373. in your PATH from 'make' failed, unless the filename of the script was
  374. absolute.
  375.  
  376. Added vfork_setup_child to libc.a. This is a wrapper intended to make life
  377. just a little bit easier for those who need to use the vfork2()/vfork_resume()
  378. trick. It replaces the old 'ix_resident()/ix_get_vars2()' pair.
  379.  
  380. Fixed more problems with the routines that start a shell script. This time
  381. problems with symbolic links have been fixed.
  382.  
  383. Fixed problems when parsing a pathname of a shell script, preventing the
  384. execution of that script.
  385.  
  386. Replaced the stdio-sources by the NetBSD 44.0 versions, which incidentally
  387. fixed the broken fgetpos function. This change also adds printf() and scanf()
  388. support for the 'long long' datatype.
  389.  
  390. Added support for the O_CASE open() flag: this will open an existing file
  391. only if the filenames match using a case-sensitive comparison.
  392.  
  393. fstat() didn't compensate the file time for the current timezone offset.
  394.  
  395. Ixemul now supports the 68010 CPU. Thanks to Pascal Eeftinck for pointing
  396. out that the 68010 uses a 68020-like stackframe.
  397.  
  398. Build the version.[ch] files in the build directory instead of in the
  399. source directory.
  400.  
  401. Fixed fchdir().
  402.  
  403. Changed the machine name as returned by uname() to "m68k". Thanks to Lars
  404. Hecking for this.
  405.  
  406. O_ASYNC I/O is now partially supported: select() will test for this
  407. situation.
  408.  
  409. /dev/tty is now translated to console:.
  410.  
  411. Implemented pseudo-terminals support using the FIFO device.
  412.  
  413. Many, mostly small, changes to become more NetBSD compatible. Where
  414. possible, I've replaced the old sources with the NetBSD 1.1 sources.
  415.  
  416. The select() function has been improved: it is now much faster and works
  417. much better.
  418.  
  419. Using F_SETFL with fcntl() failed if the file wasn't a regular file. It now
  420. also works for pipes and sockets.
  421.  
  422. Requesters that are from ixemul.library or ixnet.library now have the name
  423. of the library as their title, so that you can see that they are from the
  424. library, and not from the application. Thanks to Udo Schnurpfeil for
  425. suggesting this.
  426.  
  427. The tty database functions unfortunately slipped through and weren't
  428. included with 43.1. They are back in 44.0.
  429.  
  430. Implemented mmap() and friends. Of course, any mmap feature that actually
  431. requires a MMU will return an error. But if mmap() is used to load a file
  432. into memory, then it works fine.
  433.  
  434. ============
  435. VERSION 43.2
  436. ============
  437.  
  438. Applied patch from Kamil Iskra to improve ixemul stack extension
  439. handling.
  440.  
  441. ============
  442. VERSION 43.1
  443. ============
  444.  
  445. Ixemul no longer uses async writes. All I/O is now synchronous. This
  446. allowed me to remove several Disable()/Enable() pairs, and actually made
  447. ixemul faster. Apparently the overhead in handling async I/O was
  448. substantial.
  449.  
  450. Applied patches from Jeff Shepherd fixing various problems in the
  451. ixnet.library. Among them improved AS225 passwd handling.
  452.  
  453. Moved the resolver functions out of ixnet.library into libc.a. All programs
  454. that used these functions will have to be recompiled. Very few programs use
  455. these functions, and since they are really higher level functions and do
  456. not belong in a low level library like ixnet, I've moved them.
  457.  
  458. Also moved tty database functions (getttyent() and friends, ttyname() and
  459. ttyslot()) to libc.a, for much the same reason.
  460.  
  461. Added the NetBSD DB sources to libc.a and removed the hacked versions from
  462. ixnet.
  463.  
  464. Replaced various headers with the NetBSD versions. Important for certain
  465. socket-related ioctl defines that were incorrect in the old headers.
  466.  
  467. Added ptrace(GETA4, pid, 0, 0) to obtain the value of the a4 register if
  468. this executable was compiled with -fbaserel or -resident. Needed by gdb to
  469. find out where the data section is.
  470.  
  471. Added ptrace(GETEXENAME, pid, 0, 0) to obtain the name of the current
  472. executable. Useful in scripts that start with '#!/bin/sh' or something
  473. similar. 'argv[0]' as seen by sh is the name of the script, but if you want
  474. to get the pathname of 'sh' itself, you can use this ptrace call.
  475.  
  476. Added setlocale() and ctermid() to libc.a.
  477.  
  478. It is now possible to unlink() a file that is owned by another process
  479. (just like Unix). Gcc uses this to remove temporary files that are actually
  480. owned by cpp (or as). Of course, on the Amiga this is implemented as a
  481. delayed delete, i.e. a flag is set in the 'struct file' to tell ixemul to
  482. delete the file when it is closed by the owner process.
  483.  
  484. Added support for a root ('/') directory. This will only work for programs
  485. that use ixemul.library. So if you start pdksh, 'cd' to the root (cd /) and
  486. use the AmigaOS command 'list' to view this directory, then you won't get
  487. what you expect. If you use the Unix ls command however, then you will see
  488. all the volumes that you have as top level directories.
  489.  
  490. Removed an old hack in __wait_packet.c that interfered with Ctrl-F
  491. handling.
  492.  
  493. Fixed a bug in fnctl(), F_SETFL.
  494.  
  495. Added AFS, AFSFloppy and PFS support.  Many thanks to the AFS author,
  496. Michiel Pelt, who provided me with the necessary technical information, and
  497. to Kriton Kyrimis for giving some very useful suggestions.
  498.  
  499. Added MultiUserFileSystem support, contributed by Mike Krings. Thanks Mike!
  500.  
  501. Added new function ix_warning: similar to ix_panic, but allows the user to
  502. choose between "Continue" and "Abort". This to work around a case like:
  503.  
  504.     for (;;) crypt();
  505.  
  506. where one couldn't break out of the program because the requester kept
  507. popping up.
  508.  
  509. Fixed -mstackcheck support and fixed buggy baserel-stackextend support.
  510.  
  511. The call socket(AF_UNIX, SOCK_STREAM, 0) no longer crashes if ixnet.library
  512. is not installed.
  513.  
  514. Reorganized Makefiles. I've removed the option to compile each source
  515. separately, instead they are always catenated together. Also, 'make' no
  516. longer starts itself two more times in order to make the library. I've
  517. used GNU make wizardry to let 'make' figure out all the targets by itself.
  518.  
  519. Sigsetjmp and siglongjmp were broken. Fixed.
  520.  
  521. Replaced the old man pages with the new NetBSD manual pages in the original
  522. troff form.
  523.  
  524. Replaced the nice() stub in ix_stub with nice.c from NetBSD.
  525.  
  526. Removed a Delay(100) that was called just before a vfork()ed program finally
  527. terminated.
  528.  
  529. Made h_errno a global variable like errno.
  530.  
  531. At several places in the library the errno variable was reset to 0.
  532. However, the library should (almost) never set errno to 0. This caused
  533. problems with the 'ping' program, where recvfrom set errno to 4, but the
  534. library changed it back to 0 before 'ping' got to see it.
  535.  
  536. Now sets st_uid and st_gid from a 'stat' structure to the effective UID and
  537. GID. Some programs tested these fields and they failed when using
  538. networking support. These fields used to be 0.
  539.  
  540. Reread the global environment variables only when 1) a new program is
  541. started, and 2) the ENV: directory has been changed (i.e., a new setting
  542. was added to ENV:). ENV: used to be read every time a program was started,
  543. whether it was needed or not.
  544.  
  545. Given the shell script s.sh in /ram/t:
  546.  
  547.     #!/bin/sh
  548.     /bin/echo $0
  549.  
  550. 'sh /ram/t/s.sh' produced '/ram/t/s.sh', while typing '/ram/t/s.sh' from
  551. within the pdksh shell produced 'Ram:t/s.sh'. Fixed.
  552.  
  553. Removed a dubious CurrentDir() to a *file* instead of a directory.  While
  554. this is apparently supported for the standard AmigaOS filesystems, not all
  555. third-party filesystems supported this.
  556.  
  557. When you try to use a >68020 ixemul.library on a 68000 Amiga, you now get a
  558. decent message instead of a crash.
  559.  
  560. ============
  561. VERSION 43.0
  562. ============
  563.  
  564. Integrated Jeff Shepherd's networking code. If ixnet.library is installed,
  565. then ixemul.library will use the networking functions from the
  566. ixnet.library, instead of the default dummy implementation. Ixnet.library
  567. works with AS225 and with AmiTCP. It supports both clients and daemons.
  568. A program that uses networking functions is completely shielded from the
  569. AS225 and AmiTCP differences by ixnet.library. That library will take care
  570. of all the details for you. That means that there is no longer any need to
  571. provide two different binaries, one for AS225 and one for AmiTCP.
  572. Furthermore, it is relatively easy to add support for other network
  573. packages. Thanks, Jeff!
  574.  
  575. Added stackchecking and extension code, thanks to Matthias Fleischer.
  576.  
  577. Finalized GDB support.
  578.  
  579. ============
  580. VERSION 42.1
  581. ============
  582.  
  583. Fixed bugs when running non-ixemul programs from tools like pdksh or make.
  584. You could get Enforcer hits and the Ctrl-C support also crashed the Amiga.
  585.  
  586. Use the NetBSD code for the system() function instead of using the Amiga
  587. kernel function SystemTagList. This was the cause of several
  588. incompatibilities when porting Unix programs.
  589.  
  590. Improved termios support (added OPORT and ONLCR flags and the INLCR flag).
  591.  
  592. Fixed ptrace handling. Almost none of Leonard's code has survived, I used a
  593. completely different method.
  594.  
  595. Fixed a problem where the name of the current directory, as is visible
  596. by the shell, wasn't changed when a program terminated and ixemul reset the
  597. current directory to its original place.
  598.  
  599. Improved performance somewhat by no longer going through address 4 to get
  600. to the ExecBase structure. Instead, it's copied once to the SysBase
  601. variable, and thereafter only that variable is used. The Enforcer manual
  602. warned against accessing address 4 too often, and ixemul.library did that
  603. a lot.
  604.  
  605. Also improved performance by fixing a busy wait. At one point in the
  606. ixemul, the program cannot continue until a context switch has taken place.
  607. So ixemul waits until the dispatch count of ExecBase has changed,
  608. indicating that a context switch has taken place. By installing a small,
  609. high priority (9) task with body "for (;;) Wait(1 << 31);" and signalling
  610. that task whenever a context switch is needed, I was able to circumvent the
  611. busy wait loop. Because of the high priority of the Task, a context switch
  612. would take place immediately. The task itself goes back to sleep at once,
  613. so there is no time lost there.
  614.  
  615. ============
  616. VERSION 42.0
  617. ============
  618.  
  619. Installed patch in arith.c to work around bug in IEEEDPCmp.  If the first
  620. 32 bits of both doubles are equal, and both doubles are negative, then
  621. the result can no longer be trusted.  Discovered by Bart Van Assche.
  622.  
  623. Ixtrace has been updated to recognize all 42.0 syscalls, thanks to David
  624. Zaroski.
  625.  
  626. Ctrl-C handling worked with KingCON, but not with the standard AmigaOS
  627. CON-handler (since I use KingCON I never noticed this until it was pointed
  628. out to me by Fred Fish :-). This has now been fixed. See the comments in
  629. library/__read.c for more information.
  630.  
  631. Added the uname() function, written by Lars Hecking.
  632.  
  633. The termios code now properly recognizes the ICRNL input flag for '\r' to
  634. '\n' translation.
  635.  
  636. Fixed a bug in the fcntl() function (actually, in the fcntl.h and
  637. sys/fcntl.h headers).
  638.  
  639. Moved several static variables to user.h, so they are now process-specific.
  640.  
  641. Added profiling support. It was always there, but it was never actually
  642. used.
  643.  
  644. The write() function writes its buffer line-by-line instead of in one big
  645. chunk if the filehandle is the handle of an interactive stream (for
  646. example, a console window). This allows the user to interrupt the output by
  647. pressing a key and it also allows the use of Ctrl-C to break the program.
  648. In previous versions you were unable to stop the output if you forgot to
  649. redirect it to a file. E.g., 'cat /libs/ixemul.library' would essentially
  650. take over the computer.
  651.  
  652. Changed default stack size handling when a new process is launched. It is
  653. either the value of the environment variable IXSTACK, or it inherits the
  654. size from its parent, but if that size is less than 16384, it uses a stack
  655. of 16384 bytes instead.
  656.  
  657. Replaced ixconfig by ixprefs (written by Kriton Kyrimis).
  658.  
  659. Integrated the partial ptrace support from Leonard Norrgard.
  660.  
  661. Removed the gnulib, gnulib-68881 and gnulib-soft-float directories.
  662.  
  663. Compiled with -Wall and fixed (nearly) all warnings. Some warnings are
  664. inevitable and cannot be avoided. -Wall already caught one illegal memory
  665. access bug in __Close()!
  666.  
  667. Added functions to set and get ixemulbase-private information. This will
  668. break older ixconfig's but is much cleaner. Nearly all of the ixemulbase
  669. structure is now off-limits and liable to change without notice! You are
  670. warned! In fact, the structure has been changed already. The library will
  671. complain if a program called 'ixconfig' tries to use it to prevent the user
  672. from using an old ixconfig with the new library.
  673.  
  674. Removed several arithmetic functions dealing with 'long long' types. They
  675. didn't belong in the library, link with libgcc.a instead. Also removed some
  676. arithmetic functions that are never called because they are compiled
  677. directly in 68000 assembly. Don't know why they were ever added.
  678.  
  679. Fixed gen_glue.c so that it no longer generates glue for obsolete functions.
  680.  
  681. Removed ssystem(). ssystem() was the precursor of vfork/execve, and is no
  682. longer needed. NOTE: it is still used in gcc. But this fails spectacularly
  683. once you use Ctrl-C! Delete gcc and replace it by gccv, this one uses
  684. vfork/execve as it should and works perfectly.
  685.  
  686. ixemul.library now uses the new-style inlines.
  687.  
  688. qsort() is now re-entrant and no longer uses the horrible Semaphore hack.
  689.  
  690. Moved general/fts.c to the static library. These directory-tree traversal
  691. functions are rarely, if ever used, so they belong in libc.a and not in a
  692. shared library.
  693.  
  694. Reorganized the Makefiles. The makefiles now use several GNU make-only
  695. features to make them smaller and easier to maintain.  'make clean' and
  696. 'make clobber' now work correctly.  It is also no longer nessecary to add
  697. the -srcdir option to 'sh configure' in order to create valid Makefiles.
  698.  
  699. The top level Makefile contains the line 'export CATENATE = 1'. If this
  700. line is present, the compilation speed is greatly improved by catenating
  701. several small C-sources together into one bigger C-source, and then the
  702. bigger one is compiled. By commenting this line each separate source is 
  703. compiled. Note that besides improving compilation speed, the library also
  704. gets smaller as the compiler can now determine whether a call can be made
  705. relative or should remain absolute.
  706.  
  707. Fixed a symlink-bug (ln -s /ram/t created a symlink to /am/t, removing the
  708. first character of the volumename).
  709.  
  710. Moved ixtrace to the new utils directory, together with the small ixrun
  711. utility.  ixrun can be used to run Amiga batch files from /bin/sh (just put
  712. ';!ixrun' at the second line (!) of the batch file).  Also added manual
  713. page for ixrun.
  714.  
  715. Cleaned up the static directory:  removed xmalloc.c and alloca.c as they do
  716. not belong in the standard C library.  Also replaced the ctime.c source by
  717. the version from elsie.nci.nih.gov, which is the official version used by
  718. NetBSD and Linux, among others.  Finally, errlst.c and siglist.c now just
  719. include their counterparts in the general directory.
  720.  
  721. The version information is placed in the version.in file in the
  722. top-level directory. The version.c and version.h sources are created from
  723. this file.
  724.  
  725. The print_base_size.c and print_user.c sources have been replaced by
  726. create_header.c, which creates a header containing a few defines that are
  727. used by start.s and trap.s. These used to be hard-coded, but now they are
  728. generated, preventing future mistakes.
  729.  
  730. Added the raise function. For some reason, raise.c was never compiled into
  731. the library. It is now.
  732.  
  733. Removed ALL sources that were not needed for compilation.
  734.  
  735. Added timezone handling. The timezone databases from elsie.nci.nih.gov are
  736. used and installed in etc:zoneinfo. The new ixtimezone utility should be
  737. added to the startup-sequence. This utility determines the correct offset
  738. for Greenwich Mean Time. Read the manual page (Yes! Documentation at last!)
  739. for more information.
  740.  
  741. Merged the ixpipe-handler into the ixemul-distribution. It has been placed
  742. in the utils-directory.
  743.  
  744. Added hack to allow ixemul to run AmigaOS scripts without breaking them
  745. when run from the AmigaOS shell. The problem is that the ".KEY" string
  746. must be at the first line of the script, while ixemul also looks for "#!"
  747. and ";!" in the first line. If a file starts with ".KEY", ixemul will now
  748. skip the first line, before checking for "#!" and ";!".
  749.  
  750. ============
  751. VERSION 41.4
  752. ============
  753.  
  754. Integrated patches from Hans Verkuil that fix CTRL-C handling, fix another
  755. signal bug, fix problem with "rm -f", prepare for proper timezone handling,
  756. and remove '@' hack in argument parsing.
  757.  
  758. Applied patch from Kamil Iskra to avoid incompatibility between ixemul
  759. and the popular KingCON 1.3.  This is KingCON's fault because it makes
  760. invalid assumptions about the nature of reply port contained in "dp_Port"
  761. of packets sent to it.  Also applied patch (duplicated in Hans' patches)
  762. to crt0.c that fixes bug where the revision requester was not working
  763. properly if the current revision is 0.
  764.  
  765. Applied patch from Rask Lambertsen (duplicated in Hans' patches) that makes
  766. ixemul.library open "CONSOLE:" instead of "*".
  767.  
  768. Added implementation from Kriton Kyrimis for srand48, seed48, lcong48,
  769. lrand48, nrand48, mrand48, jrand48, drand48, and erand48.
  770.  
  771. Added "#include <sys/types.h>" to <dirent.h> to be more compatible
  772. with most current systems that do this inclusion for you.  This change
  773. should be backwards compatible with code that does the inclusion
  774. explicitly.  Suggested by Lars Hecking.
  775.  
  776. Changed prototype in <unistd.h> for getpgrp() to take a pid_t argument,
  777. which matches the implementation in library/getcrap.c.  Suggested by
  778. Lars Hecking.
  779.  
  780. Made change to <math-68881.h> in pow() so that if x<0 the code does
  781. log(-x) rather than log(x).  Suggested by Thomas Radtke and implemented
  782. by Lars Hecking.
  783.  
  784. Disable definitions of F_GETLK, F_SETLK, F_SETLKW, F_RDLCK, F_UNLCK, and
  785. F_WRLCK in <fcntl.h> since they are unimplemented and thus might have misled
  786. autoconfiguration schemes into thinking they were available.  Also fix
  787. ixtrace.c so it will still compile without these defined.  Suggested by
  788. Robert Ramiega.
  789.  
  790. Integrated patch from Joop van de Wege (duplicated in Hans' patches) for
  791. setting up fpu on 68060.
  792.  
  793. ============
  794. VERSION 41.3
  795. ============
  796.  
  797. Updated DBL_MIN and DBL_MAX in float.h to include one additional digit
  798. of precision.  Enclose negative constants in parens to avoid unexpected
  799. conversion to subtraction via cpp macros.
  800.  
  801. Applied patch from Hans Verkuil to fix serious bug in signal handling,
  802. to reset all signal handlers after an execve, except for those which are
  803. being ignored (SIG_IGN).
  804.  
  805. Applied patch from Joop van de Wege to trap.s to set 68881 rounding mode
  806. back to truncation instead of "round to nearest", as required by the
  807. ANSI C standard which specifies truncation.
  808.  
  809. Integrated ixtrace into source tree and arranged for it to be built and
  810. installed.
  811.  
  812. ============
  813. VERSION 41.2
  814. ============
  815.  
  816. Added "#include <sys/types.h>" to <sys/stat.h> to be more compatible
  817. with most current systems that do this inclusion for you.  This change
  818. should be backwards compatible with code that does the inclusion
  819. explicitly.
  820.  
  821. Changed version string to be style guide compliant.  Also arranged that
  822. version.o gets linked in, since it has the $VER: string and is otherwise
  823. unreferenced by any ixemul.library code.
  824.  
  825. Merged patches from Hans Verkuil to fix execve environment passing,
  826. always open the console for stderr if no other file handle is provided,
  827. move AmigaOS style filename matching into glob(), and fix a small problem
  828. with "open(NULL,...) that caused enforcer hits.
  829.  
  830. ============
  831. VERSION 41.1
  832. ============
  833.  
  834. A 68040 version of the library with soft floating point is now built,
  835. since there are apparently systems that use the versions of the 68040
  836. without FPUs.
  837.  
  838. Fixed crt0 files to use "jra _ENTRY" as first instruction rather than
  839. "jmp pc@(_ENTRY)" which was getting assembled by gas 2.5.2 as a 68020+
  840. instruction.  Note "jmp pc@(_ENTRY:W)" seems to generate the 68000
  841. instruction but a bad jump offset.  Added corresponding change to
  842. execve.c to recognize ixemul using executables with this change.
  843.  
  844. Fixed cpu.h, machdep.c, trap.s to avoid pc relative assembly instruction
  845. that was getting compiled as 68020+ instruction and causing crashes on
  846. 68000 machines.
  847.  
  848. Fixed numerous files that did "#include" of "DEFS.H" rather than "defs.h".
  849. This is an innocuous bug on the Amiga, which is case independent, but
  850. it kills cross compilations.
  851.  
  852. ============
  853. VERSION 41.0
  854. ============
  855.  
  856. No significant changes since the 40.6 beta release other than the
  857. mechanism (and macros) for building debug versions has been cleaned
  858. up and the version number has been bumped to 41.0.
  859.  
  860. Did include the cat'able man pages back in the source tree, but no
  861. work has been done yet to track down the sources for the man pages
  862. and arrange for them to be properly integrated into the tree and
  863. have the cat'able versions generated from those sources.
  864.  
  865. ============
  866. VERSION 40.6
  867. ============
  868.  
  869. Many bugs have been fixed since the 40.4 release, including a serious
  870. one that was causing memory corruption and many enforcer or mungwall
  871. hits.
  872.  
  873. Network support has been reintegrated into the library, however it is
  874. still mostly untested.  In particular, many functions are only
  875. available for static linking from the libnet.a library.  By the next
  876. release, it is expected that libnet.a will be incorporated in libc.a.
  877.  
  878. Work is underway to merge the best features from at least two
  879. different strains of the ixemul library.  Many more changes are
  880. expected by the 41.0 release.
  881.  
  882. An environment variable called "IXSTACK" is now used to control the
  883. stack size of programs started by system().  If the current stack is
  884. smaller than the value in IXSTACK, the stack is raised to the value
  885. specified in IXSTACK.  So IXSTACK is a minimum value.
  886.  
  887. Automatic stack checking, with a requestor if the stack overflows, is
  888. available for executables compiled with a version of gcc that supports
  889. the -mstackcheck option.  This also requires linking with new crt0 and
  890. libc.a.
  891.  
  892. Automatic stack extension as necessary is available for executables
  893. compiled with a version of gcc that supports the -mstackextend option.
  894. This also requires linking with new crt0 and libc.a.
  895.