]> granicus.if.org Git - vim/commitdiff
patch 8.2.0739: incomplete profiling when exiting because of a dealy signal v8.2.0739
authorBram Moolenaar <Bram@vim.org>
Mon, 11 May 2020 20:13:28 +0000 (22:13 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 11 May 2020 20:13:28 +0000 (22:13 +0200)
Problem:    Incomplete profiling when exiting because of a dealy signal.
Solution:   Call __gcov_flush() if available.

.travis.yml
src/Makefile
src/os_unix.c
src/version.c

index 2c5f5ff304492b23817d00ba54414ccc1c99e00f..7c1ecbca564eaa927d08dc9ba68a78793c254c2d 100644 (file)
@@ -11,13 +11,13 @@ _anchors:
     - &normal
       BUILD=yes TEST=test FEATURES=normal CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
     - &linux-huge
-      BUILD=yes TEST="scripttests test_libvterm" CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
+      BUILD=yes TEST="scripttests test_libvterm" CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
       CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
     - &osx-huge # macOS build
       BUILD=yes TEST=test FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
       CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
     - &unittests
-      BUILD=no TEST=unittests CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
+      BUILD=no TEST=unittests CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
     - &asan # ASAN build
       SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
       ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
index 6c7ef85a92933ef62b51a883e538e4a92dda1939..7c2934aea3d89ba12edb1d5c323a071f03a20e1c 100644 (file)
@@ -686,8 +686,10 @@ LINT_OPTIONS = -beprxzF
 # 7. Open the objects/index.html file in a web browser to view the coverage
 #    information.
 #
-# PROFILE_CFLAGS=-g -O0 -fprofile-arcs -ftest-coverage
 # LDFLAGS=--coverage
+# PROFILE_CFLAGS=-g -O0 -fprofile-arcs -ftest-coverage -DWE_ARE_PROFILING -DUSE_GCOV_FLUSH
+# Alternate flags
+# PROFILE_CFLAGS=-g -O0 --coverage -DWE_ARE_PROFILING -DUSE_GCOV_FLUSH
 
 
 # Uncomment one of the next two lines to compile Vim with the
index b5ae9f868716bd718a63d9678902f4ddec073e44..aea3d5a9e2df38780d07cd732d14393f793de7e3 100644 (file)
@@ -3312,6 +3312,10 @@ exit_scroll(void)
     }
 }
 
+#ifdef USE_GCOV_FLUSH
+extern void __gcov_flush();
+#endif
+
     void
 mch_exit(int r)
 {
@@ -3358,6 +3362,12 @@ mch_exit(int r)
     }
     out_flush();
     ml_close_all(TRUE);                // remove all memfiles
+
+#ifdef USE_GCOV_FLUSH
+    // Flush coverage info before possibly being killed by a deadly signal.
+    __gcov_flush();
+#endif
+
     may_core_dump();
 #ifdef FEAT_GUI
     if (gui.in_use)
index 317b34431e69ff4390459b3e901e575b8c814ce3..799e8467139fe4ee9bbc0f24327b35d198906e51 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    739,
 /**/
     738,
 /**/