diff options
author | Stewart Smith <stewart@linux.vnet.ibm.com> | 2014-10-22 16:08:50 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2014-10-22 16:40:55 +1100 |
commit | 30bc0aa7948a8a3000dab117646a829cd3a2b3ad (patch) | |
tree | 82fe1108b5e11c3627f17e0032b1b8cd964d3720 /libc/test | |
parent | d9e7e3544ad2a0912b67ce3a6a66cc776dc1abe9 (diff) | |
download | skiboot-30bc0aa7948a8a3000dab117646a829cd3a2b3ad.zip skiboot-30bc0aa7948a8a3000dab117646a829cd3a2b3ad.tar.gz skiboot-30bc0aa7948a8a3000dab117646a829cd3a2b3ad.tar.bz2 |
Preliminary code coverage reporting infrastructure
Add support in core/test/Makefile.check to build -gcov
binaries (with -lgcov and -fprofile-blah-blah) as well
as some targets for producing lcov HTML code coverage reports.
As part of this, I had to fix up an oddity in run-mem_region_init
where that due to running under Valgrind, we'd be malloc()ed a
heap with a small address, well inside the mem_regions we added but
when not running under valgrind (e.g. for code coverage reporting)
we would get a much larger address, outside this range and hit
an assert. So, after fiddling with the memory stuff for this test,
I think I have it right - it passes both under valgrind and not and
does produce code coverage data.
Currently, we're at this level of code coverage by unit tests:
Hit Total Coverage
Lines: 1936 2574 75.2 %
Functions: 177 225 78.7 %
Branches: 1243 2360 52.7 %
The totals should largely be ignored due to the only code being
counted is that linked into the unit tests (total LOC is ~50kLOC
according to sloccount... so unit tests currently cover < 5%)
Try the "make coverage-report" target, you'll get coverage-report
directory with a LCOV HTML report
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'libc/test')
-rw-r--r-- | libc/test/Makefile.check | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libc/test/Makefile.check b/libc/test/Makefile.check index 188b6b1..58664a7 100644 --- a/libc/test/Makefile.check +++ b/libc/test/Makefile.check @@ -3,6 +3,11 @@ LIBC_TEST := libc/test/run-time check: $(LIBC_TEST:%=%-check) +coverage: $(LIBC_TEST:%=%-gcov-run) + +$(LIBC_TEST:%=%-gcov-run) : %-run: % + $< + $(LIBC_TEST:%=%-check) : %-check: % $(VALGRIND) $< @@ -11,6 +16,11 @@ $(LIBC_TEST) : % : %.c $(LIBC_TEST): % : %.d +$(LIBC_TEST:%=%-gcov): %-gcov : %.c % + $(HOSTCC) $(HOSTCFLAGS) -fprofile-arcs -ftest-coverage -lgcov -O0 -g -I include -I . -I libfdt -I libc/include -o $@ $< + +$(LIBC_TEST:%=%-gcov): % : $(%.d:-gcov=) + libc/test/%.d: libc/test/%.c $(HOSTCC) $(HOSTCFLAGS) -I include -I . -I libfdt -I libc/include -M $< > $@ @@ -19,4 +29,4 @@ libc/test/%.d: libc/test/%.c clean: libc-test-clean libc-test-clean: - $(RM) -f libc/test/*.[od] $(LIBC_TEST) + $(RM) -f libc/test/*.[od] $(LIBC_TEST) $(LIBC_TEST:%=%-gcov) |