Ivan Maidanski [Thu, 4 Jul 2019 20:44:40 +0000 (23:44 +0300)]
New macro (NO_MSGBOX_ON_ERROR) to avoid message box on GC abort (Win32)
NO_MSGBOX_ON_ERROR macro disables Win32 MessageBox() invocation.
* doc/README.macros (NO_MSGBOX_ON_ERROR): Document.
* include/private/gcconfig.h [!MSGBOX_ON_ERROR && !NO_MSGBOX_ON_ERROR
&& !SMALL_CONFIG && MSWIN32 && !MSWINRT_FLAVOR && !MSWIN_XBOX1]
(MSGBOX_ON_ERROR): Define new macro.
* misc.c (GC_win32_MessageBoxA): Define only if MSGBOX_ON_ERROR.
* misc.c [!PCR && !SMALL_CONFIG] (GC_default_on_abort): Do not call
GC_win32_MessageBoxA() unless MSGBOX_ON_ERROR is defined.
Ivan Maidanski [Mon, 1 Jul 2019 10:15:18 +0000 (13:15 +0300)]
Update ChangeLog file
Ivan Maidanski [Sun, 30 Jun 2019 06:00:13 +0000 (09:00 +0300)]
Update ChangeLog file (v8.0 changes)
Ivan Maidanski [Sun, 30 Jun 2019 05:48:37 +0000 (08:48 +0300)]
Update ChangeLog file (v7.6 changes)
Ivan Maidanski [Sat, 29 Jun 2019 16:12:27 +0000 (19:12 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Wed, 26 Jun 2019 19:55:42 +0000 (22:55 +0300)]
AppVeyor CI: Fix cmake Release build by passing --config
Ivan Maidanski [Wed, 26 Jun 2019 13:26:28 +0000 (16:26 +0300)]
Fix 'const object must be initialized' MS VC error for debug_header_size
(fix of commit
85e3083ff)
* include/gc_mark.h (GC_debug_header_size): Do not use "const" keyword
unless GC_BUILD; update comment.
Ivan Maidanski [Tue, 25 Jun 2019 21:03:41 +0000 (00:03 +0300)]
Fix 'redefinition of struct GC_ms_entry' compilation error in gc_priv.h
(fix of commit
38962c655)
* include/gc_mark.h [NOT_GCBUILD] (GC_ms_entry): Declare (instead of
an opaque struct definition).
Ivan Maidanski [Tue, 25 Jun 2019 20:55:22 +0000 (23:55 +0300)]
Fix 'GC_debug_header_size is deprecated' GCC warning
(fix of commit
85e3083ff)
* include/private/gc_priv.h [!GC_BUILD && NOT_GCBUILD] (GC_BUILD): Do
not define.
* tests/disclaim_bench.c (NOT_GCBUILD): Define macro (before include
gc_priv.h); remove outdated comment.
* tests/test.c (NOT_GCBUILD): Likewise.
Ivan Maidanski [Mon, 24 Jun 2019 20:20:55 +0000 (23:20 +0300)]
Travis CI: Replace clang-5.0 with clang (update to Xenial image)
Ivan Maidanski [Fri, 21 Jun 2019 21:59:36 +0000 (00:59 +0300)]
Travis CI: Fix out-of-memory during cppcheck build
Number of make parallel jobs is reduced to 8 when building cppcheck.
Ivan Maidanski [Fri, 21 Jun 2019 21:37:58 +0000 (00:37 +0300)]
Update AUTHORS file (add iarspider)
Ivan R [Fri, 14 Jun 2019 09:24:47 +0000 (11:24 +0200)]
Fix 'ISO C++17 does not allow dynamic exception spec' clang-8 error
Issue #287 (bdwgc).
Before this patch, clang 8 (and -std=c++1z) fails for gc_cpp.cc.
The error message produced is: ISO C++17 does not allow dynamic
exception specifications.
The "dynamic exception" syntax was declared deprecated in C++11 and
removed in C++17.
* gc_cpp.cc [!_MSC_VER && !__DMC__ && GC_NEW_DELETE_NEED_THROW
&& __cplusplus >= 201703L] (GC_DECL_NEW_THROW): Define to
noexcept(false); add comment.
Ivan Maidanski [Fri, 21 Jun 2019 20:47:47 +0000 (23:47 +0300)]
Fix 'while clause does not guard' GCC warning in GC_parse_map_entry
* os_dep.c [DYNAMIC_LOADING && USE_PROC_FOR_LIBRARIES || IA64
|| INCLUDE_LINUX_THREAD_DESCR || REDIRECT_MALLOC] (GC_parse_map_entry):
Fix "while" statements indentation; place just one "while" statement on
a line.
Ivan Maidanski [Fri, 21 Jun 2019 20:33:32 +0000 (23:33 +0300)]
Fix fread failure after enable_incremental if malloc is redirected (Linux)
The failure is observed in cord refill_cache() executed by cordtest,
fread() fails with EFAULT. The fix is to disable MPROTECT_VDB on Linux
when REDIRECT_MALLOC is defined.
* include/private/gcconfig.h [(M68K || I386 || ALPHA || IA64 || AARCH64
|| ARM32 || X86_64 || HEXAGON) && LINUX] (MPROTECT_VDB): Do not define
if REDIRECT_MALLOC.
Ivan Maidanski [Fri, 21 Jun 2019 09:24:26 +0000 (12:24 +0300)]
Do not use Manual VDB mode if C malloc is redirected
(fix of commit
06009b0a0)
* misc.c [!GC_DISABLE_INCREMENTAL && (REDIRECT_MALLOC
|| REDIRECT_MALLOC_IN_HEADER)] (GC_init, GC_enable_incremental):
Do not set GC_manual_vdb to true.
Victor Romero [Wed, 19 Jun 2019 22:31:01 +0000 (01:31 +0300)]
Specify rules for installing targets in CMake script
Issue #281 (bdwgc).
* CMakeLists.txt [build_cord] (cord): Specify install(TARGETS).
* CMakeLists.txt (gc): Likewise.
* CMakeLists.txt [enable_cplusplus] (gccpp): Likewise.
Ivan Maidanski [Wed, 19 Jun 2019 22:03:58 +0000 (01:03 +0300)]
.gitignore: Ignore libgccpp shared and static libraries generated by CMake
Ivan Maidanski [Wed, 19 Jun 2019 22:01:30 +0000 (01:01 +0300)]
Build gc_cpp.cc as gccpp library by CMake script
Issue #281 (bdwgc).
This matches the behavior of the Automake-based build script.
* CMakeLists.txt [enable_cplusplus] (SRC): Do not add gc_cpp.cc.
* CMakeLists.txt [enable_cplusplus] (gccpp): Specify add_library and
target_link_libraries.
* CMakeLists.txt [build_tests && enable_cplusplus] (test_cpp): Add gccpp
to target_link_libraries.
Ivan Maidanski [Wed, 19 Jun 2019 21:42:42 +0000 (00:42 +0300)]
Compile 'de' test GUI app with resources by CMake script
* CMakeLists.txt [build_tests && build_cord && WIN32] (de): Add
cord/tests/de_win.rc to add_executable specification.
Ivan Maidanski [Wed, 19 Jun 2019 20:49:22 +0000 (23:49 +0300)]
Fix 'cordtest: command not found' in Makefile.direct
(fix of commit
701ce8de2)
* Makefile.direct (check): Run ./cordtest instead of "cordtest".
Ivan Maidanski [Wed, 19 Jun 2019 20:44:20 +0000 (23:44 +0300)]
.gitignore: Ignore libcord shared and static libraries generated by CMake
Ivan Maidanski [Wed, 19 Jun 2019 20:41:38 +0000 (23:41 +0300)]
Fix 'unresolved external symbol _main' in gctest reported by MS VC
(fix of commit
78c458958)
Issue #281 (bdwgc).
* CMakeLists.txt [build_tests && enable_cplusplus] (test_cpp): Add WIN32
in add_executable specification.
Ivan Maidanski [Wed, 19 Jun 2019 08:48:40 +0000 (11:48 +0300)]
Build libcord by CMake script
Issue #281 (bdwgc).
* CMakeLists.txt [build_cord] (CORD_SRC): Set variable.
* CMakeLists.txt [build_cord] (cord): Specify add_library and
target_link_libraries; remove TODO.
* CMakeLists.txt [install_headers && build_cord] (cord/cord.h,
cord/cord_pos.h, cord/ec.h): Specify install.
* CMakeLists.txt [build_tests && build_cord] (cordtest, de): Do not
compile cord/cordbscs.c, cord/cordprnt.c, cord/cordxtra.c; add cord to
target_link_libraries specification.
Ivan Maidanski [Tue, 18 Jun 2019 22:36:08 +0000 (01:36 +0300)]
AppVeyor CI: Add CMake build with the default release configuration
Ivan Maidanski [Tue, 18 Jun 2019 22:34:23 +0000 (01:34 +0300)]
AppVeyor CI: Test CMake build with enable_large_config
Ivan Maidanski [Tue, 18 Jun 2019 22:26:10 +0000 (01:26 +0300)]
AppVeyor CI: Add CMake build with disabled shared libraries
Ivan Maidanski [Tue, 18 Jun 2019 21:18:27 +0000 (00:18 +0300)]
Generate cordtest and de executable files in GC base folder
This is to match the behavior of Automake- and CMake-based scripts.
* BCC_MAKEFILE (all, cord\de.exe): Rename cord\de.exe to de.exe.
* NT_MAKEFILE (all, cord\de.exe): Likewise.
* doc/README.win32: Likewise.
* Makefile.direct (cord/cordtest, clean, check): Rename cord/cordtest to
cordtest.
* SMakefile.amiga (all, clean, test, cord/cordtest): Likewise.
* Makefile.direct (cord/de): Rename cord/de to de$(EXEEXT); add cord/de
rule depending on de$(EXEEXT).
* Makefile.direct (clean): Rename cord/de to de.
* doc/README.cords: Likewise.
* OS2_MAKEFILE (all, cord\cordtest.exe): Rename cord\cordtest.exe to
cordtest.exe.
Ivan Maidanski [Tue, 18 Jun 2019 08:46:32 +0000 (11:46 +0300)]
Build gc as a shared library by default (CMake)
Issue #281 (bdwgc).
* CMakeLists.txt (BUILD_SHARED_LIBS): Document option and set default to ON.
* CMakeLists.txt: Remove commented out ADD_LIBRARY for atomic_ops.
* CMakeLists.txt [BUILD_SHARED_LIBS] (SRC): Override to extra/gc.c.
* CMakeLists.txt [BUILD_SHARED_LIBS] (GC_DLL): Define macro.
* CMakeLists.txt [!BUILD_SHARED_LIBS] (GC_NOT_DLL): Define macro not only
for tests but also for gc library.
* CMakeLists.txt (gc): Remove STATIC in add_library specification.
Ivan Maidanski [Tue, 18 Jun 2019 08:34:55 +0000 (11:34 +0300)]
Fix 'external linkage required for var because of dllimport' error on MinGW
* include/gc_config_macros.h [GC_DLL && !GC_API && !__CEGCC__
&& __MINGW32__ && !GC_BUILD && !__MINGW32_DELAY_LOAD__] (GC_API): Add
"extern" keyword.
Ivan Maidanski [Mon, 17 Jun 2019 07:51:11 +0000 (10:51 +0300)]
Enable test_cpp in CMake script
Issue #281 (bdwgc).
* CMakeLists.txt [enable_cplusplus] (test_cpp): Uncomment add_executable,
target_link_libraries, add_test; remove TODO.
Ivan Maidanski [Mon, 17 Jun 2019 07:18:52 +0000 (10:18 +0300)]
Fix building of shared library with C++ support on MinGW
* include/gc_config_macros.h [GC_DLL && !GC_API && __MINGW32__
&& GC_BUILD && __cplusplus] (GC_API): Add "extern" keyword.
Ivan Maidanski [Sat, 15 Jun 2019 12:30:32 +0000 (15:30 +0300)]
Move test executable files produced by CMake to the base folder
Issue #281 (bdwgc).
This is done by moving the content of cord/CMakeLists.txt and
tests/CMakeLists.txt files to the base CMakeLists.txt.
* CMakeLists.txt [build_tests && build_cord]: Move content from
cord/CMakeLists.txt.
* CMakeLists.txt [build_tests && build_cord] (cordtest, de): Add
"cord/" to .c files in add_executable.
* CMakeLists.txt [build_tests]: Move content from tests/CMakeLists.txt.
* CMakeLists.txt [build_tests] (gctest, hugetest, leaktest, middletest,
realloc_test, smashtest, tracetest, test_cpp, disclaim_bench,
disclaim_test, disclaim_weakmap_test, disclaim_weakmap_test): Add
"tests/" to .c and .cc files in add_executable.
* Makefile.am (EXTRA_DIST): Remove cord/CMakeLists.txt,
tests/CMakeLists.txt.
* doc/README.cmake: Update info about CMakeLists.txt files (there is
just one file now).
* cord/CMakeLists.txt: Remove file.
* tests/CMakeLists.txt: Likewise.
Victor Romero [Sat, 15 Jun 2019 10:52:08 +0000 (13:52 +0300)]
Rename libgc-lib.a to libgc.a in CMake script
Issue #281 (bdwgc).
Also specify that libgc.a is used privately in test executables.
* CMakeLists.txt (gc-lib): Rename library to gc in add_library and
set_target_properties.
* cord/CMakeLists.txt [build_tests] (cordtest, de): Rename gc-lib to gc
and add PRIVATE in target_link_libraries.
* tests/CMakeLists.txt (gctest, hugetest, leaktest, middletest,
realloc_test, smashtest): Likewise.
* tests/CMakeLists.txt [enable_gc_debug] (tracetest): Likewise.
* tests/CMakeLists.txt [enable_disclaim] (disclaim_bench,
disclaim_test, disclaim_weakmap_test): Likewise.
Ivan Maidanski [Fri, 14 Jun 2019 07:40:09 +0000 (10:40 +0300)]
Remove gcmt-dll generation by CMake
Issue #281 (bdwgc).
Now only gc-lib is produced.
* CMakeLists.txt (gcmt-dll): Remove add_library command.
Ivan Maidanski [Fri, 14 Jun 2019 07:36:48 +0000 (10:36 +0300)]
Remove gcmt-lib generation by CMake
Because of an incorrect definition, gcmt-lib was identical to gc-lib.
* CMakeLists.txt (gcmt-lib): Remove add_library and
set_target_properties commands.
Ivan Maidanski [Fri, 14 Jun 2019 07:12:47 +0000 (10:12 +0300)]
Restrict CMake project to C-only language unless enable_cplusplus
Issue #281 (bdwgc).
* CMakeLists.txt (enable_cplusplus): Move option to above project
command.
* CMakeLists.txt [!enable_cplusplus] (project): Specify C as the only
project language.
Ivan Maidanski [Thu, 13 Jun 2019 22:09:15 +0000 (01:09 +0300)]
Fix gc_cpp.cc compilation by CMake if enable_single_obj_compilation
(fix of commit
17885ab0b)
Issue #281 (bdwgc).
* CMakeLists.txt [enable_cplusplus] (SRC): Add gc_cpp.cc after SRC
overridden to extra/gc.c (not before) if enable_single_obj_compilation.
Ivan Maidanski [Thu, 13 Jun 2019 08:02:15 +0000 (11:02 +0300)]
.gitignore: Ignore CMake-generated libgc.dll.a
Ivan Maidanski [Tue, 11 Jun 2019 07:09:21 +0000 (10:09 +0300)]
Remove unnecessary checks of __ELF__ for NaCl
(code refactoring of commit
9738a14a0)
* dyn_load.c [NACL]: Assume __ELF__ is always defined.
Ivan Maidanski [Tue, 11 Jun 2019 06:37:20 +0000 (09:37 +0300)]
.gitignore: Ignore CMake-generated libgc.a
Ivan Maidanski [Tue, 11 Jun 2019 06:36:09 +0000 (09:36 +0300)]
Update AUTHORS file (add Maya Rashish)
Maya Rashish [Thu, 6 Jun 2019 02:43:51 +0000 (05:43 +0300)]
Get rid of some non-ELF ifdefs
(code refactoring)
Issue #283 (bdwgc).
Linux started switching to ELF in 1995 (Linux-2.0), due to the previous
a.out being really bad.
NetBSD has used ELF since 2002 (NetBSD 1.6), it's OK to let it go now.
FreeBSD switched to ELF in FreeBSD 3.0 (1998).
* include/private/gcconfig.h [(POWERPC || SPARC || MIPS || ALPHA
|| AARCH64 || ARM32 || X86_64) && FREEBSD] (DYNAMIC_LOADING): Define
regardless of __ELF__ (assuming __ELF__ is always defined).
* include/private/gcconfig.h [(ARM32 || X86_64 || HEXAGON) && LINUX]
(DYNAMIC_LOADING, SEARCH_FOR_DATA_START, DATASTART, DATAEND): Likewise.
* include/private/gcconfig.h [X86_64 && NETBSD] (DATASTART,
DYNAMIC_LOADING): Likewise.
Peter Wang [Thu, 6 Jun 2019 07:36:54 +0000 (17:36 +1000)]
Fix mmap(PROT_NONE) failure on AIX
Issue #285 (bdwgc).
Unmap memory using mprotect(PROT_NONE) instead of mmap(PROT_NONE) on AIX.
* os_dep [USE_MUNMAP && AIX] (GC_unmap, GC_unmap_gap): Call mprotect()
instead of mmap(); update comment.
Ivan Maidanski [Fri, 7 Jun 2019 18:33:32 +0000 (21:33 +0300)]
Add CMake option to compile all library .c files into single object file
Issue #281 (bdwgc).
* CMakeLists.txt (enable_single_obj_compilation): New option (off by
default).
* CMakeLists.txt [enable_single_obj_compilation] (SRC): Override value
to extra/gc.c.
* CMakeLists.txt [enable_single_obj_compilation
&& CMAKE_USE_PTHREADS_INIT]: Define GC_PTHREAD_START_STANDALONE macro.
* CMakeLists.txt [enable_single_obj_compilation
&& CMAKE_USE_PTHREADS_INIT] (SRC): Append pthread_start.c (in addition
to extra/gc.c).
Victor Romero [Fri, 7 Jun 2019 07:35:31 +0000 (10:35 +0300)]
Fix build for OS X (CMake)
Issue #275 (bdwgc).
Having "ppc" in CMAKE_OSX_ARCHITECTURES fails the build on Mac
OS X 10.13, at least.
* CMakeLists.txt [APPLE && $CMAKE_OSX_ARCHITECTURES==""]
(CMAKE_OSX_ARCHITECTURES): Set to "x86_64;i386" (instead of
"ppc;i386;x86_64").
Victor Romero [Fri, 7 Jun 2019 06:40:20 +0000 (09:40 +0300)]
Define _CRT_SECURE_NO_DEPRECATE macro in CMake script only for MS VC
(fix of commit
f5006fcc5)
Issue #281 (bdwgc).
* CMakeLists.txt (add_definitions): Define _CRT_SECURE_NO_DEPRECATE
only if MSVC (instead of WIN32).
Victor Romero [Fri, 7 Jun 2019 06:34:27 +0000 (09:34 +0300)]
Support header files installation in CMake script
Issue #281 (bdwgc).
Now, "cmake --target install" copies the public header files (to the
installation destination) unless -Dinstall_headers=OFF is passed to
cmake.
* CMakeLists.txt (install_headers): New option (on by default).
* CMakeLists.txt [install_headers] (include/gc.h, include/gc_backptr.h,
include/gc_config_macros.h, include/gc_gcj.h, include/gc_inline.h,
include/gc_mark.h, include/gc_pthread_redirects.h,
include/gc_tiny_fl.h, include/gc_typed.h, include/gc_version.h,
include/javaxfc.h, include/leak_detector.h): Specify install to
"include/gc" folder.
* CMakeLists.txt [install_headers && enable_cplusplus]
(include/gc_allocator.h, include/gc_cpp.h): Likewise.
* CMakeLists.txt [install_headers && enable_disclaim]
(include/gc_disclaim.h): Likewise.
* CMakeLists.txt [install_headers] (include/extra/gc.h): Specify
install to "include" folder.
* CMakeLists.txt [install_headers && enable_cplusplus]
(include/extra/gc_cpp.h): Likewise.
Ivan Maidanski [Thu, 6 Jun 2019 07:29:56 +0000 (10:29 +0300)]
Appveyor CI: Turn on build_test and enable_cplusplus for CMake
Victor Romero [Thu, 6 Jun 2019 07:24:28 +0000 (10:24 +0300)]
Do not build the tests by default (CMake)
Issue #281 (bdwgc).
build_cord and build_tests options are introduced in the CMake script.
* CMakeLists.txt (build_cord): Add option (on by default); add comment.
* CMakeLists.txt (build_tests): Add option (off by default).
* CMakeLists.txt (cord): Specify add_subdirectory only if build_cord.
* CMakeLists.txt (tests): Specify add_subdirectory only if build_tests.
* cord/CMakeLists.txt: Skip cordtest and de tests unless build_tests.
Peter Wang [Thu, 6 Jun 2019 02:48:17 +0000 (12:48 +1000)]
Fix 'ulong undefined' compilation error on AIX
* include/gc.h [_AIX] (GC_DATASTART, GC_DATAEND): Remove cast to ulong.
Ivan Maidanski [Thu, 6 Jun 2019 06:48:19 +0000 (09:48 +0300)]
Appveyor CI: Pass --build-config to ctest again
(fix of commit
906280234)
Ivan Maidanski [Thu, 6 Jun 2019 06:40:06 +0000 (09:40 +0300)]
Add cordtest to CMake script and rename cord/cord executable to cord/de
Issue #281 (bdwgc).
* cord/CMakeLists.txt (cordtest): Specify add_executable,
set_target_properties, target_link_libraries and add_test.
* cord/CMakeLists.txt [WIN32] (cord): Rename executable to de.
Ivan Maidanski [Wed, 5 Jun 2019 08:50:29 +0000 (11:50 +0300)]
.gitignore: Ignore CMake-generated files in cord folder
Ivan Maidanski [Wed, 5 Jun 2019 08:25:32 +0000 (11:25 +0300)]
Move CMake cord specification and cord executable to cord folder
Issue #281 (bdwgc).
* CMakeLists.txt [WIN32]: Move add_executable, set_target_properties,
target_link_libraries for cord to cord/CMakeLists.txt.
* CMakeLists.txt (cord): Specify add_subdirectory.
* Makefile.am (EXTRA_DIST): Add cord/CMakeLists.txt.
* cord/CMakeLists.txt: New file.
Victor Romero [Wed, 5 Jun 2019 07:49:30 +0000 (10:49 +0300)]
Define _CRT_SECURE_NO_DEPRECATE macro in CMake script only for Win32
Issue #281 (bdwgc).
* CMakeLists.txt (add_definitions): Define _CRT_SECURE_NO_DEPRECATE
only if WIN32.
Ivan Maidanski [Wed, 5 Jun 2019 07:02:28 +0000 (10:02 +0300)]
Add tracetest and disclaim tests to CMake script
Issue #281 (bdwgc).
* tests/CMakeLists.txt [enable_gc_debug] (tracetest): Specify
add_executable, target_link_libraries, add_test.
* tests/CMakeLists.txt [enable_disclaim] (disclaim_bench,
disclaim_test, disclaim_weakmap_test): Likewise.
Ivan Maidanski [Wed, 5 Jun 2019 06:53:15 +0000 (09:53 +0300)]
Turn off C++ API in CMake script by default
Issue #281 (bdwgc).
This is to match the behavior of configure script.
Now, -Denable_cplusplus=ON should be passed to cmake to enable C++ API.
* CMakeLists.txt (enable_cplusplus): Add option (off by default);
remove TODO.
* CMakeLists.txt (SRC): Add gc_cpp.cc only if enable_cplusplus.
* tests/CMakeLists.txt (leak_test.c, test.c): Set CXX langunage
property only if enable_cplusplus.
* tests/CMakeLists.txt [enable_cplusplus]: Add TODO to add test_cpp as
a test.
Ivan Maidanski [Tue, 4 Jun 2019 20:20:43 +0000 (23:20 +0300)]
Support enable_sigrt_signals option by CMake script
Issue #281 (bdwgc).
* CMakeLists.txt (enable_sigrt_signals): Add option (default to OFF).
* CMakeLists.txt [CMAKE_USE_PTHREADS_INIT && enable_sigrt_signals]:
Define GC_USESIGRT_SIGNALS macro.
Ivan Maidanski [Tue, 4 Jun 2019 08:02:18 +0000 (11:02 +0300)]
Appveyor CI: Pass CMAKE_OPTIONS to cmake only when configuring
Ivan Maidanski [Tue, 4 Jun 2019 07:08:57 +0000 (10:08 +0300)]
.gitignore: Ignore libgcmt-dll.dll.a (produced by CMake)
Ivan Maidanski [Fri, 31 May 2019 06:26:35 +0000 (09:26 +0300)]
Travis CI: Output content of threadleaktest.log
Ivan Maidanski [Thu, 30 May 2019 22:07:39 +0000 (01:07 +0300)]
Update AUTHORS file (add Victor Romero)
Victor Romero [Thu, 30 May 2019 22:05:25 +0000 (01:05 +0300)]
Group all options near the top of CMake script
(code refactoring)
Issue #281 (bdwgc).
* CMakeLists.txt (option): Group all items together close to the
beginning of the file; reorder items to match that of configure.
Victor Romero [Thu, 30 May 2019 19:26:26 +0000 (12:26 -0700)]
Upgrade cmake_minimum_required(version) to 3.1
Issue #281 (bdwgc).
* CMakeLists.txt (CMAKE_LEGACY_CYGWIN_WIN32): Remove (do not set).
* CMakeLists.txt (VERSION): Change cmake_minimum_required from 2.6
to 3.1.
Ivan Maidanski [Thu, 30 May 2019 20:57:46 +0000 (23:57 +0300)]
Fix 'GC_old_bus_handler defined but not used' compiler warning
* os_dep.c [!DARWIN && !MSWIN32 && !MSWINCE] (GC_old_bus_handler):
Define variable only if FREEBSD or HPUX, or HURD, or LINUX.
* os_dep.c [!DARWIN && !MSWIN32 && !MSWINCE && (HPUX || HURD
|| FREEBSD)] (GC_dirty_init): Do not set GC_old_bus_handler_used_si
to FALSE (because it is already initialized to FALSE).
Ivan Maidanski [Thu, 30 May 2019 19:53:12 +0000 (22:53 +0300)]
New API standalone functions to acquire and release the allocator lock
Issue #282 (bdwgc).
Public GC_alloc_lock() and GC_alloc_unlock() are introduced to simplify
dealing with the GC lock compared to GC_call_with_alloc_lock().
* include/gc.h [GC_THREADS] (GC_alloc_lock, GC_alloc_unlock): Declare
new API function.
* include/gc.h [!GC_THREADS] (GC_alloc_lock, GC_alloc_unlock): Define
as a no-op macro.
* misc.c [THREADS] (GC_alloc_lock, GC_alloc_unlock): Define API
function.
* tests/test.c (reachable_objs_count_enumerator): Remove function.
* tests/test.c (check_heap_stats): Call GC_alloc_lock(); call
GC_enumerate_reachable_objects_inner() directly; call GC_alloc_unlock().
Ivan Maidanski [Thu, 30 May 2019 06:55:26 +0000 (09:55 +0300)]
Rename NO values to OFF in CMake script
(code refactoring)
This is to better distinguish them from ON values.
* CMakeLists.txt (enable_threads, enable_gc_debug,
enable_redirect_malloc, enable_mmap, enable_large_config,
enable_gc_assertions, enable_checksums): Change NO to OFF.
Ivan Maidanski [Thu, 30 May 2019 06:17:54 +0000 (09:17 +0300)]
Workaround 'checking if unsigned i < 0' cppcheck FP in is_heap_base
* os_dep.c [MSWIN32 || MSWINCE || CYGWIN32] (GC_is_heap_base): Change
type for i local variable from unsigned to int; cast GC_n_heap_bases to
int.
Ivan Maidanski [Wed, 29 May 2019 20:52:27 +0000 (23:52 +0300)]
Eliminate 'struct member os_callback is never used' cppcheck warning
* os_dep.c [MPROTECT_VDB && DARWIN && CPPCHECK] (GC_dirty_init): Call
GC_noop1(GC_ports.os_callback[0]).
Ivan Maidanski [Wed, 29 May 2019 20:46:41 +0000 (23:46 +0300)]
Fix 'unused function GC_add_map_entry' compiler warning
* include/private/gc_priv.h (GC_add_map_entry): Declare only if
MARK_BIT_PER_GRANULE.
Ivan Maidanski [Wed, 29 May 2019 08:16:04 +0000 (11:16 +0300)]
Fix 'unused function GC_lock' compiler warning
* include/private/gc_locks.h [GC_PTHREADS && !USE_SPIN_LOCK] (GC_lock):
Declare only if USE_PTHREAD_LOCKS and (GC_ASSERTIONS or
not NO_PTHREAD_TRYLOCK).
* pthread_support.c [!USE_SPIN_LOCK] (GC_lock): Define only if
USE_PTHREAD_LOCKS and (not NO_PTHREAD_TRYLOCK or GC_ASSERTIONS).
Ivan Maidanski [Mon, 27 May 2019 19:58:41 +0000 (22:58 +0300)]
Define STATIC macro to static by default
This is reduce number of internal symbols exposed outside GC.
* include/private/gcconfig.h [!STATIC] (STATIC): Define to empty only
if GC_ASSERTIONS (regardless of NO_DEBUGGING); update comment.
Ivan Maidanski [Mon, 27 May 2019 19:00:59 +0000 (22:00 +0300)]
Use lowercase naming of commands in CMake scripts
(code refactoring)
* CMakeLists.txt: Convert all commands from uppercase to lowercase.
* tests/CMakeLists.txt: Likewise.
* CMakeLists.txt: Reformat the whole file (indent is 2 spaces).
Ivan Maidanski [Thu, 23 May 2019 07:47:00 +0000 (10:47 +0300)]
Workaround spurious gctest exit in incremental mode on Cygwin
(fix of commit
fa7f7a72b)
* include/private/gcconfig.h [I386 && CYGWIN32 && !USE_WINALLOC]
(MPROTECT_VDB): Do not define; add comment.
* include/private/gcconfig.h [X86_64 && CYGWIN32 && !USE_WINALLOC
&& THREAD_LOCAL_ALLOC] (MPROTECT_VDB): Likewise.
Ivan Maidanski [Fri, 17 May 2019 18:38:01 +0000 (21:38 +0300)]
Update ChangeLog file
Ivan Maidanski [Fri, 17 May 2019 18:22:38 +0000 (21:22 +0300)]
Update ChangeLog file (v8.0 changes)
Ivan Maidanski [Fri, 17 May 2019 17:55:47 +0000 (20:55 +0300)]
Update ChangeLog file (v7.6 changes)
Ivan Maidanski [Fri, 17 May 2019 10:52:55 +0000 (13:52 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)
Jasper Lievisse Adriaanse [Thu, 16 May 2019 20:42:49 +0000 (23:42 +0300)]
Use __data_start instead of _fdata on OpenBSD/mips64
(fix of commit
d79f09665)
* include/private/gcconfig.h [MIPS && OPENBSD] (__data_start): Declare
extern variable (instead of _fdata).
* include/private/gcconfig.h [MIPS && OPENBSD] (DATASTART): Use
__data_start.
Ivan Maidanski [Wed, 15 May 2019 08:03:27 +0000 (11:03 +0300)]
Update AUTHORS file (add Jasper Lievisse Adriaanse)
Jasper Lievisse Adriaanse [Sat, 27 Jun 2015 13:21:29 +0000 (13:21 +0000)]
Fix word size and alignment for OpenBSD/mips64(el)
* include/private/gcconfig.h [MIPS && OPENBSD] (CPP_WORDSZ): Define
macro; add comment.
* include/private/gcconfig.h [MIPS && OPENBSD] (ALIGNMENT): Define to 8
(instead of 4).
Ivan Maidanski [Wed, 15 May 2019 07:30:38 +0000 (10:30 +0300)]
Update AUTHORS file (add Christian Weisgerber)
Christian Weisgerber [Sat, 15 Apr 2017 14:02:46 +0000 (14:02 +0000)]
Add support of OpenBSD/aarch64
* include/private/gcconfig.h [__aarch64__ && !LINUX && !DARWIN
&& !FREEBSD && !NETBSD] (NOSYS): Do not define if OPENBSD.
* include/private/gcconfig.h [OPENBSD && __aarch64__] (AARCH64,
mach_type_known): Define.
* include/private/gcconfig.h [AARCH64 && OPENBSD] (OS_TYPE, ELF_CLASS,
DATASTART, DATAEND, DYNAMIC_LOADING): Define macro.
* include/private/gcconfig.h [AARCH64 && OPENBSD
&& !GC_OPENBSD_THREADS]: Include sys/param.h, uvm/uvm_extern.h.
* include/private/gcconfig.h [AARCH64 && OPENBSD
&& !GC_OPENBSD_THREADS && USRSTACK] (STACKBOTTOM): Define macro.
* include/private/gcconfig.h [AARCH64 && OPENBSD
&& !GC_OPENBSD_THREADS && !USRSTACK] (HEURISTIC2): Define macro.
* include/private/gcconfig.h [AARCH64 && OPENBSD] (__data_start, _end):
Declare extern variable.
Ivan Maidanski [Mon, 6 May 2019 09:07:49 +0000 (12:07 +0300)]
Update AUTHORS file (add Brian J. Cardiff)
Brian J. Cardiff [Mon, 6 May 2019 09:06:12 +0000 (12:06 +0300)]
Add API functions to get and set the stack bottom of each thread
Issue #277 (bdwgc).
This API is useful to support coroutines.
* include/gc.h (GC_get_my_stackbottom, GC_set_stackbottom): New API
function declaration.
* misc.c [!THREADS] (GC_set_stackbottom, GC_get_my_stackbottom): New
function definition.
* pthread_support.c [GC_PTHREADS && !GC_WIN32_THREADS]
(GC_set_stackbottom, GC_get_my_stackbottom): Likewise.
* win32_threads.c [GC_WIN32_THREADS] (GC_set_stackbottom,
GC_get_my_stackbottom): Likewise.
* tests/test.c (struct thr_hndl_sb_s): Define.
* tests/test.c (set_stackbottom): New function (which calls
GC_set_stackbottom).
* tests/test.c (run_one_test): Define thr_hndl_sb local variable;
call GC_get_my_stackbottom() and set_stackbottom().
* win32_threads.c [GC_WIN32_THREADS && I386] (struct GC_Thread_Rep):
Add initial_stack_base field.
* win32_threads.c [GC_WIN32_THREADS && I386] (GC_record_stack_base,
GC_call_with_gc_active): Set initial_stack_base field.
* win32_threads.c [GC_WIN32_THREADS && I386] (GC_push_stack_for): Handle
the case when GetThreadContext() might return stale register values,
thread stack_base != initial_stack_base but the stack is not inside
the TIB stack (use context.Esp but call WARN); add TODO.
Ivan Maidanski [Mon, 29 Apr 2019 06:44:42 +0000 (09:44 +0300)]
Fix first_thread stack_base initialzation if custom GC_stackbottom (Win32)
Stack bottom value of the primordial thread should be obtained from
GC_stackbottom.
* win32_threads.c [GC_ASSERTIONS] (GC_thr_init): Remove sb_result local
variable.
* win32_threads.c (GC_thr_init): Initalize sb mem_base and reg_base
fields with GC_stackbottom and GC_register_stackbottom, respectively;
do not call GC_get_stack_base().
Ivan Maidanski [Fri, 26 Apr 2019 16:03:42 +0000 (19:03 +0300)]
Replace 'stack base' with 'stack bottom' in the documentation
* README.md (The C Interface to the Allocator): Outline that stack base
means its bottom; remove a note that client should set GC_stackbottom
on HP PA machines manually.
* doc/README.macros (USE_GET_STACKBASE_FOR_MAIN): Rename "stack base"
to "stack bottom".
* doc/porting.md (Adding Platforms to gcconfig.h): Likewise.
* doc/porting.md (Adding Platforms to gcconfig.h): Rename
"cool end of the stack" to "cold end of the stack"; refine
documentation about STACKBOTTOM.
* include/private/gcconfig.h (STACKBOTTOM): Rename "cool end" to
"cold end" in comment.
* include/gc.h (GC_stackbottom): Likewise.
* include/private/gcconfig.h (LINUX_STACKBOTTOM): Rename "stack base"
to "stack bottom" in comment.
* include/gc.h (GC_stack_base, GC_call_with_stack_base): Likewise.
* include/gc.h [GC_THREADS] (GC_register_my_thread): Likewise.
* misc.c [!THREADS] (GC_call_with_gc_active): Likewise.
* os_dep.c [LINUX_STACKBOTTOM] (GC_linux_main_stack_base): Likewise.
* os_dep.c (GC_get_stack_base): Likewise.
* pthread_support.c (GC_call_with_gc_active): Likewise.
* win32_threads.c (GC_call_with_gc_active): Likewise.
Ivan Maidanski [Fri, 26 Apr 2019 07:23:16 +0000 (10:23 +0300)]
Fix the stack bottom variable name in README
* README.md (The C Interface to the Allocator): Fix a typo
("GC_stackbottom").
Ivan Maidanski [Thu, 25 Apr 2019 07:28:40 +0000 (10:28 +0300)]
Refine do_blocking() documentation in gc.h
* include/gc.h (GC_do_blocking): Refine comment (copy part of comment
from misc.c, add information that GC should be initialized and the
current thread should be registered).
* misc.c (GC_do_blocking): Remove title comment (as it duplicates the
one in gc.h).
Ivan Maidanski [Thu, 25 Apr 2019 07:16:00 +0000 (10:16 +0300)]
Add assertion that GC is initialized to base incremental_protection_needs
* os_dep.c [!HAVE_INCREMENTAL_PROTECTION_NEEDS]
(GC_incremental_protection_needs): Call GC_ASSERT(GC_is_initialized).
Ivan Maidanski [Thu, 25 Apr 2019 07:04:02 +0000 (10:04 +0300)]
Explicitly zero-initialize trace_buf
* mark.c [TRACE_BUF] (GC_trace_buf): Initialize to all zeros.
Ivan Maidanski [Thu, 25 Apr 2019 06:54:13 +0000 (09:54 +0300)]
Check real-symbols are already initialized in pthread_join/detach
* pthread_support.c (ASSERT_SYMS_INITIALIZED): New macro (checks either
GC_syms_initialized or parallel_initialized depending on
GC_USE_DLOPEN_WRAP).
* pthread_support.c [!SN_TARGET_ORBIS && !SN_TARGET_PSP2] (pthread_join,
pthread_detach): Call ASSERT_SYMS_INITIALIZED() instead of
INIT_REAL_SYMS().
Ivan Maidanski [Tue, 23 Apr 2019 19:21:54 +0000 (22:21 +0300)]
Workaround 'duplicate expression for condition and assignment' cppcheck FP
The entitled cppcheck warnings are false positives.
* alloc.c (GC_should_collect): Move reassignment of the global variable
which is checked in the conditional expression to the end of the
conditional block statement.
* finalize.c (GC_notify_or_invoke_finalizers): Likewise.
* mark.c [WRAP_MARK_SOME] (GC_mark_some): Likewise.
Ivan Maidanski [Mon, 22 Apr 2019 21:44:52 +0000 (00:44 +0300)]
Fix save_callers for multi-threaded case if built-in backtrace unavailable
GC_stackbottom could be used only in the single-threaded case.
* os_dep.c [SAVE_CALL_CHAIN && (NARGS!=0 || NFRAMES%2!=0
|| !GC_HAVE_BUILTIN_BACKTRACE) && THREADS] (GC_save_callers): Do not
compare fp to GC_stackbottom.
* os_dep.c [SAVE_CALL_CHAIN && (NARGS!=0 || NFRAMES%2!=0
|| !GC_HAVE_BUILTIN_BACKTRACE) && THREADS && STACK_GROWS_UP]
(GC_save_callers): Break the loop if fp is NULL.
Ivan Maidanski [Fri, 19 Apr 2019 05:07:52 +0000 (08:07 +0300)]
Remove Win32 main_thread static variable if threads discovery is disabled
(code refactoring)
* win32_threads.c (GC_main_thread): Do not define static variable if
GC_NO_THREADS_DISCOVERY.
* win32_threads.c [!GC_NO_THREADS_DISCOVERY] (GC_attached_thread):
Reformat comment; move the definition to be near GC_please_stop.
* win32_threads.c [GC_NO_THREADS_DISCOVERY] (GC_thr_init): Define
GC_main_thread as a macro (and undefine it at the end of the function).
Ivan Maidanski [Wed, 17 Apr 2019 19:43:16 +0000 (22:43 +0300)]
Simplify logged message in scratch_recycle
* mark.c (GC_scratch_recycle_inner): Do not pass bytes variable to
GC_COND_LOG_PRINTF().
Ivan Maidanski [Tue, 16 Apr 2019 21:52:59 +0000 (00:52 +0300)]
Enable true incremental collection even if parallel marker is on
Issue #151 (bdwgc).
Because of the current limitation of the parallel marker implementation,
it is not possible to interrupt the collection when performed by the
parallel marker. This change allows to have the true incremental mode
at the expense of disabling the parallel marker during most collection
phases. By default, the old behavior (a generational collection with
the parallel marker enabled) is preserved unless the client sets
GC_time_limit to a value other than GC_TIME_UNLIMITED.
* alloc.c [(!GC_TIME_LIMIT || CPPCHECK) && PARALLEL_MARK]
(GC_time_limit): Set to GC_TIME_UNLIMITED; add comment.
* alloc.c [PARALLEL_MARK] (GC_collect_a_little_inner): Temporarily
set GC_parallel_mark_disabled to TRUE before GC_mark_some repeated
invocation if GC_time_limit is not GC_TIME_UNLIMITED.
* alloc.c [PARALLEL_MARK] (GC_stopped_mark): Temporarily set
GC_parallel_mark_disabled to TRUE before GC_mark_some repeated
invocation if stop_func is not GC_never_stop_func; add verbose logging
if parallel marking is disabled temporarily.
* doc/README.environment (GC_PAUSE_TIME_TARGET): Update the description
(remove the limitation for the case when parallel marking is on).
* doc/scale.md (The Parallel Marking Algorithm): Update the
documentation regarding incremental mode.
* include/gc.h (GC_parallel, GC_enable_incremental): Update the comment
(remove the limitation on the incremental mode when parallel marking
is on).
* include/private/gc_priv.h [PARALLEL_MARK] (GC_parallel_mark_disabled):
Declare global variable.
* mark.c [PARALLEL_MARK] (GC_parallel_mark_disabled): Define.
* mark.c [PARALLEL_MARK] (GC_mark_some_inner): Do not call
GC_do_parallel_mark() if GC_parallel_mark_disabled; update comment.
* pthread_support.c [PARALLEL_MARK] (GC_thr_init): Do not set
GC_time_limit to GC_TIME_UNLIMITED if available_markers_m1 > 0; remove
comment.
* win32_threads.c [PARALLEL_MARK] (GC_thr_init): Likewise.
Ivan Maidanski [Tue, 16 Apr 2019 07:19:53 +0000 (10:19 +0300)]
Comments reformatting in mark.c to properly delimit sentences
(code refactoring)
* mark.c (GC_clear_hdr_marks, clear_marks_for_block, GC_set_mark_bit,
GC_clear_marks, GC_initiate_gc, GC_mark_from, alloc_mark_stack,
GC_push_all, GC_push_all_eager, GC_push_marked1, GC_push_marked2,
GC_push_marked4): Add training dot to comment sentences (where missing);
capitalize the first letter of comment sentences (where needed);
reformat some comments.
* mark.c [WRAP_MARK_SOME] (GC_mark_some): Likewise.
* mark.c [PARALLEL_MARK] (GC_do_parallel_mark, GC_help_wanted,
GC_helper_count, GC_active_count, GC_steal_mark_stack, GC_mark_local):
Likewise.
* mark.c [!GC_DISABLE_INCREMENTAL] (GC_push_next_marked_dirty):
Likewise.
Ivan Maidanski [Tue, 16 Apr 2019 06:29:42 +0000 (09:29 +0300)]
Simplify loops of collect_a_little/stopped_mark invoking mark_some
(code refactoring)
* alloc.c (GC_collect_a_little_inner, GC_stopped_mark): If
GC_mark_some() returns true then just break to quit the loop; move the
logic that is needed to funish the collection outside the loop.
* alloc.c (GC_stopped_mark): Change i local variable type from unsigned
to int.