This looks like a mixed bag of stuff. The qemu cfg file could be by itself.
Two files (Jiri's email and details on writing an Explanations.txt) could go in a (currently non-existent) document on running coverage. The .css file is a support file for the output. Not sure where the else fall but these seems like a handful of small patches rather than one larger patch. --joel On Wed, Apr 25, 2018 at 3:33 PM, Cillian O'Donnell <cpodonne...@gmail.com> wrote: > Co-author: Krzysztof Miesowicz <krzysztof.miesow...@gmail.com> > Co-author: Vijay Kumar Banerjee <vijaykumar9...@gmail.com> > --- > tester/rtems/testing/bsps/leon3_qemu.ini | 52 ++++++ > tester/rtems/testing/coverage.ini | 49 +++++ > tester/rtems/testing/coverage/Categories.txt | 19 ++ > tester/rtems/testing/coverage/Explanations.txt | 35 ++++ > .../coverage/SPARC-Annul-Slot-Explanation.txt | 56 ++++++ > tester/rtems/testing/coverage/style.css | 197 > +++++++++++++++++++++ > tester/rtems/testing/coverage/symbol_sets.cfg | 3 + > tester/rtems/testing/qemu.cfg | 14 +- > 8 files changed, 424 insertions(+), 1 deletion(-) > create mode 100644 tester/rtems/testing/bsps/leon3_qemu.ini > create mode 100644 tester/rtems/testing/coverage.ini > create mode 100644 tester/rtems/testing/coverage/Categories.txt > create mode 100644 tester/rtems/testing/coverage/Explanations.txt > create mode 100644 tester/rtems/testing/coverage/ > SPARC-Annul-Slot-Explanation.txt > create mode 100644 tester/rtems/testing/coverage/style.css > create mode 100644 tester/rtems/testing/coverage/symbol_sets.cfg > > diff --git a/tester/rtems/testing/bsps/leon3_qemu.ini > b/tester/rtems/testing/bsps/leon3_qemu.ini > new file mode 100644 > index 0000000..9888008 > --- /dev/null > +++ b/tester/rtems/testing/bsps/leon3_qemu.ini > @@ -0,0 +1,52 @@ > +# > +# RTEMS Tools Project (http://www.rtems.org/) > +# Copyright 2010-2014 Chris Johns (chr...@rtems.org) > +# All rights reserved. > +# > +# This file is part of the RTEMS Tools package in 'rtems-tools'. > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions are > met: > +# > +# 1. Redistributions of source code must retain the above copyright > notice, > +# this list of conditions and the following disclaimer. > +# > +# 2. Redistributions in binary form must reproduce the above copyright > notice, > +# this list of conditions and the following disclaimer in the > documentation > +# and/or other materials provided with the distribution. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > THE > +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS > BE > +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > THE > +# POSSIBILITY OF SUCH DAMAGE. > +# > + > +# > +# The Leon 3 QEMU BSP > +# > +[global] > +coverage_supported = 1 > +bsp = leon3_qemu > +[leon3_qemu] > +bsp = leon3_qemu > +arch = sparc > +tester = %{_rtscripts}/qemu.cfg > +bsp_qemu_opts = %{qemu_opts_base} -M leon3_generic > + > + > +[coverage] > +format = QEMU > +target = sparc-rtems5 > +explanations = %{_rtscripts}/coverage/Explanations.txt > +coverage_extension = .cov > +gcnos_file = %{_rtscripts}/coverage/rtems.gcnos > +executable_extension = exe > +project_name = RTEMS-5 > +report_format = html > diff --git a/tester/rtems/testing/coverage.ini b/tester/rtems/testing/ > coverage.ini > new file mode 100644 > index 0000000..c1eef2e > --- /dev/null > +++ b/tester/rtems/testing/coverage.ini > @@ -0,0 +1,49 @@ > +# > +# RTEMS Tools Project (http://www.rtems.org/) > +# Copyright 2010-2014 Chris Johns (chr...@rtems.org) > +# All rights reserved. > +# > +# This file is part of the RTEMS Tools package in 'rtems-tools'. > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions are > met: > +# > +# 1. Redistributions of source code must retain the above copyright > notice, > +# this list of conditions and the following disclaimer. > +# > +# 2. Redistributions in binary form must reproduce the above copyright > notice, > +# this list of conditions and the following disclaimer in the > documentation > +# and/or other materials provided with the distribution. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > THE > +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS > BE > +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > THE > +# POSSIBILITY OF SUCH DAMAGE. > +# > + > +# > +# All paths in defaults must be Unix format. Do not store any Windows > format > +# paths in the defaults. > +# > +# Every entry must describe the type of checking a host must pass. > +# > +# Records: > +# key: type, attribute, value > +# type : none, dir, exe, triplet > +# attribute: none, required, optional > +# value : 'single line', '''multi line''' > +# > + > +# > +# Global defaults > +# > +[global] > +__covoar = covoar > +_coverage = 1 > diff --git a/tester/rtems/testing/coverage/Categories.txt > b/tester/rtems/testing/coverage/Categories.txt > new file mode 100644 > index 0000000..e19a456 > --- /dev/null > +++ b/tester/rtems/testing/coverage/Categories.txt > @@ -0,0 +1,19 @@ > +This is the list of Explanation Categories used when analyzing RTEMS > +Coverage report. By using standard categories, the table filter on > +the web site works better. > + > +Simple Test Case > + > +Hard Test Tase > + > +Uncalled Routine > + > +Interrupt Critical Section > + > +Simple Error Case > + > +Hard Error Case > + > +Allocation Error > + > +Bharath Suri > diff --git a/tester/rtems/testing/coverage/Explanations.txt > b/tester/rtems/testing/coverage/Explanations.txt > new file mode 100644 > index 0000000..a5917f6 > --- /dev/null > +++ b/tester/rtems/testing/coverage/Explanations.txt > @@ -0,0 +1,35 @@ > +schedulerpriorityyield.c:47 > +Simple Test Case > +Branch Never Taken > +New test where there is more than one thread at a priority with the > +executing thread being non-preemptive. Create a higher priority thread > +and then yield. > + > + init task at priority 2, non-preemptive > + create task at priority 2 > + create task at priority 1 > + yield > ++++ > + > +schedulerpriorityyield.c:51 > +Simple Test Case > +Branch Always Taken > +New test where only one thread at a priority (non-preemptive), create a > +thread at higher priority, then yield. > + > + init task at priority 2, non-preemptive > + create task at priority 1 > + yield > ++++ > + > +schedulerpriorityyield.c:52 > +Simple Test Case > +Not Executed > +Same test case as schedulerpriorityyield.c:51 > ++++ > + > +coremsg.c:86 > +Simple Test Case > +We need to request enough messages of a certain size that the math > +overflows to less than a single message. > ++++ > diff --git a/tester/rtems/testing/coverage/SPARC-Annul-Slot-Explanation.txt > b/tester/rtems/testing/coverage/SPARC-Annul-Slot-Explanation.txt > new file mode 100644 > index 0000000..ef740d3 > --- /dev/null > +++ b/tester/rtems/testing/coverage/SPARC-Annul-Slot-Explanation.txt > @@ -0,0 +1,56 @@ > +The SPARC assembly is often hard to understand because a single > +instruction will show up as not executed. The instructions before > +and after it will be marked as executed. The instruction before > +the one not executed should be a "bxx,a" instruction which means > +that the instruction following the branch instruction is executed > +ONLY if the branch is taken. Otherwise it is "annulled" or skipped. > + > +So when you see these cases, it means the branch was NOT taken. > + > +=================================================================== > +Subject: <offlist> annul slot explanation > +From: Jiri Gaisler <j...@gaisler.com> > +Date: Wed, 3 Jun 2009 14:57:48 -0500 > +To: Joel Sherrill <joel.sherr...@oarcorp.com> > + > + > +Joel Sherrill wrote: > +> > Hi, > +> > > +> > I am trying to look at more coverage cases and > +> > wanted to make sure I am reading things correctly. > +> > > +> > The code in question is: > +> > > +> > > +> > if ( the_thread->current_priority > interested_priority ) > +> > 200fd00: d8 00 e0 14 ld [ %g3 + 0x14 ], %o4 > +> > 200fd04: 80 a3 00 04 cmp %o4, %g4 > +> > 200fd08: 38 80 00 1c bgu,a 200fd78 <killinfo+0x224> > +> > 200fd0c: 98 10 00 04 mov %g4, > +> > %o4 <== NOT EXECUTED > +> > > +> > /* > +> > * If this thread is not interested, then go on to the next > thread. > +> > */ > +> > > +> > api = the_thread->API_Extensions[ THREAD_API_POSIX ]; > +> > 200fd10: d4 00 e1 6c ld [ %g3 + 0x16c ], %o2 > +> > > +> > Am I correct in interpreting this as meaning 0x200fd0c > +> > is not executed because the bgu,a is never taken. And it > +> > is not executed as part of falling through. > + > +Yes, this is correct. The branch delay slot is only executed > +when the branch is taken. > + > +Jiri. > + > +> > > +> > So in this case we need a test where the "if" condition > +> > is true if I am reading things correctly. > +> > > +> > Thanks. There are a number of these 4 byte cases which > +> > are probably easy to hit if I read the code correctly. > +> > > +> > > diff --git a/tester/rtems/testing/coverage/style.css > b/tester/rtems/testing/coverage/style.css > new file mode 100644 > index 0000000..c715518 > --- /dev/null > +++ b/tester/rtems/testing/coverage/style.css > @@ -0,0 +1,197 @@ > +body { > + background: rgb(253,253,253); > + color: rgb(0,0,0); > + font-family: helvetica, sans-serif; > + font-size: 1em; > + line-height: 1.4; > + margin: 5px, 5px, 5px, 5px; > + padding: 0; > +} > + > +a:link { > + color: rgb(180, 50, 50); > + font-family: helvetica, sans-serif; > + font-size: 1.0em; > +} > + > +a:visited { > + color: purple; > + font-family: helvetica, sans-serif; > + font-size: 1.0em; > +} > + > +a:hover { > + color: rgb(0, 0, 0); > + font-family: helvetica, sans-serif; > + font-size: 1.0em; > +} > + > +a:active { > + color: red; > + font-family: helvetica, sans-serif; > + font-size: 1.0em; > +} > + > +.heading { > + background: rgb(250,250,250); > + background-image: url("http://www.rtems.org/logos/rtems_logo.jpg"); > + background-repeat: no-repeat; > + color: rgb(55,55,55); > + font-size: 1.5em; > + height: 140px; > + padding-top: 20px; > + padding-left: 300px; > +} > + > +.heading-title { > + text-align: center; > + color: rgb(0,0,0); > + font-size: 0.9em; > + font-weight: bold; > + padding-top: 5px; > + padding-left: 0px; > + text-align: center; > + width: 100%; > +} > + > +.datetime { > + color: rgb(55,55,55); > + font-size: 0.8em; > + padding-top: 5px; > + padding-left: 0px; > + text-align: center; > + width: 100%; > +} > + > +.info { > + color: rgb(55,55,55); > + font-size: 0.6em; > + padding-top: 5px; > + padding-left: 00px; > + text-align: center; > + width: 100%; > +} > + > +.stats-table { > + background: rgb(225,225,225); > + font-size: 0.9em; > + border: 1px solid rgb(200, 200, 200); > + padding: 0; > + margin-top: 3px; > + margin-left: 10px; > + width: 70%; > +} > + > +.stats-table-target { > + background: rgb(243,243,243); > + font-size: 1.2em; > + padding-left: 10px; > + text-align: left; > +} > + > +.stats-target-results { > + background: rgb(243,243,243); > + font-size: 0.9em; > + text-align: right; > + padding-right: 10px; > +} > + > +.stats-target-good { > + background: rgb(30,230,30); > + font-size: 0.9em; > + text-align: right; > + padding-right: 10px; > +} > + > +.stats-target-good { > + background: rgb(50,180,50); > + color: rgb(230,230,230); > + font-size: 0.9em; > + text-align: center; > + padding-right: 10px; > +} > + > +.stats-target-bad { > + background: rgb(180,50,50); > + color: rgb(230,230,230); > + font-size: 0.9em; > + text-align: center; > + padding-right: 10px; > +} > + > +.stats-table-top { > + background: rgb(243,243,243); > + color: rgb(0,0,0); > + font-size: 0.9em; > + padding-left: 2px; > +} > + > +.stats-table-row { > + background: rgb(253,253,253); > + font-size: 0.9em; > + padding: 1px; > + text-align: right; > +} > + > +.error-table { > + font-size: 0.9em; > + border: 1px solid rgb(200, 200, 200); > + padding: 0; > + margin-left: 10px; > + width: 96%; > +} > + > +.error-table-top { > + background: rgb(225,225,225); > + color: rgb(0,0,0); > + font-size: 0.9em; > + padding-left: 2px; > +} > + > +.error-table-on { > + background: rgb(225,225,225); > + font-size: 0.9em; > + padding-left: 2px; > +} > + > +.error-table-off { > + background: rgb(253,253,253); > + font-size: 0.9em; > + padding-left: 2px; > +} > + > +.error-table-dups { > + text-align: right; > + padding-right: 2px; > +} > + > +.error-table-error { > + background: rgb(255,150,150); > + font-size: 0.9em; > + padding-left: 2px; > +} > + > +.error-table-warning { > + font-size: 0.9em; > + padding-left: 2px; > +} > + > +.navbar { > + margin-left: auto; > + margin-right: auto; > + margin-top: 10px; > + width: 40%; > +} > +th.table-sortable { > + background-image:url("unsorted.gif"); > + cursor: pointer; > + background-position: center left; > + background-repeat: no-repeat; > + padding-left: 15px; > +} > +th.table-sorted-asc { > + background-image:url("descending.gif"); > +} > +th.table-sorted-desc { > + background-image:url("ascending.gif"); > +} > \ No newline at end of file > diff --git a/tester/rtems/testing/coverage/symbol_sets.cfg > b/tester/rtems/testing/coverage/symbol_sets.cfg > new file mode 100644 > index 0000000..7f62cce > --- /dev/null > +++ b/tester/rtems/testing/coverage/symbol_sets.cfg > @@ -0,0 +1,3 @@ > +symbolset: > + name=score > + lib=sparc-rtems5/c/leon3/cpukit/score/libscore.a > diff --git a/tester/rtems/testing/qemu.cfg b/tester/rtems/testing/qemu.cfg > index db5b6b2..7a65ddd 100644 > --- a/tester/rtems/testing/qemu.cfg > +++ b/tester/rtems/testing/qemu.cfg > @@ -64,6 +64,18 @@ > %define qemu_opts %{bsp_qemu_opts} > > # > +# Coverage analysis > +# > +%define coverage_arg %{nil} > +%if %{defined _coverage} > + %if %{coverage_supported} > + %define coverage_arg -exec-trace %{test_executable}.cov > + %else > + %error "Coverage analysis unsupported for %{bsp}" > + %endif > +%endif > + > +# > # Executable > # > -%execute %{qemu_cmd} %{qemu_opts} -kernel %{test_executable} > +%execute %{qemu_cmd} %{qemu_opts} -kernel %{test_executable} > %{coverage_arg} > -- > 2.7.4 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel