Changeset 48d6c9d in rtems-testing


Ignore:
Timestamp:
May 5, 2010, 11:09:36 PM (9 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.11, 8895273c193787f84c4585a10f6d6aceb3b25dc4
Children:
7c90ee8
Parents:
771b66b
Message:

2010-05-05 Joel Sherrill <joel.sherrill@…>

  • .cvsignore, Makefile, covoar.cc: Add very basic configuration file support.
  • ConfigFile?.cc, ConfigFile?.h, configFile.txt, configfile_test.cc: New files.
Location:
rtems-coverage
Files:
4 added
4 edited

Legend:

Unmodified
Added
Removed
  • rtems-coverage/.cvsignore

    r771b66b r48d6c9d  
     1configfile-test
    12coverage_converter
    23covmerge
  • rtems-coverage/ChangeLog

    r771b66b r48d6c9d  
     12010-05-05      Joel Sherrill <joel.sherrill@oarcorp.com>
     2
     3        * .cvsignore, Makefile, covoar.cc: Add very basic configuration file
     4        support.
     5        * ConfigFile.cc, ConfigFile.h, configFile.txt, configfile_test.cc:
     6        New files.
     7
    182010-04-30      Jennifer Averett
    29
  • rtems-coverage/Makefile

    r771b66b r48d6c9d  
    44
    55INSTALL_DIR=../bin
    6 CXXFLAGS=-g -Wall -O0 -march=native -mtune=native
    7 PROGRAMS=covoar qemu-dump-trace trace-converter
     6CXXFLAGS=-g -Wall -O3 -march=native -mtune=native
     7PROGRAMS=covoar qemu-dump-trace trace-converter configfile-test
    88
    99COMMON_OBJS= app_common.o \
     10  ConfigFile.o \
    1011  CoverageFactory.o \
    1112  CoverageMap.o \
     
    5051  covoar.o
    5152
     53CONFIGFILE_TEST_OBJS = \
     54  $(COMMON_OBJS) \
     55  configfile_test.cc
     56
    5257INSTALLED= \
    5358    ../bin/qemu-dump-trace \
     
    7580trace-converter: $(TRACECONVERTER_OBJS)
    7681        $(CXX) $(CXXFLAGS) -o $(@) $(TRACECONVERTER_OBJS)
     82
     83configfile-test: $(CONFIGFILE_TEST_OBJS)
     84        $(CXX) $(CXXFLAGS) -o $(@) $(CONFIGFILE_TEST_OBJS)
    7785
    7886#  DEPENDENCIES ON SINGLE OBJECTS
  • rtems-coverage/covoar.cc

    r771b66b r48d6c9d  
    4040int                                  executableExtensionLength = 0;
    4141std::list<Coverage::ExecutableInfo*> executablesToAnalyze;
    42 char*                                explanations = NULL;
     42const char*                          explanations = NULL;
    4343char*                                progname;
    4444bool                                 singleExecutable = false;
    4545const char*                          sizeReportFile = "sizes.txt";
    4646const char*                          symbolsFile = NULL;
    47 char*                                target = NULL;
     47const char*                          target = NULL;
     48const char*                          format = NULL;
    4849
    4950
     
    6869    "  -e EXE_EXTENSION          - extension of the executables to analyze\n"
    6970    "  -c COVERAGEFILE_EXTENSION - extension of the coverage files to analyze\n"
     71    "  -C ConfigurationFileName  - name of configuration file\n"
    7072    "\n",
    7173    progname,
     
    7678#define PrintableString(_s) \
    7779       ((!(_s)) ? "NOT SET" : (_s))
     80
     81/*
     82 *  Configuration File Support
     83 */
     84#include "ConfigFile.h"
     85Configuration::FileReader *CoverageConfiguration;
     86
     87Configuration::Options_t Options[] = {
     88  { "explanations", NULL },
     89  { "format",       NULL },
     90  { "symbolsFile ", NULL },
     91  { "target",       NULL },
     92  { "verbose",      NULL },
     93  { NULL,           NULL }
     94};
     95
     96bool isTrue(const char *value)
     97{
     98  if ( !value )                  return false;
     99  if ( !strcmp(value, "true") )  return true;
     100  if ( !strcmp(value, "TRUE") )  return true;
     101  if ( !strcmp(value, "yes") )   return true;
     102  if ( !strcmp(value, "YES") )   return true;
     103  return false;
     104}
     105
     106#define GET_BOOL(_opt, _val) \
     107  if (isTrue(CoverageConfiguration->getOption(_opt))) \
     108    _val = true;
     109
     110#define GET_STRING(_opt, _val) \
     111  do { \
     112    const char *_t; \
     113    _t = CoverageConfiguration->getOption(_opt); \
     114    if ( _t ) _val = _t; \
     115  } while(0)
     116 
     117
     118void check_configuration(void)
     119{
     120  GET_BOOL( "verbose", Verbose );
     121
     122  GET_STRING( "format",       format );
     123  GET_STRING( "target",       target );
     124  GET_STRING( "explanations", explanations );
     125  GET_STRING( "symbolsFile",  symbolsFile );
     126
     127  // Now calculate some values
     128  if ( coverageFileExtension )
     129    coverageExtensionLength = strlen( coverageFileExtension );
     130
     131  if ( executableExtension )
     132    executableExtensionLength = strlen( executableExtension );
     133  if ( format )
     134    coverageFormat = Coverage::CoverageFormatToEnum(optarg);
     135}
    78136
    79137int main(
     
    86144  std::list<Coverage::ExecutableInfo*>::iterator eitr;
    87145  Coverage::ExecutableInfo*                      executableInfo = NULL;
    88   char*                                          format = NULL;
    89146  int                                            i;
    90147  int                                            opt;
    91148
     149  CoverageConfiguration = new Configuration::FileReader(Options);
     150 
    92151  //
    93152  // Process command line options.
     
    95154  progname = argv[0];
    96155
    97   while ((opt = getopt(argc, argv, "1:e:c:E:f:s:T:v")) != -1) {
     156  while ((opt = getopt(argc, argv, "1:e:c:E:f:s:T:vC:")) != -1) {
    98157    switch (opt) {
    99158      case '1':
     
    104163      case 'e':
    105164        executableExtension = optarg;
    106         executableExtensionLength = strlen( executableExtension );
    107165        break;
    108166      case 'c':
    109167         coverageFileExtension = optarg;
    110          coverageExtensionLength = strlen( coverageFileExtension );
     168         break;
     169      case 'C':
     170         CoverageConfiguration->processFile( optarg );
    111171         break;
    112172      case 'E': explanations          = optarg;  break;
     
    114174      case 'T': target                = optarg;  break;
    115175      case 'v': Verbose               = true;    break;
    116       case 'f':
    117         format = optarg;
    118         coverageFormat = Coverage::CoverageFormatToEnum(optarg);
    119         break;
     176      case 'f': format                = optarg;  break;
    120177      default: /* '?' */
    121178        usage();
     
    123180    }
    124181  }
     182
     183  check_configuration();
    125184
    126185  // If a single executable was specified, process the remaining
Note: See TracChangeset for help on using the changeset viewer.