Changes between Version 76 and Version 77 of TBR/UserManual/RTEMS_Coverage_Analysis


Ignore:
Timestamp:
09/22/09 00:59:42 (15 years ago)
Author:
GlennHumphrey
Comment:

Finished Profiles Section

Legend:

Unmodified
Added
Removed
Modified
  • TBR/UserManual/RTEMS_Coverage_Analysis

    v76 v77  
    116116Initially, the Baseline group included source code from the cpukit.  Specifically the following cpukit directories were included:  score, sapi, rtems and posix.  This group represents a full tasking and synchronization feature set.  What was not in the Baseline group was placed in the Developmental group.  The Developmental group included: libcsupport, libfs/imfs, libmisc/stackchk, libmisc/cpuuse, libmisc/bspcmdline, libmisc/dmpbuf and libmisc/devnull.
    117117
    118 From the two groups, we recognized the need to use different compiler optimization levels and to analyze each group with POSIX threads enabled and POSIX threads disabled.  Applying these options produced eight sub-groups that we called profiles.  The eight profiles are:
     118Within the two groups, we recognized the need to use different compiler optimization levels and to analyze each group with POSIX threads enabled and POSIX threads disabled.  Applying these options produced eight sub-groups that we called profiles.  The eight profiles are:
    119119
    120120 *  Baseline (-Os, POSIX Enabled)
     
    131131
    132132
    133 The compilation and configuration options that effect covmerge are set in the configuration.txt file.  More information about the configuration.txt file can be found in XXX.  When we started the RTEMS Code Coverage effort, the code analyzed was compiled with optimization level -Os.  This optimizes for size without making the object code too difficult to follow.  Following the object code is important when trying to determime how to resolve the uncovered code.  Once the analyzed code approaches 100% covered, it is desirable to change the optimization level to -O2.  This is the most often used optimization level.
     133The compilation level and POSIX configuration options are passed as command line arguments to the RTEMS Coverage Scripts.  [wiki:Developer/Coverage/HowTo RTEMS Code Coverage How To] provides details concerning how to run the RTEMS Coverage Scripts.  When we started the RTEMS Code Coverage effort, the code analyzed was compiled with optimization level -Os.  This optimizes for size without making the object code too difficult to follow.  Following the object code is important when trying to determime how to resolve the uncovered code.  Once the analyzed code approaches 100% covered, it is desirable to change the optimization level to -O2.  This is the most often used optimization level.
    134134
    135135Enabling or disabling POSIX allows us to analyze the RTEMS code in its two most commonly use threading configurations.  When POSIX is enabled, RTEMS is configured to use POSIX threads and the POSIX tests are built and executed as part of the test suite.  When POSIX is disabled, RTEMS is configured to use Classic RTEMS threads and the POSIX tests are not included in the test suite.
     
    137137
    138138
    139 There are several compilation and configuration options that are built into the covmerge script.
    140 We want the coverage build to match the default build for RTEMS.  Current we're using the following configuration variables which alter the build
    141 
    142 Inlining _Thread_Dispatch_enable, etc.
    143 NDEBUG=1 - disable asserts, always keep
    144 RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH=1 - resulted in branch explosion, 200+ new test cases needed to eliminate
    145 RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE=1 - resulted in very difficult code to analyze, should be easy to eliminate
    146 RTEMS_DO_NOT_UNROLL_THREADQ_ENQUEUE_PRIORITY=1 - unrolling loop results in multiple interrupt critical section, should be solvable
     139There are several compilation and configuration options that are built into the RTEMS Coverage Scripts and are not selectable from the command line.  These options effect the RTEMS build and are used to simplify the code to aid analysis.  Ideally, we would like the coverage build to match the default build for RTEMS.  Over time, we will work to eliminate the need for the internal options.  The current options being used are:
     140
     141 *  NDEBUG=1 - Disables asserts.  We will probably keep this option.
     142 *  RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH=1 - Inlining resulted in branch explosion.  Over 200 new test cases will be needed to eliminate this option.
     143 *  RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE=1 - Inlining resulted in very difficult code to analyze.  This option should be able to be eliminated.
     144 *  RTEMS_DO_NOT_UNROLL_THREADQ_ENQUEUE_PRIORITY=1 - Unrolling loop resulted in multiple interrupt critical sections.  This option should be able to be eliminated.
    147145= Beyond Object Code Coverage =
    148146