On Sun, Jun 10, 2012 at 4:04 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 10/06/2012 15:04, Blue Swirl ha scritto: >> @@ -2851,10 +2859,14 @@ fi >> # End of CC checks >> # After here, no more $cc or $ld runs >> >> -if test "$debug" = "no" ; then >> +if test "$gcov" = "yes" ; then >> + CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" >> + LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" >> +elif test "$debug" = "no" ; then >> CFLAGS="-O2 $CFLAGS" >> fi > > Why does need to be mutually exclusive?
Optimization may skip generating some code so coverage would not be recorded for these areas. Recommended by GNU: http://gcc.gnu.org/onlinedocs/gcc/Gcov-and-Optimization.html#Gcov-and-Optimization > >> >> + >> # Consult white-list to determine whether to enable werror >> # by default. Only enable by default for git builds >> z_version=`cut -f3 -d. $source_path/VERSION` >> @@ -3033,6 +3045,8 @@ echo "OpenGL support $opengl" >> echo "libiscsi support $libiscsi" >> echo "build guest agent $guest_agent" >> echo "coroutine backend $coroutine_backend" >> +echo "gcov $gcov_tool" >> +echo "gcov enabled $gcov" >> >> if test "$sdl_too_old" = "yes"; then >> echo "-> Your SDL version is too old - please upgrade to have SDL support" >> @@ -3441,6 +3455,9 @@ echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak >> echo "EXESUF=$EXESUF" >> $config_host_mak >> echo "LIBS_QGA+=$libs_qga" >> $config_host_mak >> echo "POD2MAN=$POD2MAN" >> $config_host_mak >> +if test "$gcov" = "yes" ; then >> + echo "GCOV=$gcov_tool" >> $config_host_mak >> +fi >> >> # generate list of library paths for linker script >> >> diff --git a/tests/Makefile b/tests/Makefile >> index 2e754c3..d265daa 100644 >> --- a/tests/Makefile >> +++ b/tests/Makefile >> @@ -1,18 +1,42 @@ >> export SRC_PATH >> >> check-unit-y = tests/check-qdict$(EXESUF) >> +GCOV_FILES = $(SRC_PATH)/qdict.c > > Ouch, ugly. Why is it needed? Gcov needs to know both the source file and the object. Probably it can't get this information from the object or .gc{da,no} files. > > Paolo