platform/upstream/libgc.git
4 years agoWorkaround 'redundant initialization for r' cppcheck false positive
Ivan Maidanski [Tue, 10 Sep 2019 20:35:14 +0000 (23:35 +0300)]
Workaround 'redundant initialization for r' cppcheck false positive

* mark.c (GC_mark_and_push_stack): Replace "if(a&&b)" with
"if(a) if(b)" where b is an expression which contains r variable
assignment.

4 years agoWorkaround 'cnt var assigned but not used' cppcheck FP in copy_ptr_regs
Ivan Maidanski [Tue, 10 Sep 2019 20:28:15 +0000 (23:28 +0300)]
Workaround 'cnt var assigned but not used' cppcheck FP in copy_ptr_regs
(fix of commit 912ec408d)

* win32_threads.c [!I386 && !X86_64 && !ARM32 && !AARCH64 && !SHx
&& !MIPS && !PPC && !ALPHA && CPPCHECK] (copy_ptr_regs): Set sp to cnt
value (with a cast); add comment.

4 years agoRemove redundant check of GC_free argument in register_finalizer
Ivan Maidanski [Tue, 10 Sep 2019 20:09:29 +0000 (23:09 +0300)]
Remove redundant check of GC_free argument in register_finalizer
(code refactoring)

This also works around "Argument new_fo to function GC_free is always 1"
cppcheck false positive.

* finalize.c [!DBG_HDRS_ALL] (GC_register_finalizer_inner): Do not
check new_fo is non-NULL before GC_free(new_fo) call.

4 years agoReplace push_one calls with push_many_regs one for Win32 thread context
Ivan Maidanski [Tue, 10 Sep 2019 08:09:42 +0000 (11:09 +0300)]
Replace push_one calls with push_many_regs one for Win32 thread context
(code refactoring)

Also, do not define GC_push_one except for Darwin (and some ancient
targets that use the function).

* include/private/gc_priv.h [MSWIN32 || MSWINCE] (GC_push_one): Do not
declare.
* include/private/gc_priv.h [!MSWIN32 && !MSWINCE] (GC_push_one):
Declare only if AMIGA or MACOS or GC_DARWIN_THREADS.
* include/private/gc_priv.h [GC_WIN32_THREADS] (GC_push_many_regs):
Declare function; add comment.
* mark.c (GC_push_one): Define only if AMIGA or MACOS or
GC_DARWIN_THREADS.
* mark.c [GC_WIN32_THREADS] (GC_push_many_regs): New GC_INNER function.
* win32_threads.c (GC_push_stack_for): Remove i local variable; call
GC_push_many_regs() instead of a loop with GC_push_one() calls (ignore
2 first registers if WOW64_THREAD_CONTEXT_WORKAROUND).

4 years agoFix incorrect code generation by MS VC caused by excessive Thread_Rep size
Ivan Maidanski [Tue, 10 Sep 2019 08:01:09 +0000 (11:01 +0300)]
Fix incorrect code generation by MS VC caused by excessive Thread_Rep size
(fix of commit 449eda034)

The gctest crashes were observed in debug builds produced by MS VC.

In addition, this change greatly reduces memory usage by GC_threads[]
and dll_thread_table[] (compared to the solution that stores the full
CONTEXT in GC_Thread_Rep).

* win32_threads.c (copy_ptr_regs): Declare static function.
* win32_threads.c (PUSHED_REGS_COUNT): Define macro.
* win32_threads.c [RETRY_GET_THREAD_CONTEXT]
(GC_Thread_Rep.saved_context): Move down to be the last field; change
type from CONTEXT to word[PUSHED_REGS_COUNT]; rename to context_regs.
* win32_threads.c [RETRY_GET_THREAD_CONTEXT]
(GC_Thread_Rep.context_sp): New field.
* win32_threads.c [RETRY_GET_THREAD_CONTEXT] (GC_suspend): Declare
context local variable and use it for GetThreadContext() call; if the
latter succeeds then call copy_ptr_regs(); update comment.
* win32_threads.c (copy_ptr_regs): Define static function (move
PUSH-related part of GC_push_stack_for code here); change PUSH1(reg) to
store reg to regs[]; define context as *pcontext; add assertion that
number of stored registers is equal to PUSHED_REGS_COUNT.
* win32_threads.c [WOW64_THREAD_CONTEXT_WORKAROUND] (copy_ptr_regs):
Store ContextFlags and SegFs as the first elements of regs[].
* win32_threads.c (GC_push_stack_for): Declare i local variable (set
to 0).
* win32_threads.c [RETRY_GET_THREAD_CONTEXT] (GC_push_stack_for):
Replace pcontext and context with word *regs; set sp from
thread->context_sp; remove undef context.
* win32_threads.c [!RETRY_GET_THREAD_CONTEXT] (GC_push_stack_for):
Declare regs[PUSHED_REGS_COUNT]; call copy_ptr_regs() to initialize
regs[] and sp; limit context scope to GetThreadContext() and
copy_ptr_regs() calls only.
* win32_threads.c (GC_push_stack_for): Call GC_push_one() for each
regs[] element (except for the first 2 ones if
WOW64_THREAD_CONTEXT_WORKAROUND).
* win32_threads.c [WOW64_THREAD_CONTEXT_WORKAROUND]
(GC_push_stack_for): Define ContextFlags, SegFs local variables
(the values are obtained from regs[]); use these variables instead of
context one; do not overwrite sp local variable value so that not to
use context.Esp directly (i.e. not to use context out of its scope).

4 years agoAppVeyor CI: Test mingw64 build with -D NO_RETRY_GET_THREAD_CONTEXT
Ivan Maidanski [Thu, 5 Sep 2019 09:17:04 +0000 (12:17 +0300)]
AppVeyor CI: Test mingw64 build with -D NO_RETRY_GET_THREAD_CONTEXT

4 years agoPrevent GetThreadContext failure (Windows)
Jonathan Chambers [Thu, 5 Sep 2019 09:15:35 +0000 (12:15 +0300)]
Prevent GetThreadContext failure (Windows)
(a cherry-pick of commits 3f39ea8, ab3699da from 'unity-master')

Calls to GetThreadContext may fail.  Work around this by putting
access in suspend/resume loop to advance thread past problematic areas
where suspend fails.  Capture context in per thread structure at
suspend time rather than retreiving it during the push logic.

* include/private/gcconfig.h [(I386 || X86_64) && (CYGWIN32 || MSWIN32)]
(RETRY_GET_THREAD_CONTEXT): Define macro.
* win32_threads.c [RETRY_GET_THREAD_CONTEXT]
(MAX_SUSPEND_THREAD_RETRIES): Likewise.
* include/private/gcconfig.h [NO_RETRY_GET_THREAD_CONTEXT]
(RETRY_GET_THREAD_CONTEXT): Undefine macro (for test purposes).
* win32_threads.c [RETRY_GET_THREAD_CONTEXT] (GC_Thread_Rep): Add
saved_context field; add comment.
* win32_threads.c [RETRY_GET_THREAD_CONTEXT] (GC_suspend): Define
retry_cnt local variable; set ContextFlags and call GetThreadContext()
after invocation of SuspendThread(); call ResumeThread() and proceed to
SuspendThread() if GetThreadContext() failed (the limit of iterations
is MAX_SUSPEND_THREAD_RETRIES); call Sleep(0) after ResumeThread() or
failed SuspendThread() except for the first 2 iterations.
* win32_threads.c [RETRY_GET_THREAD_CONTEXT] (GC_push_stack_for):
Declare pcontext local variable (which refers to thread->saved_context);
define context as a macro (to *pcontext) instead of a local variable;
add comment; do not set ContextFlags and do not call GetThreadContext();
undefine context after last use of PUSHn().

4 years agoRefactoring of WoW64 workaround (Win32)
Ivan Maidanski [Thu, 5 Sep 2019 08:44:27 +0000 (11:44 +0300)]
Refactoring of WoW64 workaround (Win32)
(code refactoring of commit 9483d5bba)

Issue #262 (bdwgc).

* include/private/gcconfig.h [I386 && (CYGWIN32 || MSWIN32)]
(WOW64_THREAD_CONTEXT_WORKAROUND): Define macro.
* win32_threads.c [!CONTEXT_EXCEPTION_ACTIVE] (CONTEXT_EXCEPTION_ACTIVE,
CONTEXT_EXCEPTION_REQUEST, CONTEXT_EXCEPTION_REPORTING): Move macro
definition upper to be before GC_suspend(); define only if
WOW64_THREAD_CONTEXT_WORKAROUND is defined (instead of I386).
* win32_threads.c (isWow64): Move static variable upper to be before
GC_suspend(); define only if WOW64_THREAD_CONTEXT_WORKAROUND.
* win32_threads.c (GET_THREAD_CONTEXT_FLAGS): New macro.
* win32_threads.c (GC_push_stack_for): Always set context.ContextFlags
to GET_THREAD_CONTEXT_FLAGS.
* win32_threads.c [I386] (GC_push_stack_for): Always store context.Esp
to sp (as the initial value).
* win32_threads.c (GC_push_stack_for): Use WoW64 workaround only
if WOW64_THREAD_CONTEXT_WORKAROUND (instead of I386).
* win32_threads.c (GC_thr_init): Set isWow64 only if
WOW64_THREAD_CONTEXT_WORKAROUND (instead of I386).

4 years agoDefine OS_TYPE and DATAEND for UWP targets
Ivan Maidanski [Wed, 4 Sep 2019 06:03:14 +0000 (09:03 +0300)]
Define OS_TYPE and DATAEND for UWP targets
(fix of commit 1471f940e9)

* include/private/gcconfig.h [AARCH64 && MSWIN32] (OS_TYPE, DATAEND):
Define macro; add TODO about GWW_VDB and MPROTECT_VDB.
* include/private/gcconfig.h [ARM32 && MSWIN32] (OS_TYPE, DATAEND):
Likewise.

4 years agoPrevent WARN of incompatible incremental GC if default or manual VDB
Ivan Maidanski [Thu, 29 Aug 2019 21:46:43 +0000 (00:46 +0300)]
Prevent WARN of incompatible incremental GC if default or manual VDB

Incremental GC based on mprotect is considered incompatible with /proc
roots but the default and manual VDB modes are OK.

* mark.c [WRAP_MARK_SOME && !MSWIN32 && !MSWINCE] (GC_mark_some):
Do not WARN about incompatibility of incremental GC with /proc roots
if DEFAULT_VDB or GC_auto_incremental is false (i.e. manual VDB is on).

4 years agoDisable mprotect-based incremental GC if /proc roots are used (Linux)
Ivan Maidanski [Thu, 29 Aug 2019 21:28:23 +0000 (00:28 +0300)]
Disable mprotect-based incremental GC if /proc roots are used (Linux)

The incremental GC is considered incompatible with /proc roots.

* include/private/gcconfig.h [USE_PROC_FOR_LIBRARIES
&& GC_LINUX_THREADS] (MPROTECT_VDB): Undefine; add comment.

4 years agoFix a typo in GC_init comment
Ivan Maidanski [Thu, 29 Aug 2019 05:36:03 +0000 (08:36 +0300)]
Fix a typo in GC_init comment

* misc.c [USE_PROC_FOR_LIBRARIES && GC_LINUX_THREADS] (GC_init): Fix
typo in comment ("will").

4 years agoUpdate ChangeLog file
Ivan Maidanski [Tue, 27 Aug 2019 06:55:17 +0000 (09:55 +0300)]
Update ChangeLog file

4 years agoUpdate ChangeLog file (v8.0 changes)
Ivan Maidanski [Mon, 26 Aug 2019 21:16:58 +0000 (00:16 +0300)]
Update ChangeLog file (v8.0 changes)

4 years agoUpdate ChangeLog file (v7.6 changes)
Ivan Maidanski [Mon, 26 Aug 2019 19:36:53 +0000 (22:36 +0300)]
Update ChangeLog file (v7.6 changes)

4 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Mon, 26 Aug 2019 06:46:26 +0000 (09:46 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

4 years agoTravis CI: Test cmake build w/o threads, test it w/o shared libs on OS X
Ivan Maidanski [Thu, 22 Aug 2019 22:27:58 +0000 (01:27 +0300)]
Travis CI: Test cmake build w/o threads, test it w/o shared libs on OS X

4 years agoAppVeyor CI: Test cmake build with "DllMain to track threads"
Ivan Maidanski [Thu, 22 Aug 2019 22:19:48 +0000 (01:19 +0300)]
AppVeyor CI: Test cmake build with "DllMain to track threads"

4 years agoEnable multi-threaded builds by CMake
Ivan Maidanski [Thu, 22 Aug 2019 22:14:25 +0000 (01:14 +0300)]
Enable multi-threaded builds by CMake

Now, enable_threads option is on by default.

* CMakeLists.txt (enable_threads): Change option default to ON; remove
TODO item; set proper option message.
* CMakeLists.txt (libatomic_ops/src): Specify include directory only
if enable_threads.
* CMakeLists.txt (LIBS): Rename to THREADDLLIBS.
* CMakeLists.txt [enable_threads]: Change message level and content.
* CMakeLists.txt [enable_threads] (THREADDLLIBS): Set to
CMAKE_THREAD_LIBS_INIT value (instead of Threads_LIBRARIES).
* CMakeLists.txt [enable_threads && !(APPLE || CYGWIN || MSYS || WIN32
|| HOST MATCHES mips-.*-irix6.*)] (THREADDLLIBS): Append -ldl; add
comment.
* CMakeLists.txt [Threads_FOUND]: Remove commented out code.
* CMakeLists.txt [CMAKE_USE_PTHREADS_INIT]: Update comments; remove
TODO items.
* CMakeLists.txt [CMAKE_USE_PTHREADS_INIT
&& (HOST MATCHES .*-.*-hpux10.*)]: Change message level to fatal error.
* CMakeLists.txt [CMAKE_USE_PTHREADS_INIT] (GC_BUILTIN_ATOMIC): Define
C macro; add comment.
* CMakeLists.txt [CMAKE_USE_PTHREADS_INIT] (GC_THREADS, _REENTRANT):
Define C macro unconditionally.
* CMakeLists.txt [CMAKE_USE_PTHREADS_INIT && !ANDROID && !MSYS
&& !APPLE && enable_handle_fork] (HANDLE_FORK): Define C macro.
* CMakeLists.txt [CMAKE_USE_WIN32_THREADS_INIT
&& enable_thread_local_alloc && !enable_parallel_mark]
(THREAD_LOCAL_ALLOC): Do not define if BUILD_SHARED_LIBS; add comment.
* CMakeLists.txt [CMAKE_HP_PTHREADS_INIT || CMAKE_USE_SPROC_INIT]:
Fatal error message.
* CMakeLists.txt [enable_gcj_support && enable_threads]
(GC_ENABLE_SUSPEND_THREAD): Do not define if enable_thread_local_alloc
and host is kfreebsd; add FIXME item.
* CMakeLists.txt [enable_threads] (gc): Specify THREADDLLIBS as target
link libraries.
* CMakeLists.txt [build_tests] (gctest): Likewise.
* CMakeLists.txt [build_tests && enable_disclaim] (disclaim_test,
disclaim_weakmap_test): Likewise.
* CMakeLists.txt [build_tests && enable_threads] (test_atomic_ops,
threadleaktest, subthreadcreate_test, initsecondarythread_test):
Specify test executable.
* CMakeLists.txt [build_tests && enable_threads && !WIN32]
(threadkey_test): Likewise.

4 years agoRefactoring of CMake script to use ANDROID/APPLE/CYGWIN/MSYS variables
Ivan Maidanski [Thu, 22 Aug 2019 20:30:34 +0000 (23:30 +0300)]
Refactoring of CMake script to use ANDROID/APPLE/CYGWIN/MSYS variables

* CMakeLists.txt [CMAKE_USE_PTHREADS_INIT]: Replace
"HOST MATCHES .*-.*-android.*", "HOST MATCHES .*-.*-cygwin.*",
"HOST MATCHES .*-.*-darwin.*", "HOST MATCHES .*-.*-msys.*" with
ANDROID, CYGWIN, APPLE and MSYS variables, respectively; add comment
that ANDROID is defined only starting from cmake-3.7.0; remove
commented out darwin_threads variable assignment.

4 years agoCode refactoring of MAKE_BACK_GRAPH definition in CMake script
Ivan Maidanski [Thu, 22 Aug 2019 07:40:23 +0000 (10:40 +0300)]
Code refactoring of MAKE_BACK_GRAPH definition in CMake script
(refactoring of commit 32479d59c)

* CMakeLists.txt [enable_gc_debug] (MAKE_BACK_GRAPH, SRC): Remove
duplicate definition.

4 years agoFix cmake_minimum_required specification
Ivan Maidanski [Wed, 21 Aug 2019 21:56:22 +0000 (00:56 +0300)]
Fix cmake_minimum_required specification
(fix of commit e7dd50d19)

Otherwise CMake issues a warning about unset CMAKE_LEGACY_CYGWIN_WIN32
on Cygwin.

* CMakeLists.txt (cmake_minimum_required): Move the specification to
the top of the file.

4 years agoFix HOST determination in CMake script
Ivan Maidanski [Wed, 21 Aug 2019 21:48:30 +0000 (00:48 +0300)]
Fix HOST determination in CMake script

As per the configure script, HOST variable value should identify the
target, not build host.

* CMakeLists.txt (HOST): Set variable before find_package(Threads);
change message type to STATUS; report ${HOST} value as "TARGET".
* CMakeLists.txt (_HOST): Use CMAKE_SYSTEM_PROCESSOR instead
of CMAKE_HOST_SYSTEM_PROCESSOR; specify vendor as "unknown" (instead
of empty string); remove FIXME.

4 years agoCause fatal error in case of incompatible arguments passed to CMake script
Ivan Maidanski [Wed, 21 Aug 2019 21:38:42 +0000 (00:38 +0300)]
Cause fatal error in case of incompatible arguments passed to CMake script

* CMakeLists.txt [enable_checksums && (enable_munmap
|| enable_threads)]: Change message() type to FATAL_ERROR.

4 years agoFix tests build by CMake on Cygwin
Ivan Maidanski [Wed, 21 Aug 2019 08:52:23 +0000 (11:52 +0300)]
Fix tests build by CMake on Cygwin

* CMakeLists.txt [build_tests && WIN32] (de): Do not specify and add
"de" test executable if CYGWIN.

4 years agoAdd staticrootstest to CMake script
Ivan Maidanski [Wed, 21 Aug 2019 08:38:09 +0000 (11:38 +0300)]
Add staticrootstest to CMake script

* CMakeLists.txt [build_tests && !(BUILD_SHARED_LIBS && WIN32)]
(staticrootslib_test, staticrootslib2_test): Add library specification.
* CMakeLists.txt [build_tests && !(BUILD_SHARED_LIBS && WIN32)]
(staticrootstest): Add executable and test specification.
* CMakeLists.txt [build_tests && !(BUILD_SHARED_LIBS && WIN32)]
(staticrootslib2_test, staticrootstest): Specify target compile option.

4 years agoFix subexpression widening in memhash() of disclaim_weakmap_test
Ivan Maidanski [Wed, 21 Aug 2019 08:31:52 +0000 (11:31 +0300)]
Fix subexpression widening in memhash() of disclaim_weakmap_test
(fix of commit 0cc2c0e7e)

It would be more correct to widen the argument (from unsigned to
GC_word) of multiply operation instead of implicit widening of the
result.

* tests/disclaim_weakmap_test.c (memhash): Cast acc to GC_word before
multiplying by 2003; cast the whole expression to unsigned type (before
assigning it to acc).

4 years agoEliminate 'conversion from size_t to int' MSVC warning in cordprnt.c
Ivan Maidanski [Wed, 21 Aug 2019 08:13:36 +0000 (11:13 +0300)]
Eliminate 'conversion from size_t to int' MSVC warning in cordprnt.c

* cord/cordprnt.c (ec_len): Cast the expression to int explicitly.

4 years agoEliminate 'conversion from size_t to int' MSVC warning in subthread_create
Ivan Maidanski [Wed, 21 Aug 2019 08:08:11 +0000 (11:08 +0300)]
Eliminate 'conversion from size_t to int' MSVC warning in subthread_create
(fix of commit 0ccf1379e)

* tests/subthread_create.c [AO_HAVE_fetch_and_add1] (entry): Cast
result of AO_fetch_and_add1() to int explicitly.

4 years agoWorkaround 'condition (pred&1)==0 is always false' cppcheck false positive
Ivan Maidanski [Wed, 14 Aug 2019 09:42:08 +0000 (12:42 +0300)]
Workaround 'condition (pred&1)==0 is always false' cppcheck false positive

* backgraph.c [MAKE_BACK_GRAPH] (add_edge): Pass pred value via
COVERT_DATAFLOW() in ((word)pred&1)==0.

4 years agoFix 'condition pred!=NULL is always true' compiler warning
Ivan Maidanski [Wed, 14 Aug 2019 09:32:52 +0000 (12:32 +0300)]
Fix 'condition pred!=NULL is always true' compiler warning

Duplicate check of pred!=NULL is removed in add_edge.

* backgraph.c [MAKE_BACK_GRAPH] (add_edge): Remove pred!=NULL.

4 years agoTravis CI: Test CMake builds
Ivan Maidanski [Tue, 13 Aug 2019 08:19:52 +0000 (11:19 +0300)]
Travis CI: Test CMake builds

4 years agoFix gc_allocator.h compilation by Clang
Ivan Maidanski [Tue, 13 Aug 2019 08:05:06 +0000 (11:05 +0300)]
Fix gc_allocator.h compilation by Clang

Issue #273 (bdwgc).

Though clang may report __cplusplus as 201402L, it seems to be not
C++11 compliant fully.

* include/gc_allocator.h [!GC_ATTR_EXPLICIT && __clang__ && !CPPCHECK]
(GC_ATTR_EXPLICIT): Define to empty (instead of "explicit").
* tests/test_cpp.cc [!GC_ATTR_EXPLICIT && __clang__ && !CPPCHECK]
(GC_ATTR_EXPLICIT): Likewise.

4 years agoEliminate 'treating c input as c++ when in C++ mode' Clang warning (CMake)
Ivan Maidanski [Tue, 13 Aug 2019 07:48:28 +0000 (10:48 +0300)]
Eliminate 'treating c input as c++ when in C++ mode' Clang warning (CMake)

* CMakeLists.txt [build_tests && enable_cplusplus
&& !(BORLAND || MSVC || WATCOM)]: Add "-x c++" compile option.

4 years agoFix 'wrong finalization data' gctest failure on Windows
Ivan Maidanski [Fri, 2 Aug 2019 18:21:59 +0000 (21:21 +0300)]
Fix 'wrong finalization data' gctest failure on Windows
(fix of commit aefc738c1)

Issue #289 (bdwgc).

This commit workarounds some bug in MS compiler for x86 (v19.10.25017,
as of now) which causes generation of an incorrect code for
GC_normal_finalize_mark_proc() if code optimizations are on.

* finalize.c [_MSC_VER && I386] (GC_normal_finalize_mark_proc): Inline
GC_push_obj() manually; add comment.

4 years agoAppVeyor CI: Print .gc.log on gctest failure for mingw-shared-no-make
Ivan Maidanski [Tue, 30 Jul 2019 23:25:04 +0000 (02:25 +0300)]
AppVeyor CI: Print .gc.log on gctest failure for mingw-shared-no-make

4 years agoAppVeyor CI: Fix passing -D NO_MSGBOX_ON_ERROR to cmake build
Ivan Maidanski [Tue, 30 Jul 2019 23:07:47 +0000 (02:07 +0300)]
AppVeyor CI: Fix passing -D NO_MSGBOX_ON_ERROR to cmake build
(fix of commit a401e5475)

Space after -D is removed; %CFLAGS_EXTRA% are surrounded with double
quotes.

4 years agoFix passing CFLAGS_EXTRA to compiler in CMake script
Ivan Maidanski [Tue, 30 Jul 2019 23:01:57 +0000 (02:01 +0300)]
Fix passing CFLAGS_EXTRA to compiler in CMake script
(fix of commit b6ac6a5a4)

The previous solution does not work for MS VC target.

* CMakeLists.txt [CFLAGS_EXTRA] (CMAKE_C_FLAGS, CMAKE_CXX_FLAGS): Do
not set.
* CMakeLists.txt [CFLAGS_EXTRA]: Pass $(CFLAGS_EXTRA) to
add_compile_options.

4 years agoAppVeyor CI: Do not pass -v to cmake
Ivan Maidanski [Tue, 30 Jul 2019 22:17:05 +0000 (01:17 +0300)]
AppVeyor CI: Do not pass -v to cmake
(revert of commit 127d8be34)

Option -v is not supported by the cmake version on AppVeyor.

4 years agoAppVeyor CI: Pass -D NO_MSGBOX_ON_ERROR to CMake (MS VC) and MinGW builds
Ivan Maidanski [Tue, 30 Jul 2019 21:44:06 +0000 (00:44 +0300)]
AppVeyor CI: Pass -D NO_MSGBOX_ON_ERROR to CMake (MS VC) and MinGW builds

This prevents showing a dialog window on GC fatal errors.

4 years agoAppVeyor CI: Turn on verbose mode during cmake build
Ivan Maidanski [Tue, 30 Jul 2019 21:33:20 +0000 (00:33 +0300)]
AppVeyor CI: Turn on verbose mode during cmake build

4 years agoSupport CFLAGS_EXTRA to pass extra user-defined compiler flags (CMake)
Ivan Maidanski [Tue, 30 Jul 2019 08:40:57 +0000 (11:40 +0300)]
Support CFLAGS_EXTRA to pass extra user-defined compiler flags (CMake)

* CMakeLists.txt [CFLAGS_EXTRA] (CMAKE_C_FLAGS): Append $(CFLAGS_EXTRA).
* CMakeLists.txt [CFLAGS_EXTRA && enable_cplusplus] (CMAKE_CXX_FLAGS):
Likewise.

4 years agoFix test_cpp failure caused by arbitrary link order (Win32)
Ivan Maidanski [Fri, 26 Jul 2019 18:35:30 +0000 (21:35 +0300)]
Fix test_cpp failure caused by arbitrary link order (Win32)
(fix of commit 4a08ae983)

* Makefile.direct (test_cpp): Pass -D GC_NOT_DLL to $(CC) (except for
HP UX case).
* configure.ac [($enable_shared=no || $enable_static=yes)
&& $host=*-*-cygwin*|*-*-mingw*|*-*-msys*] (CXXFLAGS): Add
-D GC_NOT_DLL; add comment.

4 years agoPass -D GC_DLL -fvisibility=hidden if default configure build is requested
Ivan Maidanski [Fri, 26 Jul 2019 18:24:18 +0000 (21:24 +0300)]
Pass -D GC_DLL -fvisibility=hidden if default configure build is requested
(fix of commit c9964cfc0)

If --disable-shared and --enable-static are not passed to configure
then build generates only shared libraries, thus the internal symbols
visibility could be restricted.

* configure.ac [$enable_shared="" && $enable_static!=yes
|| $enable_shared=yes && $enable_static==""] (GC_DLL): Define AC macro.
* configure.ac [($enable_shared="" && $enable_static!=yes
|| $enable_shared=yes && $enable_static=="") && $GCC=yes
&& $ac_cv_fvisibility_hidden=yes] (CFLAGS): Add
-DGC_VISIBILITY_HIDDEN_SET -fvisibility=hidden.

4 years agoAppVeyor CI: Add builds based on NT_MAKEFILE
Ivan Maidanski [Thu, 25 Jul 2019 21:51:27 +0000 (00:51 +0300)]
AppVeyor CI: Add builds based on NT_MAKEFILE

4 years agoEliminate 'conversion from int to void*' MS VC warning in cordtest (x64)
Ivan Maidanski [Thu, 25 Jul 2019 21:28:09 +0000 (00:28 +0300)]
Eliminate 'conversion from int to void*' MS VC warning in cordtest (x64)

* cord/tests/cordtest.c (test_fn, test_basics): Cast 13 to void* thru
GC_word type.

4 years agoWorkaround 'typedef ignored on left of' MSVC warning in imagehlp.h (CMake)
Ivan Maidanski [Thu, 25 Jul 2019 07:07:58 +0000 (10:07 +0300)]
Workaround 'typedef ignored on left of' MSVC warning in imagehlp.h (CMake)

* CMakeLists.txt [enable_werror && MSVC]: Add /wd4091 compile option;
add comment.

4 years agoAppVeyor CI: Remove building redundant check-cpp target of Makefile.direct
Ivan Maidanski [Wed, 24 Jul 2019 22:39:48 +0000 (01:39 +0300)]
AppVeyor CI: Remove building redundant check-cpp target of Makefile.direct

Now check executes test_cpp, so check-cpp is a redundant target.

4 years agoTravis CI: Remove building redundant check-cpp target of Makefile.direct
Ivan Maidanski [Wed, 24 Jul 2019 22:19:54 +0000 (01:19 +0300)]
Travis CI: Remove building redundant check-cpp target of Makefile.direct

Now check executes test_cpp, so check-cpp is a redundant target.

4 years agoCompile gc.c unless building static libraries (NT_MAKEFILE, WCC_MAKEFILE)
Ivan Maidanski [Wed, 24 Jul 2019 21:55:22 +0000 (00:55 +0300)]
Compile gc.c unless building static libraries (NT_MAKEFILE, WCC_MAKEFILE)

This is to match the behavior of CMake and configure scripts.

* NT_MAKEFILE [!ENABLE_STATIC] (OBJS): Set to extra\gc.obj,
extra\msvc_dbg.obj.
* WCC_MAKEFILE (OBJS): Define only if ENABLE_STATIC.
* WCC_MAKEFILE [!ENABLE_STATIC] (gc.obj): New target.
* WCC_MAKEFILE [!ENABLE_STATIC] (gc.dll): Depend on and append gc.obj
instead of $(OBJS) elements.

4 years agoBuild cord.lib by Makefile.direct, NT_MAKEFILE, OS2_MAKEFILE, WCC_MAKEFILE
Ivan Maidanski [Wed, 24 Jul 2019 08:11:29 +0000 (11:11 +0300)]
Build cord.lib by Makefile.direct, NT_MAKEFILE, OS2_MAKEFILE, WCC_MAKEFILE

Note: Makefile.direct builds cord.a (not libcord.a or cord.lib).

* Makefile.direct: Update header comment about all and cords targets.
* Makefile.direct (all): Depend also on cords.
* Makefile.direct (cord.a): New target (duplicates cords target).
* Makefile.direct (cords): Do not depend on base_lib; create cord.a
instead of updating gc.a.
* Makefile.direct (cordtest, de): Depend on cords instead of
$(CORD_OBJS); pass cord.a (instead of $(CORD_OBJS)) to $(CC).
* NT_MAKEFILE (CFLAGS_MT): Move variable definition (which uses cvarsmt) to
be after CORDFLAG one.
* NT_MAKEFILE (CORDFLAG, COBJS): New variable.
* WCC_MAKEFILE (CORDFLAG, COBJS): Likewise.
* NT_MAKEFILE [!ENABLE_STATIC] (cvarsmt): Set variable value to empty;
add comment.
* NT_MAKEFILE (all): Depend also on cord.lib.
* OS2_MAKEFILE (all): Likewise.
* WCC_MAKEFILE (all): Likewise.
* NT_MAKEFILE (check): Depend also on cordtest.exe; run also cordtest.
* WCC_MAKEFILE (check): Likewise.
* NT_MAKEFILE (.c.obj): Remove -DCORD_NOT_DLL; add $(CORDFLAG).
* NT_MAKEFILE (cord.lib, cordtest.exe): New target.
* OS2_MAKEFILE (cord.lib, cordtest.exe, clean): Likewise.
* WCC_MAKEFILE (cord.lib, cordtest.exe, cordbscs.obj, cordxtra.obj,
cordprnt.obj, cordtest.obj): Likewise.
* WCC_MAKEFILE [!ENABLE_STATIC] (cord.dll): Likewise.
* NT_MAKEFILE (de.exe): Depend on cord.lib instead of cordbscs.obj and
cordxtra.obj.
* NT_MAKEFILE (clean): Delete cordtst*.tmp files; delete *.lib, *.dll,
and *.exp files instead of gc*.lib, gc*.dll, gc*.exp, cord\*.exe,
cord\*.exp, cord\*.lib, cord\*.pdb.
* README.md (Installation and Portability): Update information about
"make cords".

4 years agoFix gccpp.lib dependency in NT_MAKEFILE
Ivan Maidanski [Tue, 23 Jul 2019 21:51:35 +0000 (00:51 +0300)]
Fix gccpp.lib dependency in NT_MAKEFILE
(fix of commit 4a08ae983)

Also, update README that Makefile.direct creates cord.a now (instead
of adding cord files to gc.a).

* NT_MAKEFILE [!ENABLE_STATIC] (gccpp.lib): Add dependency on gc.lib.
* README.QUICK (INSTALLATION): Update information about "make cords".

4 years ago.gitignore: Ignore all *.a files in the base folder
Ivan Maidanski [Tue, 23 Jul 2019 21:42:21 +0000 (00:42 +0300)]
.gitignore: Ignore all *.a files in the base folder

4 years agoCompile msvc_dbg.c by CMake script (MS VC)
Ivan Maidanski [Mon, 22 Jul 2019 06:53:32 +0000 (09:53 +0300)]
Compile msvc_dbg.c by CMake script (MS VC)

* CMakeLists.txt [MSVC] (SRC): Add extra/msvc_dbg.c; add comment.

4 years agoReplace _M_AMD64 macro with _M_X64
Ivan Maidanski [Mon, 22 Jul 2019 06:40:29 +0000 (09:40 +0300)]
Replace _M_AMD64 macro with _M_X64
(code refactoring)

Also, adjust strcat_s usage in msvc_dbg.c.

* extra/msvc_dbg.c [_MSC_VER]: Check _M_X64 instead of _M_AMD64.
* tests/test.c [CPPCHECK && _MSC_VER] (main): Likewise.
* extra/msvc_dbg.c [_M_X64 && _MSC_VER<1200] (GetModuleBase): Use
strcat() instead of strcat_s().

4 years agoRename make_as_lib option to enable_static in NT_MAKEFILE and WCC_MAKEFILE
Ivan Maidanski [Fri, 19 Jul 2019 21:44:38 +0000 (00:44 +0300)]
Rename make_as_lib option to enable_static in NT_MAKEFILE and WCC_MAKEFILE

This is to match the behavior of CMake script.

* NT_MAKEFILE: Update header comment (rename make_as_lib to
enable_static).
* NT_MAKEFILE (MAKE_AS_LIB): Rename to ENABLE_STATIC.
* WCC_MAKEFILE (MAKE_AS_DLL): Remove (check "ndef ENABLE_STATIC"
instead).
* WCC_MAKEFILE (MAKE_AS_LIB): Rename to ENABLE_STATIC; update comment.
* doc/README.win32 (Microsoft Tools): Rename make_as_lib to
enable_static.
* doc/README.win64: Likewise.

4 years agoBuild shared libraries by default (WCC_MAKEFILE)
Ivan Maidanski [Fri, 19 Jul 2019 18:27:34 +0000 (21:27 +0300)]
Build shared libraries by default (WCC_MAKEFILE)

This is to match the behavior of CMake script.

* WCC_MAKEFILE (MAKE_AS_DLL): Uncomment.
* WCC_MAKEFILE (MAKE_AS_LIB): Comment out.

4 years agoRename nothreads option to disable_threads in NT_MAKEFILE
Ivan Maidanski [Fri, 19 Jul 2019 18:17:18 +0000 (21:17 +0300)]
Rename nothreads option to disable_threads in NT_MAKEFILE

* NT_MAKEFILE: Change nothreads=1 to disable_threads=1 in the header
comment.
* NT_MAKEFILE (CFLAGS_MT): Rename NOTHREADS to DISABLE_THREADS.
* doc/README.win32 (Microsoft Tools): Change nothreads=1 to
disable_threads=1.
* doc/README.win64: Likewise.

4 years agoBuild gccpp library by Makefile.direct, NT_MAKEFILE and WCC_MAKEFILE
Ivan Maidanski [Fri, 19 Jul 2019 17:42:38 +0000 (20:42 +0300)]
Build gccpp library by Makefile.direct, NT_MAKEFILE and WCC_MAKEFILE

* Makefile.direct: Update header comment about all, gc.a (base_lib),
c++, check, check-cpp targets.
* Makefile.direct (CXX): Refine comment.
* Makefile.direct (all): Depend also on c++.
* Makefile.direct (bsd-libgccpp.a): New target (duplicates bsd-libgc.a
one).
* Makefile.direct (bsd-libgc.a): Add a rename of gccpp.a to
bsd-libgccpp.a.
* Makefile.direct (BSD-pkg-install): Copy bsd-libgccpp.a file to
libgccpp.a, install the latter one.
* Makefile.direct (test_cpp): Depend on c++ instead of gc_cpp.o; pass
gccpp.a (instead of gc_cpp.o) to $(CXX).
* Makefile.direct (gccpp.a): New target (duplicates c++ one).
* Makefile.direct (c++): Do not depend on gc_cpp.h and base_lib;
create gccpp.a instead of updating gc.a.
* Makefile.direct (clean): Delete *.a files instead of gc.a.
* Makefile.direct (check): Depend also on test_cpp$(EXEEXT); run also
test_cpp.
* NT_MAKEFILE (LINK_GC, LINK_DLL_FLAGS): Remove variable.
* NT_MAKEFILE (OBJS): Remove gc_cpp.obj.
* NT_MAKEFILE (all, test_cpp.exe): Depend also on gccpp.lib.
* WCC_MAKEFILE (all, test_cpp.exe): Likewise.
* NT_MAKEFILE (gccpp.lib): New target (depending on gc_cpp.obj).
* WCC_MAKEFILE (gccpp.lib): Likewise.
* WCC_MAKEFILE [MAKE_AS_DLL] (gccpp.dll): Likewise.
* NT_MAKEFILE (test_cpp.exe): Pass gccpp.lib to $(link).
* WCC_MAKEFILE [MAKE_AS_LIB] (MAKE_AS_LIB): Set to -DGC_NOT_DLL.
* WCC_MAKEFILE (gc.lib): Do not depend gc_cpp.obj.
* WCC_MAKEFILE [MAKE_AS_DLL] (gc.lib): Do not add gc_cpp.obj to gc.lib.
* WCC_MAKEFILE [MAKE_AS_DLL] (gc.dll): Specify "op case".

4 years agoUpdate README.cmake regarding Unix, C++ and tests
Ivan Maidanski [Wed, 17 Jul 2019 08:52:26 +0000 (11:52 +0300)]
Update README.cmake regarding Unix, C++ and tests

Issue #105 (bdwgc).

* doc/README.cmake: Mention that Unix targets are also supported;
remove not that support is not yet complete; update the list of
supported targets (that CMake is able to generate for); use Visual
Studio 9 instead of Visual Studio 8 in the examples; document
enable_cplusplus and build_tests options; provide an example with
--config option; change "build" artifacts folder to "out" one in
the example.

4 years agoRemove gc.mak script (MS VC)
Ivan Maidanski [Wed, 17 Jul 2019 08:39:26 +0000 (11:39 +0300)]
Remove gc.mak script (MS VC)

Issue #105 (bdwgc).

CMake script or NT_MAKEFILE should be used instead of gc.mak.

* ChangeLog (8.1.0): Remove item about gc.mak.
* Makefile.am (EXTRA_DIST): Remove gc.mak.
* gc.mak: Remove file.
* doc/README.win32 (Threads): Remove gc.mak usage information; mention
that CMake script is the preferred way of building for Windows.

4 years ago.gitattributes: Update after BCC_MAKEFILE removal
Ivan Maidanski [Wed, 17 Jul 2019 07:31:46 +0000 (10:31 +0300)]
.gitattributes: Update after BCC_MAKEFILE removal

Issue #105 (bdwgc).

4 years agoRemove Borland-specific Makefile (BCC_MAKEFILE)
Ivan Maidanski [Wed, 17 Jul 2019 07:29:36 +0000 (10:29 +0300)]
Remove Borland-specific Makefile (BCC_MAKEFILE)

Issue #105 (bdwgc).

CMake script should be used instead of BCC_MAKEFILE.

* BCC_MAKEFILE: Remove file.
* Makefile.am (EXTRA_DIST): Remove BCC_MAKEFILE.
* doc/README.win32 (Borland Tools): Remove "rarely tested" note; change
BCC_MAKEFILE to cmake -G "Borland Makefiles"; remove note that
Borland 5.5 is assumed.

4 years agoEnable CMake-based build for Borland and Watcom compilers
Ivan Maidanski [Wed, 17 Jul 2019 07:08:12 +0000 (10:08 +0300)]
Enable CMake-based build for Borland and Watcom compilers

Issue #105 (bdwgc).

* CMakeLists.txt [BORLAND] (add_compile_options): Specify /a4 and
/w /w-pro /w-aus /w-par /w-ccc /w-inl /w-rch; add comment.
* CMakeLists.txt [WATCOM] (add_compile_options): Specify /zp4 and /wx.
* CMakeLists.txt [enable_werror && BORLAND] (add_compile_options):
Specify /w!.
* CMakeLists.txt [enable_werror && WATCOM] (add_compile_options):
Specify /we.
* CMakeLists.txt [!enable_single_obj_compilation && !BUILD_SHARED_LIBS
&& BORLAND] (add_compile_options): Specify /w-use; add comment.
* CMakeLists.txt [build_tests && WATCOM] (gctest): Specify /wcd=13
/wcd=201 /wcd=367 /wcd=368 /wcd=726 target compile options; add comment.
* doc/README.win32 (Watcom compiler): Mention that OpenWatcom 2.0 is
tested on; remove note that cord is not ported; add note about the
new way to build the collector using CMake script.

4 years agoFix a typo in control_chars() comment in de_win.c
Ivan Maidanski [Tue, 16 Jul 2019 22:13:18 +0000 (01:13 +0300)]
Fix a typo in control_chars() comment in de_win.c

* cord/tests/de_win.c (control_chars): Replace "32" to "64" in comment.

4 years agoEliminate 'conversion may lose significant digits' BCC warning in de_win
Ivan Maidanski [Tue, 16 Jul 2019 21:44:29 +0000 (00:44 +0300)]
Eliminate 'conversion may lose significant digits' BCC warning in de_win

* cord/tests/de_win.c (control_chars): Cast text[i]+0x40 to char.

4 years agoEliminate 'comparing signed and unsigned values' BCC warning in cordtest
Ivan Maidanski [Tue, 16 Jul 2019 21:37:51 +0000 (00:37 +0300)]
Eliminate 'comparing signed and unsigned values' BCC warning in cordtest

* cord/tests/cordtest.c (test_basics): Cast (unsigned char)c to size_t.

4 years agoSuppress warnings in test_tinyfl() of gctest reported by Watcom C complier
Ivan Maidanski [Tue, 16 Jul 2019 07:34:48 +0000 (10:34 +0300)]
Suppress warnings in test_tinyfl() of gctest reported by Watcom C complier

* WCC_MAKEFILE (test.obj): Pass /wcd=13 /wcd=201 /wcd=367 /wcd=368
options to $(CC).

4 years agoFix typo in SMakefile filename in README
Ivan Maidanski [Tue, 16 Jul 2019 07:29:08 +0000 (10:29 +0300)]
Fix typo in SMakefile filename in README

* doc/README.amiga (WHATS NEW): Change SMakefile.smk to SMakefile.amiga.

4 years agoWorkaround 'expression is only useful for its side effects' WCC warning
Ivan Maidanski [Mon, 15 Jul 2019 06:24:04 +0000 (09:24 +0300)]
Workaround 'expression is only useful for its side effects' WCC warning

* include/ec.h (CORD_ac_append): Cast result of ternary operator to
void.

4 years agoFix test_cpp fail when gc_cpp resides in a dll (Borland, Watcom)
Ivan Maidanski [Tue, 9 Jul 2019 08:41:18 +0000 (11:41 +0300)]
Fix test_cpp fail when gc_cpp resides in a dll (Borland, Watcom)

* include/gc_cpp.h [(__BORLANDC__ || __WATCOMC__) && !GC_BUILD
&& !GC_NOT_DLL && GC_OPERATOR_NEW_ARRAY] (new[], delete[]): Define
inline operator.
* include/gc_cpp.h [(__BORLANDC__ || __WATCOMC__) && !GC_BUILD
&& !GC_NOT_DLL] (new, delete): Likewise.

4 years agowindows-untested: Remove all contents
Ivan Maidanski [Mon, 8 Jul 2019 22:00:09 +0000 (01:00 +0300)]
windows-untested: Remove all contents

Issue #105 (bdwgc).

CMake script should be used instead.

4 years agoDo not build tests by default (Makefile.direct and other Makefiles)
Ivan Maidanski [Sun, 7 Jul 2019 12:56:12 +0000 (15:56 +0300)]
Do not build tests by default (Makefile.direct and other Makefiles)

This is to match the behavior of configure-based Makefile and the
CMake script. Tests are built and executed now by `make check`.

* BCC_MAKEFILE (all): Depend on gc.lib only (instead of gctest, de
and test_cpp).
* OS2_MAKEFILE (all): Likewise.
* BCC_MAKEFILE (check): New target to build and run the tests (de is
not executed).
* NT_MAKEFILE (check): Likewise.
* Makefile.direct (all): Remove dependency on gctest.
* NT_MAKEFILE (all): Remove dependency on gctest, de and test_cpp; add
dependency on gc.lib.
* OS2_MAKEFILE (check): New target to build and run gctest and
cordtest.
* README.QUICK (INSTALLATION): Change "make test" to "make check".
* README.md (Installation and Portability): Likewise.
* doc/README.arm.cross: Likewise.
* SMakefile.amiga (all): Depend on gc.lib and cord.lib only (instead
of gctest, setjmp_t, cordtest).
* SMakefile.amiga (test): Rename to "check".
* WCC_MAKEFILE (all): Remove dependency on gctest and test_cpp.
* digimars.mak (targets): Likewise.
* WCC_MAKEFILE (check): New symbolic target to build and run gctest
and test_cpp.
* digimars.mak (check): Likewise.
* digimars.mak (gc.lib): New target (depend on gc.dll target).
* doc/README.win32 (Watcom compiler): Remove information that wmake
compiles the tests by default.
* doc/README.win64: Update information about tests building.

4 years agoRename gc68060.lib to gc.lib, cord/cord68060.lib to cord.lib in SMakefile
Ivan Maidanski [Tue, 16 Jul 2019 07:16:04 +0000 (10:16 +0300)]
Rename gc68060.lib to gc.lib, cord/cord68060.lib to cord.lib in SMakefile

This is to match the behavior of the CMake script.

* SMakefile.amiga (clean): Remove cord/*.lib, cord/*.lnk.
* SMakefile.amiga (gctest, cordtest, gc$(CPU).lib): Rename gc$(CPU).lib
to gc.lib.
* SMakefile.amiga (cordtest, cord/cord$(CPU).lib): Rename
cord/cord$(CPU).lib to cord.lib.
* SMakefile.amiga (cordtest): Use $(LINKER) instead of slink.
* SMakefile.amiga (cord.lib): Use $(LIBER) instead of oml.
* SMakefile.amiga (cord/cordbscs.o, cord/cordprnt.o, cord/cordxtra.o,
cord/cordtest.o): Use $(CC) instead of sc.

4 years agoFix cordtest build in SMakefile.amiga
Ivan Maidanski [Tue, 16 Jul 2019 07:12:43 +0000 (10:12 +0300)]
Fix cordtest build in SMakefile.amiga
(fix of commit 1ffa0b268)

* SMakefile.amiga (clean): Delete also cord/tests/*.o.
* SMakefile.amiga (cordtest, cord/cordtest.o): Rename cord/cordtest.o
to cord/tests/cordtest.o.

4 years agoRename gc64.dll to gc.dll and gc[64]_dll.lib to gc.lib in NT_MAKEFILE
Ivan Maidanski [Sun, 7 Jul 2019 12:26:53 +0000 (15:26 +0300)]
Rename gc64.dll to gc.dll and gc[64]_dll.lib to gc.lib in NT_MAKEFILE

This is to match the behavior of gc.mak and the CMake script.

* NT_MAKEFILE [!MAKE_AS_LIB]: Remove; use gc.dll instead of $(GC_DLL).
* NT_MAKEFILE (GC_LIB): Remove; use gc.lib instead of $(GC_LIB).

4 years ago.gitignore: Ignore de.dir produced by CMake
Ivan Maidanski [Sun, 7 Jul 2019 07:53:53 +0000 (10:53 +0300)]
.gitignore: Ignore de.dir produced by CMake

4 years agoAppVeyor CI: enable_werror for all cmake builds
Ivan Maidanski [Sun, 7 Jul 2019 07:49:47 +0000 (10:49 +0300)]
AppVeyor CI: enable_werror for all cmake builds

4 years agoAppVeyor CI: Fail cmake build if deprecated macro and function warnings
Ivan Maidanski [Sun, 7 Jul 2019 07:45:28 +0000 (10:45 +0300)]
AppVeyor CI: Fail cmake build if deprecated macro and function warnings

4 years agoEliminate 'possible loss of data' compiler warning in disclaim_test (MS VC)
Ivan Maidanski [Sun, 7 Jul 2019 07:39:04 +0000 (10:39 +0300)]
Eliminate 'possible loss of data' compiler warning in disclaim_test (MS VC)
(fix of commit 63fd11df9)

* disclaim_test.c (test_misc_sizes): Cast i to unsigned char when
assigning its value to *p.

4 years agoEliminate 'possible loss of data' compiler warning in cordprnt (MS VC)
Ivan Maidanski [Sun, 7 Jul 2019 07:28:09 +0000 (10:28 +0300)]
Eliminate 'possible loss of data' compiler warning in cordprnt (MS VC)

* cordprnt.c (CORD_vsprintf): Cast result of ec_len() to short if
long_arg<0.

4 years agoSupport enable_werror option in CMake script
Ivan Maidanski [Sat, 6 Jul 2019 05:57:41 +0000 (08:57 +0300)]
Support enable_werror option in CMake script

Issue #281 (bdwgc).

* CMakeLists.txt (enable_werror): New option (OFF by default).
* CMakeLists.txt: Specify add_compile_options to report all warnings;
add TODO about pedantic.
* CMakeLists.txt [enable_werror]: Specify add_compile_options to treat
all warnings as errors.
* CMakeLists.txt [enable_werror && APPLE]: Specify add_compile_options
to ignore deprecated declarations, e.g.
_dyld_bind_fully_image_containing_address.

4 years agoRemove dependency on user32.dll import library from static libgc (Win32)
Ivan Maidanski [Fri, 5 Jul 2019 20:30:37 +0000 (23:30 +0300)]
Remove dependency on user32.dll import library from static libgc (Win32)

* CMakeLists.txt [!BUILD_SHARED_LIBS && WIN32] (DONT_USE_USER32_DLL):
Define C macro; add comment.
* configure.ac [($enable_static=yes || $enable_shared=no)
&& $host=*-*-cygwin*|*-*-mingw*|*-*-msys*] (DONT_USE_USER32_DLL):
Likewise.

4 years agoNew macro (NO_MSGBOX_ON_ERROR) to avoid message box on GC abort (Win32)
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.

4 years agoUpdate ChangeLog file
Ivan Maidanski [Mon, 1 Jul 2019 10:15:18 +0000 (13:15 +0300)]
Update ChangeLog file

4 years agoUpdate ChangeLog file (v8.0 changes)
Ivan Maidanski [Sun, 30 Jun 2019 06:00:13 +0000 (09:00 +0300)]
Update ChangeLog file (v8.0 changes)

4 years agoUpdate ChangeLog file (v7.6 changes)
Ivan Maidanski [Sun, 30 Jun 2019 05:48:37 +0000 (08:48 +0300)]
Update ChangeLog file (v7.6 changes)

4 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Sat, 29 Jun 2019 16:12:27 +0000 (19:12 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

4 years agoAppVeyor CI: Fix cmake Release build by passing --config
Ivan Maidanski [Wed, 26 Jun 2019 19:55:42 +0000 (22:55 +0300)]
AppVeyor CI: Fix cmake Release build by passing --config

4 years agoFix 'const object must be initialized' MS VC error for debug_header_size
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.

4 years agoFix 'redefinition of struct GC_ms_entry' compilation error in gc_priv.h
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).

4 years agoFix 'GC_debug_header_size is deprecated' GCC warning
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.

4 years agoTravis CI: Replace clang-5.0 with clang (update to Xenial image)
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)

4 years agoTravis CI: Fix out-of-memory during cppcheck build
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.

4 years agoUpdate AUTHORS file (add iarspider)
Ivan Maidanski [Fri, 21 Jun 2019 21:37:58 +0000 (00:37 +0300)]
Update AUTHORS file (add iarspider)

4 years agoFix 'ISO C++17 does not allow dynamic exception spec' clang-8 error
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.

4 years agoFix 'while clause does not guard' GCC warning in GC_parse_map_entry
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.

4 years agoFix fread failure after enable_incremental if malloc is redirected (Linux)
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.

4 years agoDo not use Manual VDB mode if C malloc is redirected
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.

4 years agoSpecify rules for installing targets in CMake script
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.