.travis.yml raw

   1  language: cpp
   2  os: linux
   3  dist: noble
   4  
   5  jobs:
   6    include:
   7    - addons:
   8        apt:
   9          packages:
  10          - libstdc++-14-dev
  11      compiler: clang
  12      env:
  13      - CONF_OPTIONS="--enable-cplusplus"
  14      - GCTEST_WITH_MPROTECT_VDB=true
  15      - NO_CLONE_LIBATOMIC_OPS=true
  16    - compiler: gcc
  17      env:
  18      - CONF_OPTIONS="--enable-cplusplus"
  19      - GCTEST_WITH_MPROTECT_VDB=true
  20    - addons:
  21        apt:
  22          packages:
  23          - lcov
  24      compiler: gcc
  25      env:
  26      - CONF_OPTIONS="--enable-gcov --enable-single-obj-compilation --enable-cplusplus --disable-shared --enable-gc-assertions --enable-valgrind-tracking"
  27      - CFLAGS_EXTRA="-fprofile-update=atomic -D USE_CUSTOM_SPECIFIC"
  28      - CC_FOR_CHECK=g++
  29      - MAKEFILE_TARGETS="all"
  30      - MAKEFILE_TARGETS_CHECK="check"
  31      - NO_CLONE_LIBATOMIC_OPS=true
  32      - REPORT_COVERAGE=true
  33      - TESTS_CUSTOM_RUN=true
  34    - env:
  35      - MAKEFILE_TARGETS="dist"
  36    - addons:
  37        apt:
  38          packages:
  39          - g++-multilib
  40          - gcc-multilib
  41      compiler: clang
  42      env:
  43      - CSA_CHECK=true
  44      - CFLAGS_EXTRA="-m32"
  45    - addons:
  46        apt:
  47          packages:
  48          - libstdc++-14-dev
  49      compiler: clang
  50      language: c
  51      env:
  52      - CSA_CHECK=true
  53      - CFLAGS_EXTRA="-D ALL_INTERIOR_POINTERS -D CHECKSUMS -D DBG_HDRS_ALL -D DEBUG_THREADS -D ENABLE_TRACE -D GC_ALWAYS_MULTITHREADED -D GC_ASSERTIONS -D GC_ATOMIC_UNCOLLECTABLE -D GC_ENABLE_SUSPEND_THREAD -D GC_GCJ_SUPPORT -D GC_PRINT_BACK_HEIGHT -D GC_THREADS -D HANDLE_FORK -D JAVA_FINALIZATION -D KEEP_BACK_PTRS -D MAKE_BACK_GRAPH -D PARALLEL_MARK -D PRINT_BLACK_LIST -D THREAD_LOCAL_ALLOC -D USE_MMAP -D USE_MUNMAP"
  54    - env:
  55      - CPPCHECK_ENABLE="--enable=unusedFunction -I libatomic_ops/src extra/gc.c tests/*.c"
  56    - env:
  57      - CPPCHECK_ENABLE="--enable=unusedFunction --force -D GC_BUILTIN_ATOMIC *.cc cord/*.c cord/tests/*.c tests/*.c"
  58      - CPPCHECK_OUT_FILTER="Z"
  59      - NO_CLONE_LIBATOMIC_OPS=true
  60    - env:
  61      - CPPCHECK_ENABLE="-j4 --enable=all --disable=missingInclude,unusedFunction --force -U GC_PRIVATE_H -I libatomic_ops/src a*.c b*.c c*.c d*.c f*.c"
  62      - CPPCHECK_OUT_FILTER="Z"
  63    - env:
  64      - CPPCHECK_ENABLE="-j4 --enable=all --disable=missingInclude,unusedFunction --force -U GC_PRIVATE_H -I libatomic_ops/src g*.c h*.c m*.c"
  65      - CPPCHECK_OUT_FILTER="Z"
  66    - env:
  67      - CPPCHECK_ENABLE="-j4 --enable=all --disable=missingInclude,unusedFunction --force -U GC_PRIVATE_H -I libatomic_ops/src n*.c p*.c r*.c s*.c t*.c w*.c cord/*.c"
  68    - env:
  69      - CPPCHECK_ENABLE="-j4 --enable=all --disable=missingInclude,unusedFunction --force -I libatomic_ops/src *.cc cord/tests/*.c extra/m*.c extra/*.cpp tests/*.c tests/*.cc tools/*.c"
  70      - CPPCHECK_OUT_FILTER="Z"
  71    - arch: arm64
  72      compiler: clang
  73    - arch: arm64
  74      compiler: gcc
  75    - arch: arm64
  76      compiler: clang
  77      env:
  78      - CFLAGS_EXTRA="-O3"
  79      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus --disable-shared"
  80      - NO_CLONE_LIBATOMIC_OPS=true
  81    - arch: arm64
  82      compiler: gcc
  83      env:
  84      - CFLAGS_EXTRA="-O3 -D SIMULATE_LOST_SIGNALS -D TEST_DUMP_REGIONS_AND_FREELIST -D TRACE_BUF"
  85      - CONF_OPTIONS="--enable-cplusplus --disable-gcj-support"
  86      - NO_CLONE_LIBATOMIC_OPS=true
  87    - addons:
  88        apt:
  89          packages:
  90          - musl-tools
  91      arch: arm64
  92      compiler: musl-gcc
  93      dist: focal
  94      language: c
  95      env:
  96      - CFLAGS_EXTRA="-O3 -D SOFT_VDB"
  97      - CONF_OPTIONS="--enable-gc-assertions"
  98      - NO_CLONE_LIBATOMIC_OPS=true
  99    - arch: arm64
 100      compiler: gcc
 101      env:
 102      - CONF_OPTIONS="--disable-threads"
 103      - NO_CLONE_LIBATOMIC_OPS=true
 104    - addons:
 105        apt:
 106          packages:
 107          - libatomic-ops-dev
 108      arch: arm64
 109      compiler: gcc
 110      env:
 111      - CONF_OPTIONS="--with-libatomic-ops=yes --enable-gc-assertions --enable-cplusplus --disable-munmap"
 112      - NO_CLONE_LIBATOMIC_OPS=true
 113    - arch: arm64
 114      compiler: clang
 115      dist: focal
 116      language: c
 117      env:
 118      - CFLAGS_EXTRA="-fsanitize=memory,undefined -fno-omit-frame-pointer"
 119      - CONF_OPTIONS="--enable-static"
 120      - NO_CLONE_LIBATOMIC_OPS=true
 121      - TESTS_CUSTOM_RUN=true
 122    - arch: arm64
 123      compiler: clang
 124      env:
 125      - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=OFF -Denable_cplusplus=ON -Denable_gc_assertions=ON"
 126      - NO_CLONE_LIBATOMIC_OPS=true
 127    - arch: arm64
 128      compiler: gcc
 129      env:
 130      - MAKEFILE_NAME=Makefile.direct
 131      - MAKEFILE_TARGETS="check cord/de"
 132    - arch: ppc64le
 133      compiler: clang
 134      env:
 135      - GCTEST_WITH_MPROTECT_VDB=true
 136    - arch: ppc64le
 137      compiler: gcc
 138      env:
 139      - CONF_OPTIONS="--disable-shared --disable-threads"
 140      - GCTEST_WITH_MPROTECT_VDB=true
 141      - NO_CLONE_LIBATOMIC_OPS=true
 142    - arch: ppc64le
 143      compiler: clang
 144      env:
 145      - CFLAGS_EXTRA="-O3 -D _FORTIFY_SOURCE=2 -D DONT_PROTECT_PTRFREE -D FORCE_MPROTECT_BEFORE_MADVISE -D GC_UNMAPPED_REGIONS_SOFT_LIMIT=120"
 146      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus --enable-static"
 147      - GCTEST_WITH_MPROTECT_VDB=true
 148      - NO_CLONE_LIBATOMIC_OPS=true
 149    - arch: ppc64le
 150      compiler: gcc
 151      env:
 152      - CFLAGS_EXTRA="-O3 -D NO_MPROTECT_VDB"
 153      - CONF_OPTIONS="--enable-cplusplus"
 154      - NO_CLONE_LIBATOMIC_OPS=true
 155    - arch: ppc64le
 156      compiler: clang
 157      env:
 158      - CFLAGS_EXTRA="-D CHECK_SOFT_VDB"
 159      - CONF_OPTIONS="--enable-gc-assertions --enable-static --disable-thread-local-alloc"
 160      - NO_CLONE_LIBATOMIC_OPS=true
 161    - arch: ppc64le
 162      compiler: clang
 163      dist: focal
 164      language: c
 165      env:
 166      - CFLAGS_EXTRA="-fsanitize=memory,undefined -fno-omit-frame-pointer"
 167      - CONF_OPTIONS="--disable-shared"
 168      - GCTEST_WITH_MPROTECT_VDB=true
 169      - NO_CLONE_LIBATOMIC_OPS=true
 170      - TESTS_CUSTOM_RUN=true
 171    - arch: ppc64le
 172      compiler: clang
 173      env:
 174      - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -Denable_cplusplus=ON -Denable_gc_assertions=ON"
 175      - GCTEST_WITH_MPROTECT_VDB=true
 176      - NO_CLONE_LIBATOMIC_OPS=true
 177    - arch: ppc64le
 178      compiler: clang
 179      env:
 180      - MAKEFILE_NAME=Makefile.direct
 181      - MAKEFILE_TARGETS="check cord/de"
 182      - GCTEST_WITH_MPROTECT_VDB=true
 183    - arch: s390x
 184      compiler: clang
 185      env:
 186      - GCTEST_WITH_MPROTECT_VDB=true
 187    - arch: s390x
 188      compiler: gcc
 189      env:
 190      - CONF_OPTIONS="--disable-disclaim"
 191      - GCTEST_WITH_MPROTECT_VDB=true
 192    - arch: s390x
 193      compiler: clang
 194      env:
 195      - CFLAGS_EXTRA="-O3 -flto -D _FORTIFY_SOURCE=2 -D NO_RETRY_SIGNALS"
 196      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus --enable-dynamic-pointer-mask"
 197      - GCTEST_WITH_MPROTECT_VDB=true
 198    - arch: s390x
 199      compiler: gcc
 200      env:
 201      - CFLAGS_EXTRA="-O3 -flto=auto -D _FORTIFY_SOURCE=2 -D PREFER_MMAP_PROT_NONE"
 202      - CONF_OPTIONS="--enable-cplusplus --disable-shared"
 203      - GCTEST_WITH_MPROTECT_VDB=true
 204      - NO_CLONE_LIBATOMIC_OPS=true
 205    - arch: s390x
 206      compiler: gcc
 207      env:
 208      - MAKEFILE_NAME=Makefile.direct
 209      - MAKEFILE_TARGETS="check cord/de"
 210      - GCTEST_WITH_MPROTECT_VDB=true
 211    - os: freebsd
 212      env:
 213      - CFLAGS_EXTRA="-O3 -D _FORTIFY_SOURCE=2"
 214      - CONF_OPTIONS="--enable-cplusplus --enable-gc-assertions --enable-redirect-malloc --enable-rwlock"
 215      - MAKE_NPROC=8
 216      - NO_CLONE_LIBATOMIC_OPS=true
 217    - os: freebsd
 218      env:
 219      - CONF_OPTIONS="--enable-cplusplus"
 220      - MAKE_NPROC=8
 221      - NO_CLONE_LIBATOMIC_OPS=true
 222    - os: freebsd
 223      env:
 224      - CONF_OPTIONS="--enable-gc-assertions --disable-shared"
 225      - MAKE_NPROC=8
 226      - NO_CLONE_LIBATOMIC_OPS=true
 227    - os: freebsd
 228      env:
 229      - CMAKE_BUILD_OPTIONS="--verbose"
 230      - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -Denable_cplusplus=ON"
 231      - NO_CLONE_LIBATOMIC_OPS=true
 232    - os: freebsd
 233      env:
 234      - MAKEFILE_NAME=Makefile.direct
 235      - MAKEFILE_TARGETS="check cord/de"
 236      - MAKE_NPROC=8
 237    - compiler: gcc
 238      env:
 239      - CFLAGS_EXTRA="-O3 -march=native -fanalyzer"
 240      - CONF_OPTIONS="--enable-cplusplus"
 241      - GCTEST_WITH_MPROTECT_VDB=true
 242      - NO_CLONE_LIBATOMIC_OPS=true
 243    - compiler: gcc
 244      env:
 245      - CFLAGS_EXTRA="-D _FORTIFY_SOURCE=2"
 246      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus --disable-disclaim --enable-static"
 247      - GCTEST_WITH_MPROTECT_VDB=true
 248      - NO_CLONE_LIBATOMIC_OPS=true
 249    - addons:
 250        apt:
 251          packages:
 252          - gcc-multilib
 253      compiler: clang
 254      env:
 255      - CFLAGS_EXTRA="-m32 -funsigned-char -D _FORTIFY_SOURCE=2 -D GC_GCJ_MARK_DESCR_OFFSET=32 -D NO_LONGLONG64"
 256      - CONF_OPTIONS="--enable-gc-assertions"
 257      - GCTEST_WITH_MPROTECT_VDB=true
 258      - NO_CLONE_LIBATOMIC_OPS=true
 259    - addons:
 260        apt:
 261          packages:
 262          - gcc-multilib
 263      compiler: gcc
 264      env:
 265      - CFLAGS_EXTRA="-m32 -D _FORTIFY_SOURCE=2"
 266      - CONF_OPTIONS="--enable-gc-assertions --enable-mmap --enable-rwlock"
 267      - GCTEST_WITH_MPROTECT_VDB=true
 268    - compiler: gcc
 269      env:
 270      - CONF_OPTIONS="--disable-threads --enable-checksums --disable-munmap --enable-cplusplus"
 271      - GCTEST_WITH_MPROTECT_VDB=true
 272      - NO_CLONE_LIBATOMIC_OPS=true
 273    - compiler: clang
 274      env:
 275      - CONF_OPTIONS="--disable-threads --enable-checksums --disable-handle-fork --disable-munmap --enable-gc-assertions --enable-large-config --enable-static"
 276      - NO_CLONE_LIBATOMIC_OPS=true
 277    - addons:
 278        apt:
 279          packages:
 280          - libstdc++-14-dev
 281      compiler: clang
 282      env:
 283      - CFLAGS_EXTRA="-D _FORTIFY_SOURCE=2 -D DBG_HDRS_ALL -D SHORT_DBG_HDRS"
 284      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus --disable-dynamic-loading"
 285      - NO_CLONE_LIBATOMIC_OPS=true
 286    - addons:
 287        apt:
 288          packages:
 289          - libstdc++-14-dev
 290      compiler: clang
 291      env:
 292      - CFLAGS_EXTRA="-D DBG_HDRS_ALL -D SHORT_DBG_HDRS -D LINT2 -D PRINT_AND_CHECK_INT_LIST"
 293      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus --enable-handle-fork=manual --disable-throw-bad-alloc-library"
 294      - NO_CLONE_LIBATOMIC_OPS=true
 295    - compiler: gcc
 296      env:
 297      - CFLAGS_EXTRA="-D DEBUG_ADD_DEL_ROOTS -D DEBUG_THREADS -D GC_DEBUG -D GC_LOG_TO_FILE_ALWAYS"
 298      - CONF_OPTIONS="--enable-cplusplus"
 299    - compiler: gcc
 300      env:
 301      - CFLAGS_EXTRA="-D BSD_TIME -D DEFAULT_STACK_MAYBE_SMALL -D ENABLE_TRACE -D EMPTY_GETENV_RESULTS -D GC_ALWAYS_MULTITHREADED -D GC_NETBSD_THREADS_WORKAROUND -D CPPCHECK"
 302      - CONF_OPTIONS="--enable-cplusplus --enable-gc-assertions"
 303      - GCTEST_WITH_MPROTECT_VDB=true
 304    - addons:
 305        apt:
 306          packages:
 307          - libstdc++-14-dev
 308      compiler: clang
 309      env:
 310      - CFLAGS_EXTRA="-march=native -D _FORTIFY_SOURCE=2 -D DEFAULT_VDB -D TEST_WITH_SYSTEM_MALLOC"
 311      - CONF_OPTIONS="--without-libatomic-ops --enable-cplusplus --disable-handle-fork"
 312    - addons:
 313        apt:
 314          packages:
 315          - libatomic-ops-dev
 316      compiler: gcc
 317      env:
 318      - CFLAGS_EXTRA="-D _FORTIFY_SOURCE=2 -D GC_DISABLE_SNPRINTF -D TEST_PAGES_EXECUTABLE"
 319      - CONF_OPTIONS="--with-libatomic-ops=yes --enable-gc-assertions --enable-cplusplus --disable-throw-bad-alloc-library"
 320      - GCTEST_WITH_MPROTECT_VDB=true
 321      - NO_CLONE_LIBATOMIC_OPS=true
 322    - addons:
 323        apt:
 324          packages:
 325          - libstdc++-14-dev
 326      compiler: clang
 327      env:
 328      - CFLAGS_EXTRA="-march=native -D _FORTIFY_SOURCE=2 -D AO_DISABLE_GCC_ATOMICS"
 329      - CONF_OPTIONS="--without-libatomic-ops --enable-munmap --enable-cplusplus --enable-static"
 330    - compiler: gcc
 331      env:
 332      - CONF_CFLAGS="-O3 -D _FORTIFY_SOURCE=2 -D AO_USE_PTHREAD_DEFS -D RANDOM_ONE_CPU_CORE"
 333      - CONF_OPTIONS="--without-libatomic-ops --enable-gc-assertions --enable-cplusplus --enable-static"
 334    - compiler: clang
 335      env:
 336      - CONF_CFLAGS="-D AO_USE_PTHREAD_DEFS"
 337      - CONF_OPTIONS="--without-libatomic-ops"
 338    - addons:
 339        apt:
 340          packages:
 341          - libatomic-ops-dev
 342      compiler: gcc
 343      env:
 344      - CONF_CFLAGS="-O3 -D AO_USE_PTHREAD_DEFS -D RANDOM_ONE_CPU_CORE"
 345      - CONF_OPTIONS="--with-libatomic-ops=yes --enable-cplusplus"
 346      - CFLAGS_EXTRA="-D GC_NO_FINALIZATION"
 347      - NO_CLONE_LIBATOMIC_OPS=true
 348    - addons:
 349        apt:
 350          packages:
 351          - libatomic-ops-dev
 352          - libstdc++-14-dev
 353      compiler: clang
 354      env:
 355      - CONF_CFLAGS="-O3 -D AO_USE_PTHREAD_DEFS -D RANDOM_ONE_CPU_CORE"
 356      - CONF_OPTIONS="--with-libatomic-ops=yes --enable-gc-assertions --enable-cplusplus --disable-shared --enable-static"
 357      - NO_CLONE_LIBATOMIC_OPS=true
 358    - compiler: gcc
 359      env:
 360      - CFLAGS_EXTRA="-funsigned-char -D _FORTIFY_SOURCE=2 -D DONT_ADD_BYTE_AT_END -D GC_TIME_LIMIT=3"
 361      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus"
 362      - GCTEST_WITH_MPROTECT_VDB=true
 363    - addons:
 364        apt:
 365          packages:
 366          - gcc-multilib
 367      compiler: gcc
 368      env:
 369      - CFLAGS_EXTRA="-m32 -D _FORTIFY_SOURCE=2 -D MARK_BIT_PER_OBJ -D USE_CUSTOM_SPECIFIC"
 370      - CONF_OPTIONS="--enable-gc-assertions"
 371      - GCTEST_WITH_MPROTECT_VDB=true
 372    - addons:
 373        apt:
 374          packages:
 375          - libstdc++-14-dev
 376      compiler: clang
 377      env:
 378      - CFLAGS_EXTRA="-D MARK_BIT_PER_OBJ"
 379      - CONF_OPTIONS="--enable-cplusplus --enable-rwlock --disable-shared"
 380      - GCTEST_WITH_MPROTECT_VDB=true
 381    - compiler: gcc
 382      env:
 383      - CFLAGS_EXTRA="-D _FORTIFY_SOURCE=2 -D NO_CLOCK -D POINTER_MASK=~0xf"
 384      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus --enable-handle-fork=manual"
 385      - GCTEST_WITH_MPROTECT_VDB=true
 386    - compiler: gcc
 387      env:
 388      - CFLAGS_EXTRA="-D PROC_VDB -D NO_BLACK_LISTING -D GC_NO_SYS_FAULT_H -D NO_INCREMENTAL -D DEBUG_DIRTY_BITS"
 389      - CONF_OPTIONS="--enable-cplusplus --disable-docs"
 390    - compiler: clang
 391      env:
 392      - CFLAGS_EXTRA="-D _FORTIFY_SOURCE=2 -D TEST_MANUAL_VDB"
 393      - CONF_OPTIONS="--enable-gc-assertions --disable-parallel-mark"
 394    - compiler: gcc
 395      env:
 396      - CFLAGS_EXTRA="-D TEST_MANUAL_VDB"
 397      - CONF_OPTIONS="--enable-gc-assertions --disable-munmap"
 398    - compiler: gcc
 399      env:
 400      - CFLAGS_EXTRA="-D _FORTIFY_SOURCE=2 -D FIND_LEAK -D SKIP_LEAKED_OBJECTS_PRINTING"
 401      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus"
 402    - compiler: gcc
 403      env:
 404      - CFLAGS_EXTRA="-D SMALL_CONFIG -D NO_GETENV"
 405      - CONF_OPTIONS="--enable-cplusplus"
 406    - compiler: gcc
 407      env:
 408      - CFLAGS_EXTRA="-std=c11 -D _FORTIFY_SOURCE=2 -D GC_NO_SIGSETJMP"
 409      - CONF_OPTIONS="--disable-threads --enable-gc-assertions"
 410      - NO_CLONE_LIBATOMIC_OPS=true
 411    - addons:
 412        apt:
 413          packages:
 414          - libstdc++-14-dev
 415      compiler: clang
 416      env:
 417      - CONF_OPTIONS="--disable-thread-local-alloc --enable-cplusplus --enable-static"
 418      - GCTEST_WITH_MPROTECT_VDB=true
 419      - NO_CLONE_LIBATOMIC_OPS=true
 420    - compiler: gcc
 421      env:
 422      - CFLAGS_EXTRA="-O3 -flto -D _FORTIFY_SOURCE=2 -D NO_MANUAL_VDB"
 423      - CONF_OPTIONS="--disable-parallel-mark --disable-thread-local-alloc --enable-gc-assertions --enable-cplusplus"
 424      - GCTEST_WITH_MPROTECT_VDB=true
 425    - compiler: gcc
 426      env:
 427      - CONF_OPTIONS="--enable-gc-debug --enable-cplusplus"
 428    - compiler: gcc
 429      env:
 430      - CONF_OPTIONS="--disable-gc-debug --enable-cplusplus"
 431      - GCTEST_WITH_MPROTECT_VDB=true
 432    - addons:
 433        apt:
 434          packages:
 435          - libstdc++-14-dev
 436      compiler: clang
 437      env:
 438      - CONF_OPTIONS="--enable-large-config --enable-cplusplus --disable-shared --enable-static"
 439      - GCTEST_WITH_MPROTECT_VDB=true
 440      - NO_CLONE_LIBATOMIC_OPS=true
 441    - addons:
 442        apt:
 443          packages:
 444          - libstdc++-14-dev
 445      compiler: clang
 446      env:
 447      - CONF_OPTIONS="--disable-atomic-uncollectible --enable-cplusplus --enable-rwlock --disable-shared --enable-static"
 448    - addons:
 449        apt:
 450          packages:
 451          - gcc-multilib
 452      compiler: gcc
 453      env:
 454      - CONF_OPTIONS="--enable-large-config --disable-munmap"
 455      - CFLAGS_EXTRA="-m32"
 456      - GCTEST_WITH_MPROTECT_VDB=true
 457    - compiler: gcc
 458      env:
 459      - CONF_OPTIONS="--enable-large-config --enable-cplusplus --enable-gc-assertions --enable-static"
 460      - CFLAGS_EXTRA="-D LINT2 -D NO_VDB_FOR_STATIC_ROOTS -D TEST_REUSE_SIG_SUSPEND"
 461      - GCTEST_WITH_MPROTECT_VDB=true
 462    - compiler: gcc
 463      env:
 464      - CONF_OPTIONS="--enable-large-config --enable-redirect-malloc --disable-threads"
 465      - CFLAGS_EXTRA="-O3 -fanalyzer"
 466      - NO_CLONE_LIBATOMIC_OPS=true
 467    - addons:
 468        apt:
 469          packages:
 470          - gcc-multilib
 471      compiler: clang
 472      env:
 473      - CONF_OPTIONS="--enable-redirect-malloc --enable-static --disable-threads"
 474      - CFLAGS_EXTRA="-m32"
 475      - NO_CLONE_LIBATOMIC_OPS=true
 476    - compiler: gcc
 477      env:
 478      - CFLAGS_EXTRA="-D _FORTIFY_SOURCE=2"
 479      - CONF_OPTIONS="--enable-redirect-malloc --enable-gc-debug --enable-cplusplus --enable-gc-assertions"
 480    - addons:
 481        apt:
 482          packages:
 483          - libstdc++-14-dev
 484      compiler: clang
 485      env:
 486      - CONF_OPTIONS="--disable-threads --enable-cplusplus"
 487      - CFLAGS_EXTRA="-O3 -march=native"
 488      - GCTEST_WITH_MPROTECT_VDB=true
 489      - NO_CLONE_LIBATOMIC_OPS=true
 490    - compiler: gcc
 491      env:
 492      - CONF_OPTIONS="--disable-static --disable-threads --enable-cplusplus"
 493      - CFLAGS_EXTRA="-O3 -march=native -fanalyzer -D DONT_PROTECT_PTRFREE -D GC_PREFER_MPROTECT_VDB"
 494      - NO_CLONE_LIBATOMIC_OPS=true
 495    - addons:
 496        apt:
 497          packages:
 498          - libstdc++-14-dev
 499      compiler: clang
 500      env:
 501      - CMAKE_OPTIONS="-Denable_cplusplus=ON -Denable_gc_assertions=ON"
 502      - GCTEST_WITH_MPROTECT_VDB=true
 503      - NO_CLONE_LIBATOMIC_OPS=true
 504    - addons:
 505        apt:
 506          packages:
 507          - libatomic-ops-dev
 508          - libstdc++-14-dev
 509      compiler: clang
 510      env:
 511      - CMAKE_OPTIONS="-Denable_atomic_uncollectable=OFF -Denable_cplusplus=ON -Denable_munmap=OFF -Dwith_libatomic_ops=ON"
 512      - GCTEST_WITH_MPROTECT_VDB=true
 513    - compiler: gcc
 514      env:
 515      - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -Denable_cplusplus=ON -Denable_large_config=ON"
 516      - GCTEST_WITH_MPROTECT_VDB=true
 517      - NO_CLONE_LIBATOMIC_OPS=true
 518    - compiler: gcc
 519      env:
 520      - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=OFF -Denable_gc_debug=ON -Dwithout_libatomic_ops=ON"
 521    - compiler: gcc
 522      env:
 523      - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -Denable_threads=OFF"
 524      - GCTEST_WITH_MPROTECT_VDB=true
 525      - NO_CLONE_LIBATOMIC_OPS=true
 526    - addons:
 527        apt:
 528          packages:
 529          - libstdc++-14-dev
 530      compiler: clang
 531      env:
 532      - CMAKE_BUILD_OPTIONS="--verbose"
 533      - CMAKE_OPTIONS="-Denable_cplusplus=ON -Denable_gc_assertions=ON -Denable_large_config=ON -Denable_redirect_malloc=ON -Denable_rwlock=ON -DCFLAGS_EXTRA=-DIGNORE_FREE"
 534      - NO_CLONE_LIBATOMIC_OPS=true
 535    - addons:
 536        apt:
 537          packages:
 538          - libstdc++-14-dev
 539      compiler: clang
 540      env:
 541      - CMAKE_BUILD_OPTIONS="--verbose"
 542      - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -Denable_cplusplus=ON -Denable_gc_assertions=ON -Denable_large_config=ON"
 543      - NO_CLONE_LIBATOMIC_OPS=true
 544    - addons:
 545        apt:
 546          packages:
 547          - libstdc++-14-dev
 548      compiler: clang
 549      env:
 550      - MAKEFILE_NAME=Makefile.direct
 551      - MAKEFILE_TARGETS="check cord/de"
 552      - GCTEST_WITH_MPROTECT_VDB=true
 553    - compiler: gcc
 554      env:
 555      - MAKEFILE_NAME=Makefile.direct
 556      - MAKEFILE_TARGETS="check cord/de"
 557      - GCTEST_WITH_MPROTECT_VDB=true
 558    - addons:
 559        apt:
 560          packages:
 561          - musl-tools
 562      compiler: musl-gcc
 563      language: c
 564      env:
 565      - CONF_OPTIONS="--disable-parallel-mark --enable-gc-assertions"
 566      - GCTEST_WITH_MPROTECT_VDB=true
 567    - compiler: clang
 568      dist: xenial
 569      env:
 570      - CFLAGS_EXTRA="-fsanitize=address -fno-common -fno-omit-frame-pointer"
 571      - CONF_OPTIONS="--enable-cplusplus --enable-static"
 572      - NO_CLONE_LIBATOMIC_OPS=true
 573      - TESTS_CUSTOM_RUN=true
 574    - addons:
 575        apt:
 576          packages:
 577          - gcc-5
 578          sources:
 579          - ubuntu-toolchain-r-test
 580      compiler: gcc-5
 581      dist: xenial
 582      language: c
 583      env:
 584      - CFLAGS_EXTRA="-fsanitize=address -O0"
 585      - CONF_OPTIONS="--enable-gc-assertions"
 586      - LDFLAGS="-fuse-ld=gold"
 587    - addons:
 588        apt:
 589          packages:
 590          - g++-multilib
 591          - gcc-multilib
 592      dist: xenial
 593      env:
 594      - CFLAGS_EXTRA="-fsanitize=address -m32 -O0"
 595      - CONF_OPTIONS="--disable-shared --enable-cplusplus"
 596      - NO_CLONE_LIBATOMIC_OPS=true
 597    - addons:
 598        apt:
 599          packages:
 600          - clang-12
 601      compiler: clang-12
 602      dist: focal
 603      language: c
 604      env:
 605      - CFLAGS_EXTRA="-fsanitize=memory -fno-omit-frame-pointer -std=gnu11"
 606      - CONF_OPTIONS="--enable-static"
 607      - GCTEST_WITH_MPROTECT_VDB=true
 608      - TESTS_CUSTOM_RUN=true
 609      - NO_CLONE_LIBATOMIC_OPS=true
 610    - compiler: clang
 611      dist: jammy
 612      env:
 613      - CFLAGS_EXTRA="-fsanitize=undefined -fno-common -fno-omit-frame-pointer"
 614      - CONF_OPTIONS="--enable-cplusplus --enable-static"
 615      - GCTEST_WITH_MPROTECT_VDB=true
 616      - TESTS_CUSTOM_RUN=true
 617      - NO_CLONE_LIBATOMIC_OPS=true
 618    - addons:
 619        apt:
 620          packages:
 621          - clang-12
 622      compiler: clang-12
 623      dist: focal
 624      language: c
 625      env:
 626      - CFLAGS_EXTRA="-O3 -fsanitize=thread -fno-omit-frame-pointer"
 627      - CONF_OPTIONS="--enable-static"
 628      - NO_CLONE_LIBATOMIC_OPS=true
 629    - compiler: clang
 630      dist: jammy
 631      env:
 632      - CFLAGS_EXTRA="-fsanitize=thread -D NO_INCREMENTAL -fno-omit-frame-pointer -D TEST_FORK_WITHOUT_ATFORK"
 633      - CONF_OPTIONS="--enable-gc-assertions --enable-gc-debug --enable-handle-fork=manual --enable-large-config --without-libatomic-ops"
 634    - compiler: clang
 635      dist: jammy
 636      env:
 637      - CFLAGS_EXTRA="-fsanitize=thread -D NO_INCREMENTAL -fno-omit-frame-pointer -D NTHREADS=0"
 638      - CONF_OPTIONS="--disable-parallel-mark --disable-thread-local-alloc --disable-shared --enable-gc-assertions --without-libatomic-ops"
 639    - addons:
 640        apt:
 641          packages:
 642          - libstdc++-14-dev
 643      compiler: clang
 644      env:
 645      - CFLAGS_EXTRA="-O3 -march=native -D NTHREADS=10"
 646      - CONF_OPTIONS="--enable-cplusplus --enable-static --enable-single-obj-compilation"
 647      - GCTEST_WITH_MPROTECT_VDB=true
 648      - NO_CLONE_LIBATOMIC_OPS=true
 649    - addons:
 650        apt:
 651          packages:
 652          - gcc-multilib
 653      compiler: clang
 654      env:
 655      - CFLAGS_EXTRA="-m32 -D _FORTIFY_SOURCE=2 -D GC_DISABLE_INCREMENTAL -std=gnu11"
 656      - CONF_OPTIONS="--enable-gc-assertions --enable-gc-debug"
 657      - NO_CLONE_LIBATOMIC_OPS=true
 658    - compiler: gcc
 659      env:
 660      - CONF_OPTIONS="--enable-cplusplus --enable-gc-assertions --enable-static"
 661      - CFLAGS_EXTRA="-D VERY_SMALL_CONFIG"
 662      - NO_CLONE_LIBATOMIC_OPS=true
 663    - addons:
 664        apt:
 665          packages:
 666          - gcc-multilib
 667      compiler: gcc
 668      env:
 669      - CFLAGS_EXTRA="-m32 -O3 -std=gnu11"
 670      - CONF_OPTIONS="--disable-shared --enable-static --enable-single-obj-compilation"
 671      - GCTEST_WITH_MPROTECT_VDB=true
 672      - NO_CLONE_LIBATOMIC_OPS=true
 673    - addons:
 674        apt:
 675          packages:
 676          - gcc-8
 677          - gcc-8-multilib
 678          - gcc-multilib
 679      compiler: gcc-8
 680      dist: focal
 681      language: c
 682      env:
 683      - CFLAGS_EXTRA="-mx32 -march=native -D _FORTIFY_SOURCE=2"
 684      - CONF_OPTIONS="--enable-large-config --enable-gc-assertions"
 685      - GCTEST_WITH_MPROTECT_VDB=true
 686      - NO_CLONE_LIBATOMIC_OPS=true
 687    - addons:
 688        apt:
 689          packages:
 690          - libstdc++-14-dev
 691      compiler: clang
 692      env:
 693      - CFLAGS_EXTRA="-x c++"
 694      - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus --enable-gc-debug --disable-shared"
 695      - MAKEFILE_TARGETS="all"
 696      - NO_CLONE_LIBATOMIC_OPS=true
 697    - compiler: gcc
 698      env:
 699      - CC_FOR_CHECK=g++
 700      - CONF_OPTIONS="--enable-gc-assertions"
 701      - MAKEFILE_TARGETS="all"
 702      - MAKEFILE_TARGETS_CHECK="check"
 703      - GCTEST_WITH_MPROTECT_VDB=true
 704      - NO_CLONE_LIBATOMIC_OPS=true
 705    - compiler: gcc
 706      env:
 707      - CC_FOR_CHECK=g++
 708      - CFLAGS_EXTRA="-std=c++20"
 709      - CONF_OPTIONS="--enable-cplusplus --enable-gc-assertions --enable-gc-debug"
 710      - MAKEFILE_TARGETS="clean"
 711      - MAKEFILE_TARGETS_CHECK="check"
 712      - NO_CLONE_LIBATOMIC_OPS=true
 713    - compiler: clang
 714      env:
 715      - CFLAGS_EXTRA="-O3 -Wall -Wextra -Werror -x c++"
 716      - MAKEFILE_NAME=Makefile.direct
 717      - MAKEFILE_TARGETS="cords"
 718    - compiler: gcc
 719      env:
 720      - CC_FOR_CHECK=g++
 721      - CFLAGS_EXTRA="-O3 -Wall -Wextra -Werror -D TEST_MANUAL_VDB"
 722      - MAKEFILE_NAME=Makefile.direct
 723      - MAKEFILE_TARGETS="cords"
 724      - MAKEFILE_TARGETS_CHECK="cord/de check"
 725    - addons:
 726        apt:
 727          packages:
 728          - g++-mingw-w64
 729          - gcc-mingw-w64
 730      compiler: x86_64-w64-mingw32-gcc
 731      language: c
 732      env:
 733      - CXX=x86_64-w64-mingw32-g++
 734      - CONF_OPTIONS="--host=x86_64-w64-mingw32 --enable-cplusplus --disable-shared"
 735      - MAKEFILE_TARGETS="all"
 736    - addons:
 737        apt:
 738          packages:
 739          - gcc-mingw-w64
 740      compiler: x86_64-w64-mingw32-gcc
 741      language: c
 742      env:
 743      - CONF_OPTIONS="--host=x86_64-w64-mingw32 --enable-gc-assertions --enable-gc-debug --enable-threads=pthreads"
 744      - MAKEFILE_TARGETS="all"
 745    - addons:
 746        apt:
 747          packages:
 748          - gcc-mingw-w64
 749      compiler: i686-w64-mingw32-gcc
 750      language: c
 751      env:
 752      - CONF_OPTIONS="--host=i686-w64-mingw32"
 753      - MAKEFILE_TARGETS="all"
 754      - CFLAGS_EXTRA="-fno-omit-frame-pointer"
 755    - env:
 756      - MAKEFILE_TARGETS="distcheck"
 757      - AUTOCONF_VER=2.72
 758      - AUTOMAKE_VER=1.18.1
 759      - LIBTOOL_VER=2.5.4
 760      - M4_VER=1.4.20
 761      - NO_CLONE_LIBATOMIC_OPS=true
 762    - if: type != pull_request
 763      addons:
 764        coverity_scan:
 765          project:
 766            name: bdwgc/bdwgc
 767            version: 8.3.0
 768          notification_email: ivmai@mail.ru
 769          branch_pattern: master
 770          build_command_prepend: "./configure --enable-cplusplus --disable-shared --enable-single-obj-compilation"
 771          build_command: make -j check CFLAGS_EXTRA=-DLINT2
 772      env:
 773      - COVERITY_SCAN_BRANCH=1
 774  
 775  before_install:
 776  - if [[ "$CPPCHECK_ENABLE" != "" ]]; then
 777      CPPCHECK_VER=2.14.2;
 778      git clone --depth=3 https://github.com/danmar/cppcheck.git
 779              ~/cppcheck -b $CPPCHECK_VER;
 780      make --directory ~/cppcheck -j8 CXXFLAGS="-O3 -march=native -D NDEBUG";
 781    fi
 782  - if [[ "$AUTOCONF_VER" != "" || "$AUTOMAKE_VER" != ""
 783          || "$LIBTOOL_VER" != "" || "$M4_VER" != "" ]]; then
 784      GNUTOOLS_ROOT=`pwd`/../gnu-tools;
 785      export PATH=$GNUTOOLS_ROOT/bin:$PATH;
 786      GNU_DOWNLOAD_SITE=https://ftp.gnu.org/gnu;
 787    fi
 788  - if [[ "$M4_VER" != "" ]]; then
 789      M4_XZ_URL=$GNU_DOWNLOAD_SITE/m4/m4-$M4_VER.tar.xz;
 790      wget -O - $M4_XZ_URL | tar xf - --xz --directory ~;
 791      (cd ~/m4-$M4_VER && ./configure --prefix=$GNUTOOLS_ROOT && make -j && make install);
 792    fi
 793  - if [[ "$LIBTOOL_VER" != "" ]]; then
 794      LIBTOOL_XZ_URL=$GNU_DOWNLOAD_SITE/libtool/libtool-$LIBTOOL_VER.tar.xz;
 795      wget -O - $LIBTOOL_XZ_URL | tar xf - --xz --directory ~;
 796      (cd ~/libtool-$LIBTOOL_VER && ./configure --prefix=$GNUTOOLS_ROOT && make -j && make install);
 797    fi
 798  - if [[ "$AUTOCONF_VER" != "" ]]; then
 799      AUTOCONF_XZ_URL=$GNU_DOWNLOAD_SITE/autoconf/autoconf-$AUTOCONF_VER.tar.xz;
 800      wget -O - $AUTOCONF_XZ_URL | tar xf - --xz --directory ~;
 801      (cd ~/autoconf-$AUTOCONF_VER && ./configure --prefix=$GNUTOOLS_ROOT && make -j && make install);
 802    fi
 803  - if [[ "$AUTOMAKE_VER" != "" ]]; then
 804      AUTOMAKE_XZ_URL=$GNU_DOWNLOAD_SITE/automake/automake-$AUTOMAKE_VER.tar.xz;
 805      wget -O - $AUTOMAKE_XZ_URL | tar xf - --xz --directory ~;
 806      (cd ~/automake-$AUTOMAKE_VER && ./configure --prefix=$GNUTOOLS_ROOT && make -j && make install);
 807    fi
 808  - if [[ "$MAKEFILE_TARGETS" == *"dist"* ]]; then
 809      autoconf --version;
 810      automake --version;
 811      m4 --version;
 812      libtool --version || true;
 813    fi
 814  - if [[ "$CMAKE_OPTIONS" != "" ]]; then
 815      cmake --version;
 816    fi
 817  - if [[ "$CONF_CFLAGS" == "" ]]; then CONF_CFLAGS="-g -O2"; fi
 818  - if [[ "$MAKEFILE_NAME" == "" ]]; then MAKEFILE_NAME=Makefile; fi
 819  - if [[ "$MAKEFILE_TARGETS" == "" ]]; then MAKEFILE_TARGETS="check"; fi
 820  
 821  install:
 822  - if [[ "$NO_CLONE_LIBATOMIC_OPS" != true ]]; then
 823      git clone --depth=50 https://github.com/bdwgc/libatomic_ops.git;
 824    fi
 825  - if [[ "$CMAKE_OPTIONS" == "" ]]; then
 826      ./autogen.sh;
 827    fi
 828  - if [[ "$GNUTOOLS_ROOT" != "" ]]; then mv $GNUTOOLS_ROOT $GNUTOOLS_ROOT-x; fi
 829  - if [[ "$REPORT_COVERAGE" == true ]]; then gem install coveralls-lcov; fi
 830  
 831  script:
 832  - if [[ "$CSA_CHECK" != true && "$CMAKE_OPTIONS" == ""
 833          && "$CPPCHECK_ENABLE" == "" && "$MAKEFILE_NAME" != "Makefile.direct"
 834          && "$COVERITY_SCAN_BRANCH" != 1 ]]; then
 835      CFLAGS="$CONF_CFLAGS" ./configure $CONF_OPTIONS --enable-werror &&
 836      cat include/config.h;
 837    fi
 838  - if [[ "$CSA_CHECK" != true && "$CMAKE_OPTIONS" == ""
 839          && "$CPPCHECK_ENABLE" == "" && "$COVERITY_SCAN_BRANCH" != 1 ]]; then
 840      make -j$MAKE_NPROC -f $MAKEFILE_NAME $MAKEFILE_TARGETS
 841           CFLAGS_EXTRA="$CFLAGS_EXTRA" LDFLAGS="$LDFLAGS";
 842    fi
 843  - if [[ "$CMAKE_OPTIONS" != "" ]]; then
 844      cmake $CMAKE_OPTIONS -Dbuild_tests=ON -Denable_werror=ON -Werror=dev .
 845      && cmake --build . $CMAKE_BUILD_OPTIONS --parallel;
 846    fi
 847  - if [[ "$CMAKE_OPTIONS" != "" ]]; then
 848      ctest --verbose --parallel 4;
 849    fi
 850  - if [[ "$CC_FOR_CHECK" != "" ]]; then
 851      make -f $MAKEFILE_NAME $MAKEFILE_TARGETS_CHECK CC=$CC_FOR_CHECK
 852              CFLAGS_EXTRA="$CFLAGS_EXTRA";
 853    fi
 854  - if [ -f cordtest.log ]; then cat cordtest.log; fi
 855  - if [ -f disclaim_bench.log ]; then cat disclaim_bench.log; fi
 856  - if [ -f disclaimtest.log ]; then cat disclaimtest.log; fi
 857  - if [ -f gctest.log ]; then cat gctest.log; fi
 858  - if [ -f threadkeytest.log ]; then cat threadkeytest.log; fi
 859  - if [ -f threadleaktest.log ]; then cat threadleaktest.log; fi
 860  - if [ -f weakmaptest.log ]; then cat weakmaptest.log; fi
 861  - if [[ "$CSA_CHECK" == true ]]; then
 862      set -o pipefail; ${CC} --analyze -Xanalyzer -analyzer-output=text -Werror
 863          -I include -I libatomic_ops/src $CFLAGS_EXTRA
 864          *.c *.cc cord/*.c cord/tests/cordtest.c cord/tests/de.c extra/*.c
 865          tests/*.c tests/*.cc tools/*.c 2>&1 | tee clang-analyzer-output.log;
 866      if [ -s clang-analyzer-output.log ]; then exit 1; fi;
 867    fi
 868  - if [[ "$CPPCHECK_ENABLE" != "" ]]; then
 869      if [[ "$CPPCHECK_OUT_FILTER" == "" ]]; then CPPCHECK_OUT_FILTER="c "; fi;
 870      set -o pipefail; ~/cppcheck/cppcheck --error-exitcode=2 -D CPPCHECK
 871          -I include --check-level=exhaustive $CPPCHECK_ENABLE |
 872          grep --line-buffered "$CPPCHECK_OUT_FILTER";
 873    fi
 874  - if [[ "$TESTS_CUSTOM_RUN" == true ]]; then
 875      ASAN_OPTIONS="detect_leaks=1" UBSAN_OPTIONS="halt_on_error=1"
 876          make check-without-test-driver;
 877    fi
 878  - if [[ "$GCTEST_WITH_MPROTECT_VDB" == true ]]; then
 879      GC_USE_GETWRITEWATCH=0 ./gctest;
 880    fi
 881  
 882  after_success:
 883  - if [[ "$REPORT_COVERAGE" == true ]]; then
 884      lcov --capture --base-directory . --directory . --output-file coverage.info &&
 885      lcov --remove coverage.info '/usr/*' 'cord/tests/*' 'tests/*' --output-file coverage.info &&
 886      lcov --list coverage.info &&
 887      coveralls-lcov --repo-token=${COVERALLS_REPO_TOKEN} coverage.info;
 888    fi
 889  
 890  before_deploy:
 891  - yes | gem update --system --force
 892  - gem install bundler
 893  - gem install uri
 894  - gem install logger
 895  
 896  deploy:
 897    provider: releases
 898    edge: true
 899    file: gc-*.tar.gz
 900    file_glob: true
 901    on:
 902      condition: $MAKEFILE_TARGETS = distcheck
 903      repo: bdwgc/bdwgc
 904      tags: true
 905