The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
This patch can be used to generate a report showing what C source
lines are executed when the testsuite is run.  gcc is required.  After
applying this patch do:

$ ./configure --enable-gcov
$ make check
$ make gcov

Now look at gcov-report.html and the annotated source files it links
to.

See also gcov(1), gcc(1).

Index: Makefile.in
===================================================================
--- Makefile.in	(revision 32484)
+++ Makefile.in	(working copy)
@@ -443,6 +443,36 @@
 	@$(MAKE) check \
 	  BASE_URL=svn+ssh://localhost`pwd`/subversion/tests/cmdline
 
+gcov:
+	@echo -n "Collecting source files ..." ;                         \
+	FILES=`find subversion/ -path '*/tests/*' -prune -o              \
+	    -name '*.c' -print`;                                         \
+	echo "Done." ;                                                   \
+	echo "Coverage report Subversion r`svnversion .`<br>"            \
+	echo "`date`<br>"                                                \
+	    > gcov-report.html;                                          \
+	echo `uname -o -r -m`  "<br>"                                    \
+	    >> gcov-report.html;                                         \
+	(for file in $$FILES; do                                         \
+	    echo $$file 1>&2 ;                                           \
+	    base=`echo $$file | sed -e 's/.c$$//' `;                     \
+	    if [ -f "$$base.da" ] ; then                                 \
+	        obj=$$base.o;                                            \
+	    else                                                         \
+	        obj=`dirname $$base`/.libs/`basename $$base`.o;          \
+	    fi;                                                          \
+	    stats=`gcov --preserve-paths                                 \
+	        --object-directory=$$obj                                 \
+	        $$file | sed -e "s/Creating.*//"  |                      \
+                sed -s "s|$$PWD/||"`                                     \
+	    mangled=`echo $$base | tr '/' '#'`;                          \
+	    fixed=`echo $$base | tr '/' '_'`;                            \
+	    mv *$$mangled.c.gcov $$fixed.c.gcov;                         \
+	    echo -n $$stats |                                            \
+	        sed -e "s/in file/in file <a href=\"$$fixed.c.gcov\">/"; \
+	    echo "</a><br>";                                             \
+	done) | sort -g >> gcov-report.html
+
 bdbcheck:
 	@$(MAKE) check FS_TYPE=bdb
 
Index: configure.ac
===================================================================
--- configure.ac	(revision 32484)
+++ configure.ac	(working copy)
@@ -684,6 +684,14 @@
 #   # do nothing
 fi
 
+AC_ARG_ENABLE(gcov,
+AC_HELP_STRING([--enable-gcov],
+         [Turn on coverage testing (GCC only).]),
+[
+    if test "$enableval" = "yes" ; then
+      CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
+    fi
+])
 
 AC_ARG_WITH(editor,
 AS_HELP_STRING([--with-editor=PATH],