📄 readme.changes
字号:
- Fixed some '=='s in os_dep.c that should have been assignments. Fortunately these were in code that should never be executed anyway. (Thanks to Fergus Henderson.) - Fixed the heap block allocator to only drop blacklisted blocks in small chunks. Made BL_LIMIT self adjusting. (Both of these were in response to heap growth observed by Paul Graham.) - Fixed the Metrowerks/68K Mac code to also mark from a6. (Thanks to Patrick Beard.) - Significantly updated README.debugging. - Fixed some problems with longjmps out of signal handlers, especially under Solaris. Added a workaround for the fact that siglongjmp doesn't appear to do the right thing with -lthread under Solaris. - Added MSDOS/djgpp port. (Thanks to Mitch Harris (maharri@uiuc.edu).) - Added "make reserved_namespace" and "make user_namespace". The first renames ALL "GC_xxx" identifiers as "_GC_xxx". The second is the inverse transformation. Note that doing this is guaranteed to break all clients written for the other names. - descriptor field for kind NORMAL in GC_obj_kinds with ADD_BYTE_AT_END defined should be -ALIGNMENT not WORDS_TO_BYTES(-1). This is a serious bug on machines with pointer alignment of less than a word. - GC_ignore_self_finalize_mark_proc didn't handle pointers to very near the end of the object correctly. Caused failures of the C++ test on a DEC Alpha with g++. - gc_inl.h still had problems. Partially fixed. Added warnings at the beginning to hopefully specify the remaining dangers. - Added DATAEND definition to config.h. - Fixed some of the .h file organization. Fixed "make floppy". Since version 4.6: - Fixed some compilation problems with -DCHECKSUMS (thanks to Ian Searle) - Updated some Mac specific files to synchronize with Patrick Beard. - Fixed a serious bug for machines with non-word-aligned pointers. (Thanks to Patrick Beard for pointing out the problem. The collector should fail almost any conceivable test immediately on such machines.)Since version 4.7: - Changed a "comment" in a MacOS specific part of mach-dep.c that caused gcc to fail on other platforms.Since version 4.8 - More README.debugging fixes. - Objects ready for finalization, but not finalized in the same GC cycle, could be prematurely collected. This occasionally happened in test_cpp. - Too little memory was obtained from the system for very large objects. That could cause a heap explosion if these objects were not contiguous (e.g. under PCR), and too much of them was blacklisted. - Due to an improper initialization, the collector was too hesitant to allocate blacklisted objects immediately after system startup. - Moved GC_arrays from the data into the bss segment by not explicitly initializing it to zero. This significantly reduces the size of executables, and probably avoids some disk accesses on program startup. It's conceivable that it might break a port that I didn't test. - Fixed EMX_MAKEFILE to reflect the gc_c++.h to gc_cpp.h renaming which occurred a while ago.Since 4.9: - Fixed a typo around a call to GC_collect_or_expand in alloc.c. It broke handling of out of memory. (Thanks to Patrick Beard for noticing.)Since 4.10: - Rationalized (hopefully) GC_try_to_collect in an incremental collection environment. It appeared to not handle a call while a collection was in progress, and was otherwise too conservative. - Merged GC_reclaim_or_delete_all into GC_reclaim_all to get rid of some code. - Added Patrick Beard's Mac fixes, with substantial completely untested modifications. - Fixed the MPROTECT_VDB code to deal with large pages and imprecise fault addresses (as on an UltraSPARC running Solaris 2.5). Note that this was not a problem in the default configuration, which uses PROC_VDB. - The DEC Alpha assembly code needed to restore $gp between calls. Thanks to Fergus Henderson for tracking this down and supplying a patch. - The write command for "de" was completely broken for large files. I used the easiest portable fix, which involved changing the semantics so that f.new is written instead of overwriting f. That's safer anyway. - Added README.solaris2 with a discussion of the possible problems of mixing the collector's sbrk allocation with malloc/realloc. - Changed the data segment starting address for SGI machines. The old code failed under IRIX6. - Required double word alignment for MIPS. - Various minor fixes to remove warnings. - Attempted to fix some Solaris threads problems reported by Zhiying Chen. In particular, the collector could try to fork a thread with the world stopped as part of GC_thr_init. It also failed to deal with the case in which the original thread terminated before the whole process did. - Added -DNO_EXECUTE_PERMISSION. This has a major performance impact on the incremental collector under Irix, and perhaps under other operating systems. - Added some code to support allocating the heap with mmap. This may be preferable under some circumstances. - Integrated dynamic library support for HP. (Thanks to Knut Tvedten <knuttv@ifi.uio.no>.) - Integrated James Clark's win32 threads support, and made a number of changes to it, many of which were suggested by Pontus Rydin. This is still not 100% solid. - Integrated Alistair Crooks' support for UTS4 running on an Amdahl 370-class machine. - Fixed a serious bug in explicitly typed allocation. Objects requiring large descriptors where handled in a way that usually resulted in a segmentation fault in the marker. (Thanks to Jeremy Fitzhardinge for helping to track this down.) - Added partial support for GNU win32 development. (Thanks to Fergus Henderson.) - Added optional support for Java-style finalization semantics. (Thanks to Patrick Bridges.) This is recommended only for Java implementations. - GC_malloc_uncollectable faulted instead of returning 0 when out of memory. (Thanks to dan@math.uiuc.edu for noticing.) - Calls to GC_base before the collector was initialized failed on a DEC Alpha. (Thanks to Matthew Flatt.) - Added base pointer checking to GC_REGISTER_FINALIZER in debugging mode, at the suggestion of Jeremy Fitzhardinge. - GC_debug_realloc failed for uncollectable objects. (Thanks to Jeremy Fitzhardinge.) - Explicitly typed allocation could crash if it ran out of memory. (Thanks to Jeremy Fitzhardinge.) - Added minimal support for a DEC Alpha running Linux. - Fixed a problem with allocation of objects whose size overflowed ptrdiff_t. (This now fails unconditionally, as it should.) - Added the beginning of Irix pthread support. - Integrated Xiaokun Zhu's fixes for djgpp 2.01. - Added SGI-style STL allocator support (gc_alloc.h). - Fixed a serious bug in README.solaris2. Multithreaded programs must include gc.h with SOLARIS_THREADS defined. - Changed GC_free so it actually deallocates uncollectable objects. (Thanks to Peter Chubb for pointing out the problem.) - Added Linux ELF support for dynamic libararies. (Thanks again to Patrick Bridges.) - Changed the Borland cc configuration so that the assembler is not required. - Fixed a bug in the C++ test that caused it to fail in 64-bit environments.Since 4.11: - Fixed ElfW definition in dyn_load.c. (Thanks to Fergus Henderson.) This prevented the dynamic library support from compiling on some older ELF Linux systems. - Fixed UTS4 port (which I apparently mangled during the integration) (Thanks to again to Alistair Crooks.) - "Make C++" failed on Suns with SC4.0, due to a problem with "bool". Fixed in gc_priv.h. - Added more pieces for GNU win32. (Thanks to Timothy N. Newsham.) The current state of things should suffice for at least some applications. - Changed the out of memory retry count handling as suggested by Kenjiro Taura. (This matters only if GC_max_retries > 0, which is no longer the default.) - If a /proc read failed repeatedly, GC_written_pages was not updated correctly. (Thanks to Peter Chubb for diagnosing this.) - Under unlikely circumstances, the allocator could infinite loop in an out of memory situation. (Thanks again to Kenjiro Taura for identifying the problem and supplying a fix.) - Fixed a syntactic error in the DJGPP code. (Thanks to Fergus Henderson for finding this by inspection.) Also fixed a test program problem with DJGPP (Thanks to Peter Monks.) - Atomic uncollectable objects were not treated correctly by the incremental collector. This resulted in weird log statistics and occasional performance problems. (Thanks to Peter Chubb for pointing this out.) - Fixed some problems resulting from compilers that dont define __STDC__. In this case void * and char * were used inconsistently in some cases. (Void * should not have been used at all. If you have an ANSI superset compiler that does not define __STDC__, please compile with -D__STDC__=0. Thanks to Manuel Serrano and others for pointing out the problem.) - Fixed a compilation problem on Irix with -n32 and -DIRIX_THREADS. Also fixed some other IRIX_THREADS problems which may or may not have had observable symptoms. - Fixed an HP PA compilation problem in dyn_load.c. (Thanks to Philippe Queinnec.) - SEGV fault handlers sometimes did not get reset correctly. (Thanks to David Pickens.) - Added a fix for SOLARIS_THREADS on Intel. (Thanks again to David Pickens.) This probably needs more work to become functional. - Fixed struct sigcontext_struct in os_dep.c for compilation under Linux 2.1.X. (Thanks to Fergus Henderson.) - Changed the DJGPP STACKBOTTOM and DATASTART values to those suggested by Kristian Kristensen. These may still not be right, but it is it is likely to work more often than what was there before. They may even be exactly right. - Added a #include <string.h> to test_cpp.cc. This appears to help with HP/UX and gcc. (Thanks to assar@sics.se.) - Version 4.11 failed to run in incremental mode on recent 64-bit Irix kernels. This was a problem related to page unaligned heap segments. Changed the code to page align heap sections on all platforms. (I had mistakenly identified this as a kernel problem earlier. It was not.) - Version 4.11 did not make allocated storage executable, except on one or two platforms, due to a bug in a #if test. (Thanks to Dave Grove for pointing this out.) - Added sparc_sunos4_mach_dep.s to support Sun's compilers under SunOS4. - Added GC_exclude_static_roots. - Fixed the object size mapping algorithm. This shouldn't matter, but the old code was ugly. - Heap checking code could die if one of the allocated objects was larger than its base address. (Unsigned underflow problem. Thanks to Clay Spence for isolating the problem.) - Added RS6000 (AIX) dynamic library support and fixed STACK_BOTTOM. (Thanks to Fred Stearns.) - Added Fergus Henderson's patches for improved robustness with large heaps and lots of blacklisting. - Added Peter Chubb's changes to support Solaris Pthreads, to support MMAP allocation in Solaris, to allow Solaris to find dynamic libraries through /proc, to add malloc_typed_ignore_off_page, and a few other minor features and bug fixes. - The Solaris 2 port should not use sbrk. I received confirmation from Sun that the use of sbrk and malloc in the same program is not supported. The collector now defines USE_MMAP by default on Solaris. - Replaced the djgpp makefile with Gary Leavens' version. - Fixed MSWIN32 detection test. - Added Fergus Henderson's patches to allow putting the collector into a DLL under GNU win32. - Added Ivan V. Demakov's port to Watcom C on X86. - Added Ian Piumarta's Linux/PowerPC port. - On Brian Burton's suggestion added PointerFreeGC to the placement options in gc_cpp.h. This is of course unsafe, and may be controversial. On the other hand, it seems to be needed often enough that it's worth adding as a standard facility.Since 4.12: - Fixed a crucial bug in the Watcom port. There was a redundant decl of GC_push_one in gc_priv.h. - Added FINALIZE_ON_DEMAND. - Fixed some pre-ANSI cc problems in test.c. - Removed getpagesize() use for Solaris. It seems to be missing in one or two versions. - Fixed bool handling for SPARCCompiler version 4.2. - Fixed some files in include that had gotten unlinked from the main copy. - Some RS/6000 fixes (missing casts). Thanks to Toralf Foerster. - Fixed several problems in GC_debug_realloc, affecting mostly the FIND_LEAK case. - GC_exclude_static_roots contained a buggy unsigned comparison to terminate a loop. (Thanks to Wilson Ho.) - CORD_str failed if the substring occurred at the last possible position. (Only affects cord users.) - Fixed Linux code to deal with RedHat 5.0 and integrated Peter Bigot's os_dep.c code for dealing with various Linux versions. - Added workaround for Irix pthreads sigaction bug and possible signal misdirection problems.Since alpha1: - Changed RS6000 STACKBOTTOM. - Integrated Patrick Beard's Mac changes. - Alpha1 didn't compile on Irix m.n, m < 6. - Replaced Makefile.dj with a new one from Gary Leavens. - Added Andrew Stitcher's changes to support SCO OpenServer.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -