Releases: ivmai/bdwgc
8.2.0
Changes
- Add API for accessing incremental GC time limit with nanosecond precision
- Add API function to force start of incremental collection
- Add GC_ prefix to scan_ptr and some other static variables (refactoring)
- Add GC_get/set_disable_automatic_collection API
- Add I_HOLD_LOCK assertion to expand_hp_inner and related functions
- Add assertion on free-list argument and result of GC_new_kind
- Add assertion that GC is initialized to base incremental_protection_needs
- Add assertions that GC_page_size is initialized
- Add cordtest, staticrootstest, test_cpp, tracetest, disclaim tests (CMake)
- Add debug messages on thread suspend/resume (Win32)
- Add dummy testing of GC_incr_bytes_allocd/freed
- Add table of contents in gcdescr.md
- Add testing of GC_CALLOC/MALLOC_EXPLICITLY_TYPED (gctest)
- Adjust formatting of numbered lists in README.md to match other .md files
- Adjust highlighting of API prototypes in gcinterface.md
- Adjust macro def/usage for AVR32, CRIS, NETBSD, OPENBSD, SH4 in gcconfig.h
- Adjust printf calls in gctest check_heap_stats so that each has new-line
- Allow incremental GC on Cygwin
- Allow memory unmapping in case of MPROTECT_VDB
- Allow to disable GWW or mprotect-based VDB at build
- Allow to disable Glibc FPU exception mask and TSX workarounds (Linux)
- Allow to disable __builtin_return_address(1) usage (x86 and x64)
- Allow to specify custom value of LOG_PHT_ENTRIES
- Always abort on failure to access /proc/self/maps (Linux)
- Always define default_push_other_roots (code refactoring)
- Avoid gcc stringop-overflow warning for intended overflow in smashtest
- Avoid initial 3ms pause on world stop/start with GC_retry_signals (Linux)
- Build cord.lib by Makefile.direct, NT_MAKEFILE, OS2_MAKEFILE, WCC_MAKEFILE
- Build gc as a shared multi-threaded library by default (CMake)
- Build gccpp library by Makefile.direct, NT_MAKEFILE and WCC_MAKEFILE
- Build gctba library
- Build shared libraries by default (WCC_MAKEFILE)
- Change CLOCK_TYPE to timespec for Nintendo Switch (code refactoring)
- Change EMSCRIPTEN macro for internal use to no-underscore format
- Change log_size fields of finalizer to unsigned type (code refactoring)
- Change type of toggleref_array_size/capacity to size_t (code refactoring)
- Check leak of objects allocated by CRT malloc in gctest (MS VC)
- Check real-symbols are already initialized in pthread_join/detach
- Collapse multiple includes of windows.h (code refactoring)
- Comments reformatting in mark.c to properly delimit sentences
- Compile de test GUI app with resources (CMake)
- Compile gc.c unless building static libraries (NT_MAKEFILE, WCC_MAKEFILE)
- Compile msvc_dbg.c by CMake script (MS VC)
- Declare API function and print amount of memory obtained from OS
- Define GC_win32_free_heap API function for all Windows targets
- Define STATIC macro to static by default
- Depend number of fork_a_thread calls on NTHREADS (gctest)
- Detect dladdr() presence in CMake script
- Detect presence of execinfo.h system header in CMake script
- Detect presence of getcontext and dl_iterate_phdr in CMake script
- Detect sigsetjmp() availability in CMake script
- Disable Clang/GCC aliasing optimization in CMake script by default
- Do not build tests by default (Makefile.direct and other Makefiles)
- Do not build the tests by default (CMake)
- Do not call GC_push_conditional unless PROC_VDB
- Do not call add_to_our_memory with null pointer (refactoring)
- Do not compile pthread_*.c files in Cygwin or MSYS (CMake)
- Do not define GC_write_cs for Xbox One target
- Do not define HAVE_NO_FORK for all Unix-like systems
- Do not hard-code CMAKE_DL_LIBS value and install paths (CMake)
- Do not hard-code finalizable objects limit which triggers GC
- Do not update scratch_last_end_ptr unless used by reg dynamic libraries
- Document GC_incr_bytes_allocd/freed API function
- Eliminate '(long)size<=0 is always false' cppcheck FP
- Eliminate 'Consecutive return is unnecessary' cppcheck style warning
- Eliminate 'accessing GC_dont_gc without lock' in GC_init code defect FP
- Eliminate 'bytes_freed access w/o lock in incr_bytes_free' code defect FP
- Eliminate 'checking if unsigned i < 0' cppcheck FP in is_heap_base
- Eliminate 'hash_val value is never used' cppcheck false positive
- Eliminate 'passing tainted var maps_buf to tainted sink' code defect FP
- Eliminate 'retry_cnt is assigned value but never used' cppcheck FP
- Eliminate 'stop variable is always 0' compiler warning in print_callers
- Eliminate 'struct member os_callback is never used' cppcheck warning
- Eliminate 't->flags not atomically updated' code defect FP
- Eliminate 'tmpl might be accessed at non-zero index' cppcheck error
- Eliminate GCC warning of unsafe __builtin_return_address(1)
- Eliminate code duplication in reclaim_clear and disclaim_and_reclaim
- Eliminate double lock code defect false positive in generic_lock
- Eliminate memory leak reported in add_current_malloc_heap at exit (Win32)
- Emscripten single-threaded support (detect stack base, push registers)
- Enable CMake-based build for Borland and Watcom compilers
- Enable compilation without C runtime (Win32)
- Enable fork testing in single-thread builds (Unix-like)
- Enable mprotect-based incremental GC for Linux/arm and Linux/aarch64
- Enable true incremental collection even if parallel marker is on
- Enable use of __builtin_unwind_init() if clang-8 or later
- Ensure ELFSIZE is defined in dyn_load.c for OpenBSD (code refactoring)
- Ensure add_to_heap_inner arguments are valid (refactoring)
- Ensure all getters and setters are run at least once by gctest (pthreads)
- Export CMake targets with namespace BDWgc
- Fix 'const obj must be initialized if not extern' error in gc_alloc_ptrs.h
- Fix ./libgc.la dependency on FreeBSD (Automake)
- Fix HOST determination in CMake script
- Fix copyright message in de_win.rc, gc_cpp.cc, ec.h and specific.h
- Fix missing OS_TYPE definition for some targets
- Fix mmap(PROT_NONE) failure if RLIMIT_AS value is low (Linux)
- Generate cordtest and de executable files in GC base folder
- Generate pkg-config metadata file (CMake)
- Get rid of some non-ELF ifdefs (code refactoring)
- Handle potential incomplete buffer read in GC_linux_main_stack_base
- Implement GET_TIME for Nintendo Switch
- Increase NTHREADS value in tests if code coverage analysis
- Install docs and man page if enable_docs (CMake)
- Install gc_gcj.h and gc_pthread_redirects.h only if appropriate
- Log abort message details even if not print_stats (unless SMALL_CONFIG)
- Mark buffer returned by get_maps as const (code refactoring)
- Move C++ GC_ATTR_EXPLICIT and GC_NOEXCEPT definition to gc_config_macros.h
- Move GC state non-pointer variables into GC_arrays (code refactoring)
- Move GC state pointer variables into GC_arrays
- Move GC_scratch_recycle_inner() to alloc.c (refactoring)
- Move GC_throw_bad_alloc definition to new C++ file
- Move QNX and Emscripten macro definitions to proper place in gcconfig.h
- Move definition of GC_n_mark_procs and GC_n_kinds from mark.c to misc.c
- New API (GC_set_markers_count) to control number of parallel markers
- New API function to clear GC exclusion table
- New API function to get size of object debug header
- New API standalone functions to acquire and release the allocator lock
- New CMake option (disable_gc_debug) to remove debugging code
- New CMake option (disable_handle_fork) to disable fork handling completely
- New macro (CONSOLE_LOG) to enable logging to console on Win32
- New macro (GCTEST_PRINT_VERBOSE) to enable verbose logging in test.c only
- New macro (NO_MSGBOX_ON_ERROR) to avoid message box on GC abort (Win32)
- OpenBSD does not use ELF_CLASS (code refactoring)
- Pass -D GC_DLL -fvisibility=hidden if default configure build is requested
- Pass -no-undefined linker flag if building shared libraries (CMake)
- Print pid of child processes if verbose logging (gctest)
- Read environment variables from a file on WinCE (CMake script)
- Reduce stack-allocated buffer in get_nprocs from 4KB to 1.7KB
- Refine flags field comment in pthread_support.h
- Reflect result of VDB selection at runtime in incremental_protection_needs
- Reformat code of GC_push_roots
- Reformat gc.man (wrap long lines)
- Reformatting and code refactoring of CMake script
- Remove 'current users' section from overview.md
- Remove 'distributed ports', 'scalable versions' sections from overview.md
- Remove AC_MSG_RESULT for THREADDLLIBS (dgux386)
- Remove Borland-specific Makefile and gc.mak script
- Remove GC_eobjfreelist variable in typd_mlc.c (code refactoring)
- Remove GC_gcj_malloc_initialized variable (code refactoring)
- Remove Linux-specific commands for building cord/de from Makefile.direct
- Remove Win32 main_thread static variable if threads discovery is disabled
- Remove code duplication between GC_unmap and GC_unmap_gap (refactoring)
- Remove code duplication between PROTECT and UNPROTECT macros (refactoring)
- Remove commented out assignment of gc_use_mmap in configure (refactoring)
- Remove dash characters comprising prefix of some verbose logs (gctest)
- Remove dependency on user32.dll import library from static libgc (Win32)
- Remove documentation specific to particular old BDWGC releases
- Remove duplicate Linux-related macro definitions in gcconfig.h
- Remove duplicate macro definitions in gcconfig.h except for Linux
- Remove gcmt-dll generation, rename libgc-lib.a to libgc.a (CMake)
- Remove goto statement in print_callers (code refactoring)
- Remove limit on number of heap sections
- Remove new_gc_alloc.h file
- Remove redundant GC_with_callee_saves_pushed call in multi-threaded builds
- Remove redundant check of GC_free argument in register_finalizer
- Remove redundant type casts in backgraph HEIGHT_UNKNOWN/IN_PROGRESS
- Remove unused GC_prev_heap_addr (refactoring)
- R...
8.0.6
Changes
- Add loop to handle abort error like in suspend logic on Darwin
- Add support of OpenBSD/aarch64
- Add threading libraries to bdw-gc.pc
- Allocate start_info struct on the stack in GC_pthread_create
- Allow GC_PAUSE_TIME_TARGET environment variable values smaller than 5 ms
- Avoid compiler warning about unused d in GC_CALLOC/MALLOC_EXPLICITLY_TYPED
- Avoid gcc stringop-overflow warning for intended overflow in smashtest
- Check _MSVC_LANG macro in addition to __cplusplus (MS VC)
- Compile C++ code with exception handling enabled in NT_MAKEFILE
- Define OS_TYPE and DATAEND for UWP targets
- Disable mprotect-based incremental GC if /proc roots are used (Linux)
- Do not report 'Incremental GC incompatible' warning more than once
- Do not use Manual VDB mode if C malloc is redirected
- Do not use iOS private symbols
- Eliminate 'GC_non_gc_bytes is deprecated' warning in new_gc_alloc.h
- Eliminate 'GC_old_bus_handler defined but not used' compiler warning
- Eliminate 'cast between incompatible func types' warnings for FARPROC vars
- Eliminate 'comparing signed and unsigned values' BCC warning in cordtest
- Eliminate 'gc_pthread_redirects.h should contain header guard' code defect
- Eliminate 'implicit declaration of sbrk' gcc warning if -std=c11 on Cygwin
- Eliminate 'possible loss of data' BCC and MS VC warnings
- Eliminate 'static GC_sysinfo definition has incomplete type' Clang warning
- Eliminate 'unused function' compiler warnings (GC_add_map_entry, GC_lock)
- Eliminate 'while clause does not guard' GCC warning in GC_parse_map_entry
- Enable sbrk-to-mmap fallback on major supported Unix-like platforms
- Ensure process is running on one CPU core if AO ops are emulated with locks
- Explicitly zero-initialize trace_buf (fix trace_buf initialization)
- Fix 'ACCESS_VIOLATION in marker' GC warning on Win32 async thread start
- Fix 'GC_generic_malloc must be available' GCC error in new_gc_alloc.h
- Fix 'ISO C++17 does not allow dynamic exception spec' clang-8 error
- Fix 'Wrong __data_start/_end pair' if -Bsymbolic-functions used (Linux)
- Fix 'condition pred!=NULL is always true' compiler warning
- Fix 'external linkage required for var because of dllimport' error on MinGW
- Fix 'ulong undefined' compilation error on AIX
- Fix 'undefined reference to __data_start' linker error on RISC-V
- Fix 'use of undeclared BUS_PAGE_FAULT' compilation error on FreeBSD 12
- Fix 'write to GC log failed' error (Cygwin)
- Fix 'wrong finalization data' gctest failure on Windows
- Fix CMake build on macOS Catalina
- Fix GC_OPENBSD_THREADS definition (OpenBSD/hppa)
- Fix GC_proc_fd value in child process at fork (Solaris)
- Fix GC_with_callee_saves_pushed for Android NDK r23 (clang-12)
- Fix MPROTECT_VDB definition for single-threaded GC builds
- Fix OS_TYPE and USE_MMAP_ANON definitions for Cygwin/x64
- Fix STACKBOTTOM on 32-bit HP/UX 11.11
- Fix abort in GC_printf when gctest is built as WinMain executable (Cygwin)
- Fix assertion violation in register_dynlib_callback on Android
- Fix build for OS X (CMake)
- Fix building of shared library with C++ support on MinGW
- Fix compiling by Makefile.direct on OpenBSD/UltraSparc
- Fix configure message about 'AIX gcc optimization fix'
- Fix cordtest build in SMakefile.amiga
- Fix data race regarding *rlh value in generic_malloc_many
- Fix first_thread stack_base initialization if custom GC_stackbottom (Win32)
- Fix gc_allocator.h compilation by Clang
- Fix gc_cflags variable name in configure (HP/UX)
- Fix handling of areas smaller than page size in GC_scratch_recycle
- Fix incorrect markup formatting in documentation
- Fix misaligned tlfs passed to AO_load on m68k
- Fix missing GC_quiet declaration in pcr_interface.c
- Fix missing gc_dlopen.c and specific.c in CMake script
- Fix missing scratch_last_end_ptr update (Irix)
- Fix mmap() failures on AIX, HP/UX and Haiku
- Fix overflow of scratch_free_ptr value
- Fix page_was_[ever_]dirty() for static roots (Solaris)
- Fix printf format specifier in simple_example.md
- Fix save_callers for multi-threaded case if built-in backtrace unavailable
- Fix subexpression widening in memhash() of disclaim_weakmap_test
- Fix test_cpp failure caused by arbitrary link order (Win32)
- Fix test_cpp failure when gc_cpp resides in a dll (Borland, Watcom)
- Fix various typos mostly in documentation files
- Fix word size, data start and alignment for OpenBSD/mips64(el)
- Include <alloca.h> when using alloca on AIX
- Limit number of unmapped regions (Linux and DragonFly)
- New macro to avoid system-wide new/delete inlining in gc_cpp.h (Win32)
- Prevent GetThreadContext failure (Windows)
- Prevent WARN of incompatible incremental GC if default or manual VDB
- Reduce a time period between GetExitCodeThread and SuspendThread (Win32)
- Refactoring of WoW64 workaround (Win32)
- Refine GC_INIT documentation about its multiple invocation
- Refine GC_parallel documentation in gc.h
- Refine do_blocking() documentation in gc.h
- Remove a misleading comment about Solaris in gc.h
- Remove cord .h files from list of non-installed headers (Automake)
- Remove dead part of condition to define NEED_FIND_LIMIT in gc_priv.h
- Remove gcmt-lib generation by CMake
- Support MSYS builds by CMake and configure
- Update documentation about the incremental collector support
- Use HEURISTIC2 on OpenBSD when single-threaded
- Use pstat_getprocvm to determine main stack bottom on HP-UX
- Workaround 'expression is only useful for its side effects' WCC warning
- Workaround clang-3.8/s390x bug when processing __builtin_frame_address
- Workaround fread fail after enable_incremental if malloc redirected (Linux)
Build status
Travis CI build
AppVeyor CI build
Coveralls status (code coverage)
Distribution Tarball
gc-8.0.6.tar.gz (see the Assets above, md5: 4878e629f482600f2060f30853c7b415)
7.6.14
Changes
- Add loop to handle abort error like in suspend logic on Darwin
- Add support of OpenBSD/aarch64
- Add threading libraries to bdw-gc.pc
- Disable mprotect-based incremental GC if /proc roots are used (Linux)
- Do not use iOS private symbols
- Eliminate 'GC_old_bus_handler defined but not used' compiler warning
- Eliminate 'comparing signed and unsigned values' BCC warning in cordtest
- Eliminate 'possible loss of data' BCC and MS VC warnings
- Eliminate 'static GC_sysinfo definition has incomplete type' Clang warning
- Eliminate 'unused function GC_add_map_entry' compiler warning
- Eliminate 'while clause does not guard' GCC warning in GC_parse_map_entry
- Explicitly zero-initialize trace_buf (fix trace_buf initialization)
- Fix 'ACCESS_VIOLATION in marker' GC warning on Win32 async thread start
- Fix 'GC_generic_malloc must be available' GCC error in new_gc_alloc.h
- Fix 'ulong undefined' compilation error on AIX
- Fix 'undefined reference to __data_start' linker error on RISC-V
- Fix 'write to GC log failed' error
- Fix GC_proc_fd value in child process at fork (Solaris)
- Fix MPROTECT_VDB definition for single-threaded GC builds
- Fix OS_TYPE and USE_MMAP_ANON definitions for Cygwin/x64
- Fix STACKBOTTOM on 32-bit HP/UX 11.11
- Fix abort in GC_printf when gctest is built as WinMain executable (Cygwin)
- Fix assertion violation in register_dynlib_callback on Android
- Fix compiling by Makefile.direct on OpenBSD/UltraSparc
- Fix configure message about 'AIX gcc optimization fix'
- Fix cordtest build in SMakefile.amiga
- Fix data race regarding *rlh value in generic_malloc_many
- Fix first_thread stack_base initialization if custom GC_stackbottom (Win32)
- Fix gc_allocator.h compilation by Clang
- Fix gc_cflags variable name in configure (HP/UX)
- Fix handling of areas smaller than page size in GC_scratch_recycle
- Fix incorrect define GC_OPENBSD_THREADS on sparc64
- Fix misaligned tlfs passed to AO_load on m68k
- Fix missing GC_quiet declaration in pcr_interface.c
- Fix missing gc_dlopen.c in CMake script
- Fix missing scratch_last_end_ptr update (Irix)
- Fix overflow of scratch_free_ptr value
- Fix page_was_[ever_]dirty() for static roots (Solaris)
- Fix printf format specifier in simple_example.html
- Fix save_callers for multi-threaded case if built-in backtrace unavailable
- Fix test_cpp failure caused by arbitrary link order (Win32)
- Fix test_cpp failure when gc_cpp resides in a dll (Borland, Watcom)
- Fix various typos mostly in documentation files
- Fix word size, data start and alignment for OpenBSD/mips64(el)
- Prevent GetThreadContext failure (Windows)
- Prevent WARN of incompatible incremental GC if default or manual VDB
- Reduce a time period between GetExitCodeThread and SuspendThread (Win32)
- Refactoring of WoW64 workaround (Win32)
- Remove a misleading comment about Solaris in gc.h
- Workaround 'expression is only useful for its side effects' WCC warning
- Workaround fread fail after enable_incremental if malloc redirected (Linux)
Build status
Travis CI build
AppVeyor CI build
Coveralls status (code coverage)
Distribution Tarball
gc-7.6.14.tar.gz (see the Assets above, md5: ac08ee4a73d69dac6ce1d725d20a2008)
7.4.20
Changes
- Add loop to handle abort error like in suspend logic on Darwin
- Disable mprotect-based incremental GC if /proc roots are used (Linux)
- Do not hold GC_fault_handler_lock when in Sleep (Windows)
- Eliminate 'static GC_sysinfo definition has incomplete type' Clang warning
- Eliminate 'unused function GC_add_map_entry' compiler warning
- Eliminate 'while clause does not guard' GCC warning in GC_parse_map_entry
- Explicitly zero-initialize trace_buf (fix trace_buf initialization)
- Fix 'ACCESS_VIOLATION in marker' GC warning on Win32 async thread start
- Fix 'GC_generic_malloc must be available' GCC error in new_gc_alloc.h
- Fix 'expected function body after declarator' clang error in gc_cpp.cc
- Fix 'write to GC log failed' error
- Fix GC_proc_fd value in child process at fork (Solaris)
- Fix OS_TYPE and USE_MMAP_ANON definitions for Cygwin/x64
- Fix abort in GC_printf when gctest is built as WinMain executable (Cygwin)
- Fix assertion violation in register_dynlib_callback on Android
- Fix configure message about 'AIX gcc optimization fix'
- Fix cordtest build in SMakefile.amiga
- Fix data race regarding *rlh value in generic_malloc_many
- Fix first_thread stack_base initialization if custom GC_stackbottom (Win32)
- Fix fread failure after enable_incremental if malloc is redirected (Linux)
- Fix gc_cflags variable name in configure (HP/UX)
- Fix handling of areas smaller than page size on recycle scratch area
- Fix incorrect define GC_OPENBSD_THREADS on sparc64
- Fix misaligned tlfs passed to AO_load on m68k
- Fix missing GC_quiet declaration in pcr_interface.c
- Fix missing gc_dlopen.c in CMake script
- Fix missing scratch_last_end_ptr update (Irix)
- Fix overflow of scratch_free_ptr value
- Fix page_was_[ever_]dirty() for static roots (Solaris)
- Fix printf format specifier in simple_example.html
- Fix save_callers for multi-threaded case if built-in backtrace unavailable
- Fix various typos in comments and documentation files
- Fix word size, data start and alignment for OpenBSD/mips64(el)
- Prevent GetThreadContext failure (Windows)
- Prevent WARN of incompatible incremental GC if default or manual VDB
- Reduce a time period between GetExitCodeThread and SuspendThread (Win32)
- Refactoring of WoW64 workaround (Win32)
- Remove a misleading comment about Solaris in gc.h
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.4.20.tar.gz (see the Assets above, md5: c84a52a6fdb38adb55e6394681f46651)
7.2o
Changes
- Add loop to handle abort error like in suspend logic on Darwin
- Disable mprotect-based incremental GC if /proc roots are used (Linux)
- Explicitly zero-initialize trace_buf (fix trace_buf initialization)
- Fix 'ACCESS_VIOLATION in marker' GC warning on Win32 async thread start
- Fix 'GC_generic_malloc must be available' GCC error in new_gc_alloc.h
- Fix 'expected function body after declarator' clang error in gc_cpp.cc
- Fix 'write to GC log failed' error
- Fix GC_proc_fd value in child process at fork (Solaris)
- Fix assertion violation in register_dynlib_callback on Android
- Fix configure message about 'AIX gcc optimization fix'
- Fix data race regarding *rlh value in generic_malloc_many
- Fix first_thread stack_base initialization if custom GC_stackbottom (Win32)
- Fix fread failure after enable_incremental if malloc is redirected (Linux)
- Fix gc_cflags variable name in configure (HP/UX)
- Fix handling of areas smaller than page size on recycle scratch area
- Fix incorrect define GC_OPENBSD_THREADS on sparc64
- Fix misaligned tlfs passed to AO_load on m68k
- Fix missing GC_quiet declaration in pcr_interface.c
- Fix missing gc_dlopen.c in CMake script
- Fix missing scratch_last_end_ptr update (Irix)
- Fix overflow of scratch_free_ptr value
- Fix page_was_[ever_]dirty() for static roots (Solaris)
- Fix printf format specifier in simple_example.html
- Fix save_callers for multi-threaded case if built-in backtrace unavailable
- Fix various typos in comments and documentation files
- Fix word size, data start and alignment for OpenBSD/mips64(el)
- Prevent WARN of incompatible incremental GC if default or manual VDB
- Reduce a time period between GetExitCodeThread and SuspendThread (Win32)
- Remove a misleading comment about Solaris in gc.h
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.2o.tar.gz (see the Assets above, includes a copy of libatomic_ops-7.2j, md5: f86c1b25c21cb0855deafe5756e4dc8d)
8.0.4
Changes
- Avoid a full GC when growing finalizer tables if in incremental mode
- Avoid potential race in hb_sz access between realloc and reclaim_block
- Avoid test.o rebuild on tests folder timestamp change (Makefile.direct)
- Avoid unexpected heap growth in gctest caused by GC_disable
- Ensure result of every variant of MS_TIME_DIFF has unsigned long type
- Fix 'duplicate symbol' error for tests using multiple static libs (OS X)
- Fix 'undefined reference to __data_start' linker error (Android/aarch64)
- Fix 'unexpected mark stack overflow' abort in push_all_stack
- Fix 'wrong __data_start/_end pair' error on Android
- Fix BSD_TIME variant of MS_TIME_DIFF for the case of a.tv_usec < b.tv_usec
- Fix GetThreadContext stale register values use if WoW64 (Win32)
- Fix invalid initializer of CLOCK_TYPE variables if BSD_TIME
- Fix thread_info() count argument value (OS X)
- Support de_win.c compilation by Makefile.direct (cord/de)
Build status
Travis CI build
AppVeyor CI build
Coveralls status (code coverage)
Distribution Tarball
gc-8.0.4.tar.gz (see the Assets above, md5: 67a5093e2f9f381bd550aa891d00b54b)
7.6.12
Changes
- Eliminate 'assigned value never used' compiler warning in test_cpp WinMain
- Fix 'mprotect remapping failed' abort on NetBSD with PaX enabled
- Fix 'undefined reference to __data_start' linker error (Android/aarch64)
- Fix 'unexpected mark stack overflow' abort in push_all_stack
- Fix 'wrong __data_start/_end pair' error on Android
- Fix BSD_TIME variant of MS_TIME_DIFF for the case of a.tv_usec < b.tv_usec
- Fix GetThreadContext stale register values use if WoW64 (Win32)
- Fix executable memory allocation in GC_unix_get_mem
- Fix invalid initializer of CLOCK_TYPE variables if BSD_TIME
- Fix thread_info() count argument value (OS X)
- Update NO_EXECUTE_PERMISSION documentation
Build status
Travis CI build
AppVeyor CI build
Coveralls status (code coverage)
Distribution Tarball
gc-7.6.12.tar.gz (see the Assets above, md5: 8175e1be00c6cd6eac2e8d67bdf451df)
7.4.18
Changes
- Fix 'wrong __data_start/_end pair' error on Android
- Fix thread_info() count argument value (OS X)
Also, includes 7.2n changes
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.4.18.tar.gz (see the Assets above, md5: 5e615ee2eebd3821ebb841a93b8116b6)
7.2n
Changes
- Fix 'mprotect remapping failed' abort on NetBSD with PaX enabled
- Fix 'unexpected mark stack overflow' abort in push_all_stack
- Fix BSD_TIME variant of MS_TIME_DIFF for the case of a.tv_usec < b.tv_usec
- Fix GetThreadContext stale register values use if WoW64 (Win32)
- Fix executable memory allocation in GC_unix_get_mem
- Fix invalid initializer of CLOCK_TYPE variables if BSD_TIME
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.2n.tar.gz (see the Assets above, includes a copy of libatomic_ops-7.2i, md5: 1c86a0e7c7bccabaa2d8383e1014f5c8)
8.0.2
Changes
- Abort with appropriate message if executable pages cannot be allocated
- Add initial testing of GC_enable/disable, MALLOC[_ATOMIC]_IGNORE_OFF_PAGE
- Add paths to filenames mentioned in the copyright section in README
- Add test using disclaim notifiers to implement a weak map
- Adjust #error messages format
- Allow to force executable pages allocation in gctest
- Avoid potential 'macro redefinition' errors for config.h macros
- Call real pthread_sigmask instead of its wrapper in start_mark_threads
- Check result of pthread_mutex_unlock in specific.c
- Default to a single-threaded build for Nintendo, Orbis, Sony PSP targets
- Default to non-executable memory allocation across all make scripts
- Define GC_ATOMIC_UNCOLLECTABLE and JAVA_FINALIZATION in all make scripts
- Do not prevent GC from looking at environment variables (BCC_MAKEFILE)
- Do not use 'ifndef AO_CLEAR' in mark, pthread_support and gctest
- Do not use spin locks if AO test-and-set is emulated (pthreads)
- Document HANDLE_FORK macro optional usage in Makefile.direct
- Document assertion in the setters that used to return old value
- Eliminate 'assigned value never used' compiler warning in test_cpp WinMain
- Eliminate 'casting signed to bigger unsigned int' CSA warning
- Eliminate 'different const qualifiers' MS VC warnings in cordbscs
- Eliminate 'function is never used' cppcheck warning for calloc/realloc
- Eliminate 'non-virtual destructor for class with inheritors' CSA warning
- Eliminate 'pointer targets differ in signedness' compiler warning (Win32)
- Eliminate 'struct member is never used' cppcheck warnings in os_dep
- Eliminate 'uninitialized var' cppcheck false positive in mach_dep, os_dep
- Eliminate 'unreferenced formal parameter' compiler warning in msvc_dbg
- Eliminate redundant check in backwards_height
- Fix 'USE_MUNMAP macro redefinition' error for NaCl
- Fix 'collecting from unknown thread' abort in leak-finding mode for Win32
- Fix 'mprotect remapping failed' abort on NetBSD with PaX enabled
- Fix 'too wide non-owner permissions are set for resource' code defect
- Fix GC_VSNPRINTF in cordprnt for DJGPP and MS VC for WinCE
- Fix GC_register_disclaim_proc for leak-finding mode
- Fix a deadlock in write_fault_handler if AO_or is emulated
- Fix comment typo in CMakeLists.txt
- Fix concurrent bitmap update in GC_dirty
- Fix deadlocks in write and suspend handlers if AO test-and-set is emulated
- Fix executable memory allocation in GC_unix_get_mem
- Fix hbp overflow in GC_install_counts
- Fix linkage with a system libatomic_ops shared library
- Fix lock assertion violation in get_index if GC_ALWAYS_MULTITHREADED
- Fix marking of finalizer closure object
- Fix marks and hb_n_marks consistency when disclaim returns true
- Fix memory allocation on GCF (Linux/x64)
- Fix missing curses.h in cord/de when compiling manually (MS VC, MinGW)
- Fix test_cpp assertion violation in find-leak mode
- Fix tests linkage with internal atomic_ops.o
- Fix unneeded end_stubborn_change/ptr_store_and_dirty in disclaim_test
- Guard against potential buffer overflow in CORD_next and CORD_pos_fetch
- New macro to suppress printing of leaked objects
- Pass -Wall -Wextra -Wpedantic to g++ if supported (configure)
- Prefix internal durango_get_mem symbol with 'GC_'
- Prevent double inclusion of javaxfc.h and private/specific.h
- Print relevant message in tests not appropriate for leak detection mode
- Reduce scope of local variables in GC_remove_all_threads_but_me
- Refine HIDE_POINTER documentation for the case of the leak-finding mode
- Refine documentation in gc_disclaim.h
- Remove extra USE_MMAP definition for Interix
- Remove redundant header double-inclusion checks in the private headers
- Remove strlen calls with a constant string argument in msvc_dbg
- Specify register_disclaim_proc and finalized_malloc argument as non-null
- Support UWP/arm64 target
- Test marking of finalizer closure object in disclaim_test
- Turn off leak detection mode explicitly in cord/de
- Turn off parallel marker, thread-local allocation if used AO ops emulated
- Turn on gcj functionality in BCC, DMC, NT, OS/2, WCC makefiles
- Turn on memory unmapping in BCC/DMC/NT/WCC makefiles and Makefile.direct
- Update NO_EXECUTE_PERMISSION documentation
- Update documentation about arm64 ABI in gcconfig.h
- Use AO_or in async_set_pht_entry_from_index if available
- Use GC_WORD_MAX macro across all C source files
- Use macro to operate on a flag residing in GC_stop_count
- Use standalone private macro to guard against ptr_t redefinition
- Workaround '#error' cppcheck messages in backgraph and private headers
- Workaround 'AST broken' syntax error reported by cppcheck in GC_mark_some
- Workaround 'GC_dump function is never used' cppcheck warning
- Workaround 'local address assignment to a global variable' CSA warning
- Workaround 'local variable end shadows outer symbol' cppcheck warnings
- Workaround 'local variable obj_displ shadows outer symbol' cppcheck warning
- Workaround 'nonlocal var will use ptr to local var' cppcheck false positive
- Workaround 'pointer addition with NULL pointer' cppcheck error in msvc_dbg
- Workaround 'potential non-terminated string' false positive in cordbscs
- Workaround 'value of _MAX_PATH is unknown' cppcheck warning
- Workaround cppcheck warnings regarding CLOCKS_PER_SEC, REDIRECT_REALLOC
Build status
Travis CI build
AppVeyor CI build
Coveralls status (code coverage)
Distribution Tarball
gc-8.0.2.tar.gz (see the Assets above, md5: 0c3e5a2de567a4f199dc07740bbf21d1)