Message ID | 20180611072553.26334-1-rasmus.villemoes@prevas.dk |
---|---|
State | New |
Headers | show |
Series | [v3] add support for --disable-gcov | expand |
On 06/11/2018 01:25 AM, Rasmus Villemoes wrote: > For some targets (in my case VxWorks 5.5), libgcov does not compile due > to missing functions and macros such as getpid() and F_OK. > > Incidentally, gcc/Makefile.in already contains comments such as > > # Install gcov if it was compiled. > > but there is no logic in place to actually allow gcov to not be > compiled. I think in the past folks would do things like make LANGUAGES="c c++" Which would skip building gcov. > > So add an option for disabling build and install of libgcov and the > related host tools. > > 2018-06-10 Rasmus Villemoes <rasmus.villemoes@prevas.dk> > > gcc/ > * configure.ac: Add --disable-gcov option. > * configure: Regenerate. > * Makefile.in: Honour @enable_gcov@. > * doc/install.texi: Document --disable-gcov. > > libgcc/ > * configure.ac: Add --disable-gcov option. > * configure: Regenerate. > * Makefile.in: Honour @enable_gcov@. OK. Presumably you're going through the process to get write access. Once that's wrapped up you can install this patch. Thanks, jeff
Hi Jeff, >> So add an option for disabling build and install of libgcov and the >> related host tools. >> >> 2018-06-10 Rasmus Villemoes <rasmus.villemoes@prevas.dk> >> >> gcc/ >> * configure.ac: Add --disable-gcov option. >> * configure: Regenerate. >> * Makefile.in: Honour @enable_gcov@. >> * doc/install.texi: Document --disable-gcov. >> >> libgcc/ >> * configure.ac: Add --disable-gcov option. >> * configure: Regenerate. >> * Makefile.in: Honour @enable_gcov@. > OK. Presumably you're going through the process to get write access. > Once that's wrapped up you can install this patch. this patch badly broke all -fprofile-generate/-fprofile-use tests in the default case like this: UNRESOLVED: g++.dg/bprob/g++-bprob-1.C compilation, -O0 -fbranch-probabilities FAIL: g++.dg/bprob/g++-bprob-1.C compilation, -O0 -fprofile-arcs ld: fatal: library -lgcov: not found collect2: error: ld returned 1 exit status compiler exited with status 1 FAIL: g++.dg/bprob/g++-bprob-1.C compilation, -g -fprofile-arcs libgcov.a is not copied over from libgcc to gcc due to a typo in libgcc/Makefile.in. Fixed as follows; will install as obvious once bootstrap has finished. Rainer
On 2018-06-27 21:22, Rainer Orth wrote: > Hi Jeff, > >>> So add an option for disabling build and install of libgcov and the >>> related host tools. >>> >>> 2018-06-10 Rasmus Villemoes <rasmus.villemoes@prevas.dk> >>> >>> gcc/ >>> * configure.ac: Add --disable-gcov option. >>> * configure: Regenerate. >>> * Makefile.in: Honour @enable_gcov@. >>> * doc/install.texi: Document --disable-gcov. >>> >>> libgcc/ >>> * configure.ac: Add --disable-gcov option. >>> * configure: Regenerate. >>> * Makefile.in: Honour @enable_gcov@. >> OK. Presumably you're going through the process to get write access. >> Once that's wrapped up you can install this patch. > > this patch badly broke all -fprofile-generate/-fprofile-use tests in the > default case like this: > > UNRESOLVED: g++.dg/bprob/g++-bprob-1.C compilation, -O0 -fbranch-probabilities > FAIL: g++.dg/bprob/g++-bprob-1.C compilation, -O0 -fprofile-arcs > > ld: fatal: library -lgcov: not found > collect2: error: ld returned 1 exit status > compiler exited with status 1 > FAIL: g++.dg/bprob/g++-bprob-1.C compilation, -g -fprofile-arcs > > libgcov.a is not copied over from libgcc to gcc due to a typo in > libgcc/Makefile.in. Fixed as follows; will install as obvious once > bootstrap has finished. > I'm terribly sorry about that! I was sure I had tested all of --enable-gcov, --disable-gcov and none of those, and convinced myself that the default behaviour was unchanged. Thanks for spotting the problem and fixing it. I will try to be much more careful in the future. Rasmus
diff --git a/gcc/Makefile.in b/gcc/Makefile.in index d8f3e886118..1f38cacde7a 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -137,8 +137,10 @@ SUBDIRS =@subdirs@ build # Selection of languages to be made. CONFIG_LANGUAGES = @all_selected_languages@ -LANGUAGES = c gcov$(exeext) gcov-dump$(exeext) gcov-tool$(exeext) \ - $(CONFIG_LANGUAGES) +LANGUAGES = c $(CONFIG_LANGUAGES) +ifeq (@enable_gcov@,yes) +LANGUAGES += gcov$(exeext) gcov-dump$(exeext) gcov-tool$(exeext) +endif # Default values for variables overridden in Makefile fragments. # CFLAGS is for the user to override to, e.g., do a cross build with -O2. diff --git a/gcc/configure.ac b/gcc/configure.ac index 010ecd2ccf6..4fc851c644e 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -921,6 +921,11 @@ AC_ARG_ENABLE(shared, ], [enable_shared=yes]) AC_SUBST(enable_shared) +AC_ARG_ENABLE(gcov, +[ --disable-gcov don't provide libgcov and related host tools], +[], [enable_gcov=yes]) +AC_SUBST(enable_gcov) + AC_ARG_WITH(specs, [AS_HELP_STRING([--with-specs=SPECS], [add SPECS to driver command-line processing])], diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 7c5cdc762d3..03eaeed4e87 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1044,6 +1044,10 @@ virtual calls in verifiable mode at all. However the libvtv library will still be built (see @option{--disable-libvtv} to turn off building libvtv). @option{--disable-vtable-verify} is the default. +@item --disable-gcov +Specify that the run-time library used for coverage analysis +and associated host tools should not be built. + @item --disable-multilib Specify that multiple target libraries to support different target variants, calling diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in index dd8cee99fd3..b7f20557214 100644 --- a/libgcc/Makefile.in +++ b/libgcc/Makefile.in @@ -36,6 +36,7 @@ SHELL = @SHELL@ cpu_type = @cpu_type@ enable_shared = @enable_shared@ +enable_gcov = @enable_gcov@ 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_gcov),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..9d0bbcaba86 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(gcov, +[ --disable-gcov don't provide libgcov and related host tools], +[], [enable_gcov=yes]) +AC_SUBST(enable_gcov) + AC_ARG_ENABLE(vtable-verify, [ --enable-vtable-verify Enable vtable verification feature ], [case "$enableval" in