<p>Vasil Velichkov has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13496">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Add code coverage support<br><br>Configure with --enable-code-coverage then execute make check-code-coverage<br>and then open the resulting HTML report in your browser<br><br>Closes: OS#1987<br>Change-Id: I6f4ffb91bd7f3dd070aa09dd16d5ad1faf130a4c<br>---<br>M Makefile.am<br>M configure.ac<br>M src/Makefile.am<br>M src/codec/Makefile.am<br>M src/coding/Makefile.am<br>M src/ctrl/Makefile.am<br>M src/gb/Makefile.am<br>M src/gsm/Makefile.am<br>M src/pseudotalloc/Makefile.am<br>M src/sim/Makefile.am<br>M src/vty/Makefile.am<br>11 files changed, 43 insertions(+), 24 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/96/13496/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/Makefile.am b/Makefile.am</span><br><span>index 332ce65..5f8c46f 100644</span><br><span>--- a/Makefile.am</span><br><span>+++ b/Makefile.am</span><br><span>@@ -8,6 +8,9 @@</span><br><span>              libosmogb.pc libosmoctrl.pc libosmocoding.pc libosmosim.pc</span><br><span> </span><br><span> @RELMAKE@</span><br><span style="color: hsl(120, 100%, 40%);">+@CODE_COVERAGE_RULES@</span><br><span style="color: hsl(120, 100%, 40%);">+# Exclude some system headers from the code coverage report</span><br><span style="color: hsl(120, 100%, 40%);">+CODE_COVERAGE_IGNORE_PATTERN="/usr/include/*" "/usr/lib*"</span><br><span> </span><br><span> relengdir = $(includedir)</span><br><span> releng_DATA = osmo-release.mk</span><br><span>diff --git a/configure.ac b/configure.ac</span><br><span>index 4a00e69..e88de21 100644</span><br><span>--- a/configure.ac</span><br><span>+++ b/configure.ac</span><br><span>@@ -334,6 +334,8 @@</span><br><span>         AM_CONDITIONAL(HAVE_SSE4_1, false)</span><br><span> fi</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+AX_CODE_COVERAGE</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> dnl Check if the compiler supports specified GCC's built-in function</span><br><span> AC_DEFUN([CHECK_BUILTIN_SUPPORT], [</span><br><span>   AC_CACHE_CHECK(</span><br><span>diff --git a/src/Makefile.am b/src/Makefile.am</span><br><span>index 27ab702..4d28f8d 100644</span><br><span>--- a/src/Makefile.am</span><br><span>+++ b/src/Makefile.am</span><br><span>@@ -3,8 +3,8 @@</span><br><span> # before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html</span><br><span> LIBVERSION=12:1:0</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include</span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -Wall $(TALLOC_CFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -Wall $(TALLOC_CFLAGS) $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> if ENABLE_PSEUDOTALLOC</span><br><span> AM_CPPFLAGS += -I$(top_srcdir)/src/pseudotalloc</span><br><span>@@ -12,7 +12,7 @@</span><br><span> </span><br><span> lib_LTLIBRARIES = libosmocore.la</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-libosmocore_la_LIBADD = $(BACKTRACE_LIB) $(TALLOC_LIBS) $(LIBRARY_RT)</span><br><span style="color: hsl(120, 100%, 40%);">+libosmocore_la_LIBADD = $(BACKTRACE_LIB) $(TALLOC_LIBS) $(LIBRARY_RT) $(CODE_COVERAGE_LIBS)</span><br><span> libosmocore_la_SOURCES = timer.c timer_gettimeofday.c timer_clockgettime.c \</span><br><span>                   select.c signal.c msgb.c bits.c \</span><br><span>                    bitvec.c bitcomp.c counter.c fsm.c \</span><br><span>diff --git a/src/codec/Makefile.am b/src/codec/Makefile.am</span><br><span>index b522d43..f11ff04 100644</span><br><span>--- a/src/codec/Makefile.am</span><br><span>+++ b/src/codec/Makefile.am</span><br><span>@@ -3,8 +3,8 @@</span><br><span> # before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html</span><br><span> LIBVERSION=1:1:1</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-AM_CPPFLAGS = -I$(top_srcdir)/include $(TALLOC_CFLAGS)</span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -Wall</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CPPFLAGS = -I$(top_srcdir)/include $(TALLOC_CFLAGS) $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -Wall $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> if ENABLE_PSEUDOTALLOC</span><br><span> AM_CPPFLAGS += -I$(top_srcdir)/src/pseudotalloc</span><br><span>@@ -15,4 +15,4 @@</span><br><span> </span><br><span> libosmocodec_la_SOURCES = gsm610.c gsm620.c gsm660.c gsm690.c ecu_fr.c</span><br><span> libosmocodec_la_LDFLAGS = -version-info $(LIBVERSION) -no-undefined</span><br><span style="color: hsl(0, 100%, 40%);">-libosmocodec_la_LIBADD = $(top_builddir)/src/libosmocore.la</span><br><span style="color: hsl(120, 100%, 40%);">+libosmocodec_la_LIBADD = $(top_builddir)/src/libosmocore.la $(CODE_COVERAGE_LIBS)</span><br><span>diff --git a/src/coding/Makefile.am b/src/coding/Makefile.am</span><br><span>index c001c13..f179159 100644</span><br><span>--- a/src/coding/Makefile.am</span><br><span>+++ b/src/coding/Makefile.am</span><br><span>@@ -6,8 +6,9 @@</span><br><span> AM_CPPFLAGS = \</span><br><span>   -I"$(top_srcdir)/include" \</span><br><span>        -I"$(top_builddir)/include" \</span><br><span style="color: hsl(0, 100%, 40%);">- $(TALLOC_CFLAGS)</span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -Wall</span><br><span style="color: hsl(120, 100%, 40%);">+     $(TALLOC_CFLAGS) \</span><br><span style="color: hsl(120, 100%, 40%);">+    $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -Wall $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> if ENABLE_PSEUDOTALLOC</span><br><span> AM_CPPFLAGS += -I$(top_srcdir)/src/pseudotalloc</span><br><span>@@ -30,6 +31,7 @@</span><br><span> libosmocoding_la_LIBADD = \</span><br><span>     ../libosmocore.la \</span><br><span>  ../gsm/libosmogsm.la \</span><br><span style="color: hsl(0, 100%, 40%);">-  ../codec/libosmocodec.la</span><br><span style="color: hsl(120, 100%, 40%);">+      ../codec/libosmocodec.la \</span><br><span style="color: hsl(120, 100%, 40%);">+    $(CODE_COVERAGE_LIBS)</span><br><span> </span><br><span> EXTRA_DIST = libosmocoding.map</span><br><span>diff --git a/src/ctrl/Makefile.am b/src/ctrl/Makefile.am</span><br><span>index fe7c47d..537ea7c 100644</span><br><span>--- a/src/ctrl/Makefile.am</span><br><span>+++ b/src/ctrl/Makefile.am</span><br><span>@@ -3,7 +3,9 @@</span><br><span> # before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html</span><br><span> LIBVERSION=3:0:3</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -Wall $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)/include $(TALLOC_CFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CPPFLAGS = $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -Wall $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)/include $(TALLOC_CFLAGS) \</span><br><span style="color: hsl(120, 100%, 40%);">+                   $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> if ENABLE_CTRL</span><br><span> lib_LTLIBRARIES = libosmoctrl.la</span><br><span>@@ -14,7 +16,8 @@</span><br><span> libosmoctrl_la_LIBADD = $(TALLOC_LIBS) \</span><br><span>    $(top_builddir)/src/libosmocore.la \</span><br><span>         $(top_builddir)/src/gsm/libosmogsm.la \</span><br><span style="color: hsl(0, 100%, 40%);">- $(top_builddir)/src/vty/libosmovty.la</span><br><span style="color: hsl(120, 100%, 40%);">+ $(top_builddir)/src/vty/libosmovty.la \</span><br><span style="color: hsl(120, 100%, 40%);">+       $(CODE_COVERAGE_LIBS)</span><br><span> </span><br><span> if ENABLE_VTY</span><br><span> libosmoctrl_la_SOURCES += control_vty.c</span><br><span>diff --git a/src/gb/Makefile.am b/src/gb/Makefile.am</span><br><span>index 3180f9c..530c8e1 100644</span><br><span>--- a/src/gb/Makefile.am</span><br><span>+++ b/src/gb/Makefile.am</span><br><span>@@ -2,8 +2,10 @@</span><br><span> # Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification</span><br><span> LIBVERSION=8:0:2</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include</span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -Wall ${GCC_FVISIBILITY_HIDDEN} -fno-strict-aliasing $(TALLOC_CFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include \</span><br><span style="color: hsl(120, 100%, 40%);">+                        $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -Wall ${GCC_FVISIBILITY_HIDDEN} -fno-strict-aliasing $(TALLOC_CFLAGS) \</span><br><span style="color: hsl(120, 100%, 40%);">+                        $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> # FIXME: this should eventually go into a milenage/Makefile.am</span><br><span> noinst_HEADERS = common_vty.h gb_internal.h</span><br><span>@@ -15,7 +17,8 @@</span><br><span> libosmogb_la_LIBADD = $(TALLOC_LIBS) \</span><br><span>           $(top_builddir)/src/libosmocore.la \</span><br><span>                 $(top_builddir)/src/vty/libosmovty.la \</span><br><span style="color: hsl(0, 100%, 40%);">-         $(top_builddir)/src/gsm/libosmogsm.la</span><br><span style="color: hsl(120, 100%, 40%);">+         $(top_builddir)/src/gsm/libosmogsm.la \</span><br><span style="color: hsl(120, 100%, 40%);">+               $(CODE_COVERAGE_LIBS)</span><br><span> </span><br><span> libosmogb_la_SOURCES = gprs_ns.c gprs_ns_frgre.c gprs_ns_vty.c gprs_ns_sns.c \</span><br><span>            gprs_bssgp.c gprs_bssgp_util.c gprs_bssgp_vty.c \</span><br><span>diff --git a/src/gsm/Makefile.am b/src/gsm/Makefile.am</span><br><span>index 9066500..010e5d9 100644</span><br><span>--- a/src/gsm/Makefile.am</span><br><span>+++ b/src/gsm/Makefile.am</span><br><span>@@ -3,8 +3,9 @@</span><br><span> # before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html</span><br><span> LIBVERSION=11:0:0</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(TALLOC_CFLAGS)</span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -Wall ${GCC_FVISIBILITY_HIDDEN}</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(TALLOC_CFLAGS) \</span><br><span style="color: hsl(120, 100%, 40%);">+                    $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -Wall ${GCC_FVISIBILITY_HIDDEN} $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> if ENABLE_PSEUDOTALLOC</span><br><span> AM_CPPFLAGS += -I$(top_srcdir)/src/pseudotalloc</span><br><span>diff --git a/src/pseudotalloc/Makefile.am b/src/pseudotalloc/Makefile.am</span><br><span>index 3c78bba..f7a1ffc 100644</span><br><span>--- a/src/pseudotalloc/Makefile.am</span><br><span>+++ b/src/pseudotalloc/Makefile.am</span><br><span>@@ -1,4 +1,6 @@</span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -Wall -I. $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)/include</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CPPFLAGS = $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -Wall -I. $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)/include \</span><br><span style="color: hsl(120, 100%, 40%);">+                     $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> if ENABLE_PSEUDOTALLOC</span><br><span> </span><br><span>@@ -6,6 +8,7 @@</span><br><span> </span><br><span> libpseudotalloc_la_SOURCES = pseudotalloc.c</span><br><span> libpseudotalloc_la_LDFLAGS = -no-undefined</span><br><span style="color: hsl(120, 100%, 40%);">+libpseudotalloc_la_LIBADD = $(CODE_COVERAGE_LIBS)</span><br><span> </span><br><span> nobase_include_HEADERS = talloc.h</span><br><span> </span><br><span>diff --git a/src/sim/Makefile.am b/src/sim/Makefile.am</span><br><span>index ebf4739..cca5e23 100644</span><br><span>--- a/src/sim/Makefile.am</span><br><span>+++ b/src/sim/Makefile.am</span><br><span>@@ -3,9 +3,9 @@</span><br><span> # before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html</span><br><span> LIBVERSION=0:2:0</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)/include</span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -fPIC -Wall $(PCSC_CFLAGS) $(TALLOC_CFLAGS)</span><br><span style="color: hsl(0, 100%, 40%);">-AM_LDFLAGS = $(COVERAGE_LDFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)/include \</span><br><span style="color: hsl(120, 100%, 40%);">+                  $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -fPIC -Wall $(PCSC_CFLAGS) $(TALLOC_CFLAGS) $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> if ENABLE_PCSC</span><br><span> # FIXME: only build the PC/SC dependent part conditional, but always build other parts</span><br><span>@@ -22,6 +22,7 @@</span><br><span>       $(top_builddir)/src/libosmocore.la \</span><br><span>         $(top_builddir)/src/gsm/libosmogsm.la \</span><br><span>      $(TALLOC_LIBS) \</span><br><span style="color: hsl(0, 100%, 40%);">-        $(PCSC_LIBS)</span><br><span style="color: hsl(120, 100%, 40%);">+  $(PCSC_LIBS) \</span><br><span style="color: hsl(120, 100%, 40%);">+        $(CODE_COVERAGE_LIBS)</span><br><span> </span><br><span> endif</span><br><span>diff --git a/src/vty/Makefile.am b/src/vty/Makefile.am</span><br><span>index cdde0fa..4e2e5a5 100644</span><br><span>--- a/src/vty/Makefile.am</span><br><span>+++ b/src/vty/Makefile.am</span><br><span>@@ -3,8 +3,9 @@</span><br><span> # before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html</span><br><span> LIBVERSION=6:0:2</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include</span><br><span style="color: hsl(0, 100%, 40%);">-AM_CFLAGS = -Wall $(TALLOC_CFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include \</span><br><span style="color: hsl(120, 100%, 40%);">+                 $(CODE_COVERAGE_CPPFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -Wall $(TALLOC_CFLAGS) $(CODE_COVERAGE_CFLAGS)</span><br><span> </span><br><span> if ENABLE_VTY</span><br><span> lib_LTLIBRARIES = libosmovty.la</span><br><span>@@ -14,5 +15,5 @@</span><br><span>                    fsm_vty.c talloc_ctx_vty.c \</span><br><span>                         tdef_vty.c</span><br><span> libosmovty_la_LDFLAGS = -version-info $(LIBVERSION) -no-undefined</span><br><span style="color: hsl(0, 100%, 40%);">-libosmovty_la_LIBADD = $(top_builddir)/src/libosmocore.la $(TALLOC_LIBS)</span><br><span style="color: hsl(120, 100%, 40%);">+libosmovty_la_LIBADD = $(top_builddir)/src/libosmocore.la $(TALLOC_LIBS) $(CODE_COVERAGE_LIBS)</span><br><span> endif</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13496">change 13496</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/13496"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I6f4ffb91bd7f3dd070aa09dd16d5ad1faf130a4c </div>
<div style="display:none"> Gerrit-Change-Number: 13496 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vasil Velichkov <vvvelichkov@gmail.com> </div>