71 lines
1.8 KiB
ReStructuredText
71 lines
1.8 KiB
ReStructuredText
GCOV for skiboot
|
|
================
|
|
|
|
Unit tests
|
|
----------
|
|
All unit tests are built+run with gcov enabled. ::
|
|
|
|
make coverage-report
|
|
|
|
will generate a unit test coverage report like:
|
|
http://open-power.github.io/skiboot/coverage-report/
|
|
|
|
Skiboot
|
|
-------
|
|
You can now build Skiboot itself with gcov support, boot it on a machine,
|
|
do things, and then extract out gcda files to generate coverage reports
|
|
from real hardware (or a simulator).
|
|
|
|
Building Skiboot with GCOV
|
|
--------------------------
|
|
::
|
|
|
|
SKIBOOT_GCOV=1 make
|
|
|
|
You may need to ``make clean`` first.
|
|
|
|
This will build a skiboot lid roughly *twice* the size.
|
|
|
|
Flash/Install the skiboot.lid and boot.
|
|
|
|
Extracting GCOV data
|
|
--------------------
|
|
The way we extract the gcov data from a system is by dumping the contents
|
|
of skiboot memory and then parsing the data structures in user space with
|
|
the extract-gcov utility in the skiboot repo.
|
|
|
|
mambo: ::
|
|
|
|
mysim memory fwrite 0x30000000 0x240000 skiboot.dump
|
|
|
|
FSP: ::
|
|
|
|
getmemproc 30000000 3407872 -fb skiboot.dump
|
|
|
|
linux (e.g. petitboot environment): ::
|
|
|
|
dd if=/proc/kcore skip=1572864 count=6656 of=skiboot.dump
|
|
|
|
You basically need to dump out the first 3MB of skiboot memory.
|
|
|
|
Then you need to find out where the gcov data structures are: ::
|
|
|
|
perl -e "printf '0x%x', 0x30000000 + 0x`grep gcov_info_list skiboot.map|cut -f 1 -d ' '`"
|
|
|
|
That address needs to be supplied to the extract-gcov utility: ::
|
|
|
|
./extract-gcov skiboot.dump 0x3023ec40
|
|
|
|
Once you've run extract-gcov, it will have extracted the gcda files
|
|
from the skiboot memory image.
|
|
|
|
You can then run lcov: ::
|
|
|
|
lcov -b . -q -c -d . -o skiboot-boot.info
|
|
--gcov-tool
|
|
/opt/cross/gcc-4.8.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcov
|
|
|
|
*IMPORTANT* you should point lcov to the gcov for the compiler you used
|
|
to build skiboot, otherwise you're likely to get errors.
|
|
|
|
|