diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-12-01 20:28:14 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-12-01 20:28:14 +0000 |
commit | f045b0370decaedf445cdd5baf8166581182a616 (patch) | |
tree | 9274d4225da713e46defe9bf91fde26507beebff /rtems-coverage | |
parent | 6517cde9f4cbf76e47b9fa96cc1abfffac44a0d4 (diff) |
2011-12-01 Pawel Zagorski <pzagor@agh.edu.pl>
* do_coverage, rtems_config.in: Add GNU coverage support.
Diffstat (limited to 'rtems-coverage')
-rw-r--r-- | rtems-coverage/ChangeLog | 4 | ||||
-rwxr-xr-x | rtems-coverage/do_coverage | 42 | ||||
-rw-r--r-- | rtems-coverage/rtems_config.in | 3 |
3 files changed, 44 insertions, 5 deletions
diff --git a/rtems-coverage/ChangeLog b/rtems-coverage/ChangeLog index 2e6496e..b29c9b0 100644 --- a/rtems-coverage/ChangeLog +++ b/rtems-coverage/ChangeLog @@ -1,3 +1,7 @@ +2011-12-01 Pawel Zagorski <pzagor@agh.edu.pl> + + * do_coverage, rtems_config.in: Add GNU coverage support. + 2011-11-28 Aleksejs Popovs <me@popoffka.ru> * generate_coverage_html, style.css: Google Code-In 2011 task to make diff --git a/rtems-coverage/do_coverage b/rtems-coverage/do_coverage index d13bd96..6d1d8a0 100755 --- a/rtems-coverage/do_coverage +++ b/rtems-coverage/do_coverage @@ -39,6 +39,7 @@ usage: $progname [ -opts ] -L -- do not link files to test execution point (default=link) -r -- run the tests (default=no) -R -- generate reports (default=no) + -g -- generate GCOV reports (default=no) -f -- publish the results to ftp site (default=no) -t -- save the results locally (default=no) -O -- output directory (default=BSP-CONF-YYYYMMDD-HHMM) @@ -81,6 +82,7 @@ toggle() # parse arguments for these verbose="no" +do_all="no" do_posix="yes" do_optimize_size="no" do_covoar="no" @@ -90,6 +92,7 @@ do_rtems_build="no" do_copy_tests="no" do_link_tests="yes" do_run_tests="no" +do_generate_gcov="no" do_reports="no" do_publish="no" do_save_tarballs="yes" @@ -98,10 +101,11 @@ do_developmental="yes" outputDir="" BSP="not_set" -while getopts vB:PSmAucbCLrRftO:dD OPT +while getopts vB:PSmAucbCLrgRftO:dD OPT do case "$OPT" in A) + do_all="yes" do_covoar="yes" do_posix="yes" do_rtems_update="yes" @@ -125,6 +129,7 @@ do C) do_copy_tests=`toggle ${do_copy_tests}` ;; L) do_link_tests=`toggle ${do_link_tests}` ;; r) do_run_tests=`toggle ${do_run_tests}` ;; + g) do_generate_gcov=`toggle ${do_generate_gcov}` ;; R) do_reports=`toggle ${do_reports}` ;; f) do_publish=`toggle ${do_publish}` ;; t) do_save_tarballs=`toggle ${do_save_tarballs}` ;; @@ -221,6 +226,7 @@ print_verbose() echo "POSIX Enabled: " ${do_posix} echo "Core Configuration " ${do_core} echo "Developmental Code: " ${do_developmental} + echo "do_all: " ${do_all} echo "do_covoar " ${do_covoar} echo "do_rtems_update: " ${do_rtems_update} echo "do_rtems_configure: " ${do_rtems_configure} @@ -228,6 +234,7 @@ print_verbose() echo "do_copy_tests: " ${do_copy_tests} echo "do_link_tests: " ${do_link_tests} echo "do_run_tests: " ${do_run_tests} + echo "do_generate_gcov: " ${do_generate_gcov} echo "do_reports: " ${do_reports} echo "do_publish: " ${do_publish} echo "do_save_tarballs: " ${do_save_tarballs} @@ -283,7 +290,7 @@ if [ ! -r ${custom} ] ; then fi fi -grep "^CFLAGS_OPTIMIZE_V.*=.*-O[s01234]" ${custom} >/dev/null +grep "^CFLAGS_OPTIMIZE_V.*=.*-O[s01234].*" ${custom} >/dev/null if [ $? -ne 0 ] ; then echo "Unable to find CFLAGS_OPTIMIZE_V in ${custom}" exit 1 @@ -386,6 +393,7 @@ generate_reports() -e "s,@OUTPUT_DIRECTORY@,${results_dir}," \ -e "s/@EXECUTABLE_EXTENSION@/exe/" \ -e "s/@COVERAGE_EXTENSION@/${RTEMSEXT}.${COVEXT}/" \ + -e "s,@GCNOS_LIST@,${rtems_gcnos_file}," \ -e "s/@PROJECT_NAME@/RTEMS ${RTEMS_VERSION}/" \ <${COVBASE}/rtems_config.in \ >${BASEDIR}/${BSP}-tests/config @@ -418,7 +426,7 @@ generate_reports() RTEMSLIB=${BASEDIR}/b-${BSP}/${TARGET}/${BSP}/lib/librtemscpu.a if [ -r ${RTEMSLIB} ] ; then - cut -d' ' -f1 ${results_dir}/no_range_uncovered.txt | while read symbol + while read symbol do line=`${TARGET}-nm --format=sysv \ ${BASEDIR}/b-${BSP}/${TARGET}/${BSP}/lib/librtemscpu.a | \ @@ -426,7 +434,7 @@ generate_reports() size=`echo ${line} | cut -d'|' -f5 | tr "[:lower:]" "[:upper:]"` size=`echo 16 i ${size} p | dc` echo "${size} ${symbol} unknown" - done | sort -n -r \ + done <${results_dir}/no_range_uncovered.txt | sort -n -r \ >${results_dir}/sizes_unreferenced.txt fi @@ -602,7 +610,15 @@ fi # If requested, configure RTEMS if [ ${do_rtems_configure} = "yes" ] ; then # Now let's patch the make/custom file - sed -e "s/-O[0123s]/${c_opt}/" <${custom} >${custom}.tmp + cat ${custom} | + sed -e '/^CFLAGS_OPTIMIZE_V.*=.*-ftest-coverage -finline-functions -g/d' \ + -e "s/-O[0123s]/${c_opt}/" | + if [ ${do_generate_gcov} = "yes" ] ; then + sed -e \ + '/^CFLAGS_OPTIMIZE_V/a CFLAGS_OPTIMIZE_V += -ftest-coverage -finline-functions -g' + else + cat + fi >${custom}.tmp mv ${custom}.tmp ${custom} echo "Configuring RTEMS..." @@ -694,6 +710,22 @@ else echo "Skipping copying tests..." fi +# If requested prepare data to create gcov reports +if [ ${do_generate_gcov} = "yes" ] ; then + echo "Preparing data for gcov reports..." + + cd ${BASEDIR}/b-${BSP}/ + check_status $? "cd b-${BSP}" + + rtems_gcnos_file="${BASEDIR}/${BSP}-tests/rtems.gcnos" + find `pwd` -name \*.gcno >${rtems_gcnos_file} + + check_status $? "Preparing data for gcov reports for for ${BSP}" +else + rtems_gcnos_file="/dev/null" + echo "Skipping creating gcov reports ..." +fi + # If requested, run the tests with coverage reporting enabled if [ ${do_run_tests} = "yes" ] ; then echo "Running tests..." diff --git a/rtems-coverage/rtems_config.in b/rtems-coverage/rtems_config.in index 3a7bf18..95e8b43 100644 --- a/rtems-coverage/rtems_config.in +++ b/rtems-coverage/rtems_config.in @@ -22,6 +22,9 @@ outputDirectory = @OUTPUT_DIRECTORY@ # This is the extension on the coverage/trace files. coverageExtension = @COVERAGE_EXTENSION@ +# This is the path to file containing *.gcno list +gcnosFile = @GCNOS_LIST@ + # This is the extension on the executable files. executableExtension = @EXECUTABLE_EXTENSION@ |