This archive contains fixes to my gcc-2.2.2 distribution. *************************************************************************** Note that this fix builds on top of fix1 and fix2, if you didn't apply them to the gcc222.lha distribution, I'd *strongly* suggest you do that before applying fix3! *************************************************************************** To apply these changes, make sure you have unpacked the 2.2.2 distribution, and have it set up as mentioned in the README file of the distribution. This is very important, as the script that applies the changes assumes that it can access any file in the distribution (using the documented assigned directories). Don't worry, the script tells you everything it's going to do, but you're better off if you follow these instructions. So, given you have unpacked 2.2.2, and have set up GCC: as documented (and all the other assigns), execute the following command in your shell: execute fix3 You're then asked patch by patch whether to apply it. You should normally not need to answer NO, as every patch corrects a more or less serious problem in 2.2.2. However, the questions are there for the suspicious among you;-)) What's fixed: fix3 really is an ixemul.library update, nothing more, nothing less. This library release contains changes in these areas: - changed memory allocator. With these changes, you can finally use GigaMem (a commercial program providing virtual memory for AmigaDOS. I don't get a cent for mentioning this here, by the way;-)). Parameters for GigaMem: Attribute, Mask: default (0, 1), Min.Size 4000. Using 4000 causes most allocations that gcc does to use virtual memory. - changed vfork. The old vfork provided the child with its own malloc-area, thus it was illegal (and deadly;-)) for the parent to free memory the child allocated. This has been changed to the usual BSD semantics. If you want the old behavior, use the new function `vfork2' instead. Since I didn't want to break old programs relying on the old behavior, the old `vfork' has been renamed to `vfork2', and there's a new `vfork' entry in the library. Note: if you want to recompile pdksh with this new library, make sure to change the vfork into vfork2 in jobs.c, pdksh NEEDS the old behavior.... Most notable effect this change had: Perl seems to behave finally when asked to exec*().. - along with vfork, execve was changed to be aware of different malloc areas - ix_resident() no longer allocates a4-segments as malloc-data, but now uses kmalloc(). This means that such memory is not GigaMem-able, sorry! It fixes a nasty problem though with programs accessing their a4-segment after it had already been freed. This only applies to -resident programs. Sidenote: some of you probably noticed that gcc-2.3.1 is out by now. I'm looking at it at the moment, but I thought I'd better get this fix out now or never, and it does contain enough fixes worth while sharing I hope;-) -Markus Wild &