When trying to build gcc 6.4.0 targeting VxWorks 5.5, I ran into libgcov
not building against the VxWorks system headers - there are multiple
issues such as

gcc-src/libgcc/../gcc/gcov-io.c:78:3: warning: implicit declaration of function 
'getpid' [-Wimplicit-function-declaration]
   s_flock.l_pid = getpid ();
   ^

gcc-src/libgcc/libgcov.c:139:9: warning: implicit declaration of function 
'access' [-Wimplicit-function-declaration]
         if (access (filename, F_OK) == -1
         ^
gcc-src/libgcc/libgcov.c:139:31: error: 'F_OK' undeclared (first use in this 
function)
         if (access (filename, F_OK) == -1
                               ^
Moreover, from the gcov documentation, it would seem to be cumbersome at
best to actually use it on VxWorks. So add an option for disabling build
and install of libgcov.

It would probably be most user-friendly if the resulting compiler would
reject --coverage and -fprofile-arcs, but I couldn't find an easy way to
do that. Also, the similar --disable-libsanitizer does not make the
compiler complain about use of -fsanitize=xyz.

2018-05-25  Rasmus Villemoes  <rasmus.villem...@prevas.dk>

gcc/doc/
        * install.texi: Document --disable-libgcov.

libgcc/
        * Makefile.in: Honour @enable_libgcov@.
        * configure.ac: Add --disable-libgcov option.
        * configure: Regenerate.
---
 gcc/doc/install.texi | 4 ++++
 libgcc/Makefile.in   | 8 +++++++-
 libgcc/configure.ac  | 5 +++++
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 7c5cdc762d3..cf3496d37c6 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1673,6 +1673,10 @@ should not be built.
 Specify that the run-time libraries used by vtable verification
 should not be built.
 
+@item --disable-libgcov
+Specify that the run-time library used for coverage analysis
+should not be built.
+
 @item --with-dwarf2
 Specify that the compiler should
 use DWARF 2 debugging information as the default.
diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
index dd8cee99fd3..22acc15e236 100644
--- a/libgcc/Makefile.in
+++ b/libgcc/Makefile.in
@@ -36,6 +36,7 @@ SHELL = @SHELL@
 
 cpu_type = @cpu_type@
 enable_shared = @enable_shared@
+enable_libgcov = @enable_libgcov@
 double_type_size = @double_type_size@
 long_double_type_size = @long_double_type_size@
 decimal_float = @decimal_float@
@@ -941,7 +942,10 @@ libgcc.a libgcov.a libunwind.a libgcc_eh.a:
 
        $(RANLIB) $@
 
-all: libgcc.a libgcov.a
+all: libgcc.a
+ifeq ($(enable_libgcov),yes)
+all: libgcov.a
+endif
 
 ifneq ($(LIBUNWIND),)
 all: libunwind.a
@@ -1164,9 +1168,11 @@ install-leaf: $(install-shared) $(install-libunwind)
        $(INSTALL_DATA) libgcc.a $(DESTDIR)$(inst_libdir)/
        chmod 644 $(DESTDIR)$(inst_libdir)/libgcc.a
        $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc.a
+ifeq ($(enable_libgcov),yes)
        $(INSTALL_DATA) libgcov.a $(DESTDIR)$(inst_libdir)/
        chmod 644 $(DESTDIR)$(inst_libdir)/libgcov.a
        $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcov.a
+endif
 
        parts="$(INSTALL_PARTS)";                               \
        for file in $$parts; do                                 \
diff --git a/libgcc/configure.ac b/libgcc/configure.ac
index b59aa746afc..a878c473f3d 100644
--- a/libgcc/configure.ac
+++ b/libgcc/configure.ac
@@ -68,6 +68,11 @@ AC_ARG_ENABLE(shared,
 ], [enable_shared=yes])
 AC_SUBST(enable_shared)
 
+AC_ARG_ENABLE(libgcov,
+[  --disable-libgcov       don't provide libgcov],
+[], [enable_libgcov=yes])
+AC_SUBST(enable_libgcov)
+
 AC_ARG_ENABLE(vtable-verify,
 [  --enable-vtable-verify    Enable vtable verification feature ],
 [case "$enableval" in
-- 
2.15.1

Reply via email to