Changeset ef2241b in rtems-testing


Ignore:
Timestamp:
Apr 26, 2010, 5:23:36 PM (9 years ago)
Author:
Jennifer Averett <Jennifer.Averett@…>
Branches:
4.11, 8895273c193787f84c4585a10f6d6aceb3b25dc4
Children:
c1a3cbc
Parents:
f73e180
Message:

2010-04-26 Jennifer Averett <Jennifer.Averett@…>

Location:
rtems-coverage
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • rtems-coverage/ChangeLog

    rf73e180 ref2241b  
     12010-04-26      Jennifer Averett <Jennifer.Averett@OARcorp.com>
     2
     3        * ObjdumpProcessor.cc, TraceConverter.cc, TraceReaderLogQEMU.cc: Bug
     4        Fix: Instructions with no data were flagged as the end of the blcok.
     5
    162010-04-25      Joel Sherrill <joel.sherrill@oarcorp.com>
    27
  • rtems-coverage/ObjdumpProcessor.cc

    rf73e180 ref2241b  
    121121    itr++;
    122122    if (itr == objdumpList.end()) {
    123       fprintf(
    124         stderr,
    125         "ERROR: ObjdumpProcessor::getAddressAfter - Unable to find address after %x \n",
    126         address
    127       );
    128       exit( -1 );
     123      return 0;
    129124    }
    130125
  • rtems-coverage/TraceConverter.cc

    rf73e180 ref2241b  
    4444  Trace::TraceReaderLogQEMU    log;
    4545  Trace::TraceWriterQEMU       trace;
    46   const char                  *cpuname    = NULL;
    47   const char                  *executable = NULL;
    48   const char                  *tracefile  =  NULL;
     46  const char                  *cpuname    = "";
     47  const char                  *executable = "";
     48  const char                  *tracefile  =  "";
    4949  const char                  *logname = "/tmp/qemu.log";
    5050   
  • rtems-coverage/TraceReaderLogQEMU.cc

    rf73e180 ref2241b  
    6060    int                 status;
    6161    FILE*               logFile;
     62    int                 result;
     63    char                buffer[120];
    6264
    6365    //
     
    105107    //  Read First Start Address
    106108    //
    107     if (
    108       fscanf(
    109         logFile,
    110         "0x%08lx: %s %s\n",
    111         &first.address,
    112         first.instruction,
    113         first.data
    114       ) != 3  )
     109    fgets(buffer, 120, logFile );
     110    result = sscanf(
     111      buffer,
     112      "0x%08lx: %s %s\n",
     113      &first.address,
     114      first.instruction,
     115      first.data
     116    );
     117    if ( result < 2 )
    115118    {
    116119      fprintf(stderr, "Error Unable to Read Initial First Block\n" );
     
    120123    while (!done) {
    121124
    122         last = first;
     125      last = first;
    123126   
    124         // Read until we get to the last instruction in the block.
    125         while(
    126           fscanf(
    127              logFile,
    128              "0x%08lx: %s %s\n",
    129              &last.address,
    130              last.instruction,
    131              last.data
    132            ) == 3
     127      // Read until we get to the last instruction in the block.
     128      do {
     129        fgets(buffer, 120, logFile );
     130        result = sscanf(
     131          buffer,
     132          "0x%08lx: %s %s\n",
     133          &last.address,
     134          last.instruction,
     135          last.data
    133136        );
     137      } while( result > 1);
    134138
    135         // If (last.instruction is a branch instruction) {
     139      nextlogical = objdumpProcessor->getAddressAfter(last.address);
    136140
    137         nextlogical = objdumpProcessor->getAddressAfter(last.address);
    138 
    139         if (! ReadUntilFound( logFile, QEMU_LOG_IN_KEY )) {
    140           done = true;
    141           nextExecuted = last;
    142         }else if (
    143           fscanf(
    144             logFile,
    145             "0x%08lx: %s %s\n",
    146             &nextExecuted.address,
    147             nextExecuted.instruction,
    148             nextExecuted.data
    149           ) != 3
    150         ) {
     141      if (! ReadUntilFound( logFile, QEMU_LOG_IN_KEY )) {
     142        done = true;
     143        nextExecuted = last;
     144      } else {
     145        fgets(buffer, 120, logFile );
     146        result = sscanf(
     147          buffer,
     148          "0x%08lx: %s %s\n",
     149          &nextExecuted.address,
     150          nextExecuted.instruction,
     151          nextExecuted.data
     152        );
     153        if ( result < 2 )
     154        {
    151155          fprintf(stderr, "Error Unable to Read First Block\n" );
    152156        }
     157      }
    153158
     159      // If the nextlogical was not found we are throwing away
     160      // the block; otherwise add the block to the trace list.
     161      if (nextlogical != 0) {
     162        isBranch = objdumpProcessor->IsBranch( last.instruction );
    154163
    155         // If the nextlogical was not found we are throwing away
    156         // the block; otherwise add the block to the trace list.
    157         if (nextlogical != 0) {
    158           isBranch = objdumpProcessor->IsBranch( last.instruction );
    159 
    160           if (  isBranch &&
    161                ( nextExecuted.address == nextlogical )) {
    162             Trace.add(
    163               first.address,
    164               nextlogical,
    165               TraceList::EXIT_REASON_BRANCH_NOT_TAKEN
    166             );
    167           } else if (isBranch) {
    168             Trace.add(
    169               first.address,
    170               nextlogical,
    171               TraceList::EXIT_REASON_BRANCH_TAKEN
    172             );
    173           } else
    174             Trace.add(first.address, nextlogical, TraceList::EXIT_REASON_OTHER);
    175         }   
    176         first = nextExecuted;
     164        if (  isBranch &&
     165          ( nextExecuted.address == nextlogical )) {
     166          Trace.add(
     167            first.address,
     168            nextlogical,
     169            TraceList::EXIT_REASON_BRANCH_NOT_TAKEN
     170          );
     171        } else if (isBranch) {
     172          Trace.add(
     173            first.address,
     174            nextlogical,
     175            TraceList::EXIT_REASON_BRANCH_TAKEN
     176          );
     177        } else
     178          Trace.add(first.address, nextlogical, TraceList::EXIT_REASON_OTHER);
     179      }
     180      first = nextExecuted;
    177181    }
    178 
    179182    fclose( logFile );
    180183    return true;
Note: See TracChangeset for help on using the changeset viewer.