Message ID | 20171026091938.59247-10-roger.pau@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Oct 26, 2017 at 10:19:38AM +0100, Roger Pau Monne wrote: > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > --- > Cc: Andrew Cooper <andrew.cooper3@citrix.com> > Cc: George Dunlap <George.Dunlap@eu.citrix.com> > Cc: Ian Jackson <ian.jackson@eu.citrix.com> > Cc: Jan Beulich <jbeulich@suse.com> > Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > Cc: Stefano Stabellini <sstabellini@kernel.org> > Cc: Tim Deegan <tim@xen.org> > Cc: Wei Liu <wei.liu2@citrix.com> > --- > docs/misc/coverage.markdown | 47 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 47 insertions(+) > > diff --git a/docs/misc/coverage.markdown b/docs/misc/coverage.markdown > index 0a32c48f4b..565644631a 100644 > --- a/docs/misc/coverage.markdown > +++ b/docs/misc/coverage.markdown > @@ -8,6 +8,8 @@ information. Every basic block in the code will be instrumented by the compiler > to compute these statistics. It should not be used in production as it slows > down your hypervisor. > > +# GCOV (GCC coverage) > + > ## Enable coverage > > Test coverage support can be turned on compiling Xen with the `coverage` option set > @@ -87,3 +89,48 @@ blob extracted from xencov!** > * See output in a browser > > firefox cov/index.html > + > +# LLVM coverage > + > +## Enable coverage > + > +Coverage can be enabled using a Kconfig option, from the top-level directory > +use the following command to display the Kconfig menu: > + > + gmake -C xen menuconfig clang=y > + > +The LLVM coverage option can be found inside of the "Debugging Options" > +section. After enabling it just compile Xen as you would normally do: > + > + gmake xen clang=y > + It can be a bit confusing when make and gmake appear in the same document. I suggest you use make all over and add a footnote saying it should be gmake on FreeBSD. This footnote should apply to both gcov and llvm-cov -- I believe you should be able to build gcov support on FreeBSD, too.
On Mon, Oct 30, 2017 at 04:48:09PM +0000, Wei Liu wrote: > On Thu, Oct 26, 2017 at 10:19:38AM +0100, Roger Pau Monne wrote: > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > > --- > > Cc: Andrew Cooper <andrew.cooper3@citrix.com> > > Cc: George Dunlap <George.Dunlap@eu.citrix.com> > > Cc: Ian Jackson <ian.jackson@eu.citrix.com> > > Cc: Jan Beulich <jbeulich@suse.com> > > Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > > Cc: Stefano Stabellini <sstabellini@kernel.org> > > Cc: Tim Deegan <tim@xen.org> > > Cc: Wei Liu <wei.liu2@citrix.com> > > --- > > docs/misc/coverage.markdown | 47 +++++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 47 insertions(+) > > > > diff --git a/docs/misc/coverage.markdown b/docs/misc/coverage.markdown > > index 0a32c48f4b..565644631a 100644 > > --- a/docs/misc/coverage.markdown > > +++ b/docs/misc/coverage.markdown > > @@ -8,6 +8,8 @@ information. Every basic block in the code will be instrumented by the compiler > > to compute these statistics. It should not be used in production as it slows > > down your hypervisor. > > > > +# GCOV (GCC coverage) > > + > > ## Enable coverage > > > > Test coverage support can be turned on compiling Xen with the `coverage` option set > > @@ -87,3 +89,48 @@ blob extracted from xencov!** > > * See output in a browser > > > > firefox cov/index.html > > + > > +# LLVM coverage > > + > > +## Enable coverage > > + > > +Coverage can be enabled using a Kconfig option, from the top-level directory > > +use the following command to display the Kconfig menu: > > + > > + gmake -C xen menuconfig clang=y > > + > > +The LLVM coverage option can be found inside of the "Debugging Options" > > +section. After enabling it just compile Xen as you would normally do: > > + > > + gmake xen clang=y > > + > > It can be a bit confusing when make and gmake appear in the same > document. I suggest you use make all over and add a footnote saying it > should be gmake on FreeBSD. This is my fault from copying the runes from my command line. I'm not sure a footnote is even needed, everything on BSDs should use gmake instead of make, and I don't plan to edit all the documentation files. Thanks, Roger.
diff --git a/docs/misc/coverage.markdown b/docs/misc/coverage.markdown index 0a32c48f4b..565644631a 100644 --- a/docs/misc/coverage.markdown +++ b/docs/misc/coverage.markdown @@ -8,6 +8,8 @@ information. Every basic block in the code will be instrumented by the compiler to compute these statistics. It should not be used in production as it slows down your hypervisor. +# GCOV (GCC coverage) + ## Enable coverage Test coverage support can be turned on compiling Xen with the `coverage` option set @@ -87,3 +89,48 @@ blob extracted from xencov!** * See output in a browser firefox cov/index.html + +# LLVM coverage + +## Enable coverage + +Coverage can be enabled using a Kconfig option, from the top-level directory +use the following command to display the Kconfig menu: + + gmake -C xen menuconfig clang=y + +The LLVM coverage option can be found inside of the "Debugging Options" +section. After enabling it just compile Xen as you would normally do: + + gmake xen clang=y + +## Extract coverage data + +LLVM coverage can be extracted from the hypervisor using the `xencov` tool. +The following actions are available: + +* `xencov read` extract data +* `xencov reset` reset all coverage counters +* `xencov read-reset` extract data and reset counters at the same time. + +## Possible use + +**This section is just an example on how to use these tools!** + +This example assumes you compiled Xen and copied the xen-syms file from +xen/xen-syms into your current directory. + +* Extract the coverage data from Xen: + + xencov read xen.profraw + +* Convert the data into a profile. Note that you can merge more than one + profraw file into a single profdata file. + + llvm-profdata merge xen.profraw -o xen.profdata + +* Generate a HTML report of the code coverage: + + llvm-cov show -format=html -output-dir=cov/ xen-syms -instr-profile=xen.profdata + +* Open cov/index.html with your browser in order to display the profile.
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> --- Cc: Andrew Cooper <andrew.cooper3@citrix.com> Cc: George Dunlap <George.Dunlap@eu.citrix.com> Cc: Ian Jackson <ian.jackson@eu.citrix.com> Cc: Jan Beulich <jbeulich@suse.com> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Stefano Stabellini <sstabellini@kernel.org> Cc: Tim Deegan <tim@xen.org> Cc: Wei Liu <wei.liu2@citrix.com> --- docs/misc/coverage.markdown | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+)