change log for gcc-testing (2010-05-11)
rtems-vc at rtems.org
rtems-vc at rtems.org
Tue May 11 20:10:03 UTC 2010
*joel*:
2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
* CoverageReaderQEMU.cc, ReportsBase.cc, app_common.cc, app_common.h,
covoar.cc: Now properly know when a trace or coverage format includes
or does not include branch information.
M 1.217 rtems-coverage/ChangeLog
M 1.13 rtems-coverage/CoverageReaderQEMU.cc
M 1.6 rtems-coverage/ReportsBase.cc
M 1.8 rtems-coverage/app_common.h
M 1.4 rtems-coverage/app_common.cc
M 1.17 rtems-coverage/covoar.cc
diff -u gcc-testing/rtems-coverage/ChangeLog:1.216 gcc-testing/rtems-coverage/ChangeLog:1.217
--- gcc-testing/rtems-coverage/ChangeLog:1.216 Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/ChangeLog Tue May 11 14:44:52 2010
@@ -1,5 +1,11 @@
2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
+ * CoverageReaderQEMU.cc, ReportsBase.cc, app_common.cc, app_common.h,
+ covoar.cc: Now properly know when a trace or coverage format includes
+ or does not include branch information.
+
+2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
* DesiredSymbols.cc: Remove range1.tmp and ranges2.tmp.
* ReportsBase.cc, app_common.cc, covoar.cc, do_coverage: Generate
files into user specified output directory.
diff -u gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.12 gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.13
--- gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.12 Fri May 7 13:53:58 2010
+++ gcc-testing/rtems-coverage/CoverageReaderQEMU.cc Tue May 11 14:44:52 2010
@@ -13,6 +13,7 @@
#include <stdlib.h>
#include <sys/stat.h>
+#include "app_common.h"
#include "CoverageReaderQEMU.h"
#include "CoverageMap.h"
#include "ExecutableInfo.h"
@@ -35,6 +36,7 @@
CoverageReaderQEMU::CoverageReaderQEMU()
{
+ BranchInfoAvailable = true;
}
CoverageReaderQEMU::~CoverageReaderQEMU()
diff -u gcc-testing/rtems-coverage/ReportsBase.cc:1.5 gcc-testing/rtems-coverage/ReportsBase.cc:1.6
--- gcc-testing/rtems-coverage/ReportsBase.cc:1.5 Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/ReportsBase.cc Tue May 11 14:44:52 2010
@@ -220,15 +220,16 @@
// Open the branch report file
report = OpenBranchFile( fileName );
+
if (!report)
return;
- // If no branches were found, then branch coverage is not supported
- if (SymbolsToAnalyze->getNumberBranchesFound() == 0)
+ // If no branches were found of branch coverage is not supported
+ if ((SymbolsToAnalyze->getNumberBranchesFound() == 0) ||
+ (BranchInfoAvailable == false) ) {
PutNoBranchInfo(report);
-
- // If branches were found, ...
- else {
+ // If branches were found, ...
+ } else {
// Process uncovered branches for each symbol.
count = 0;
diff -u gcc-testing/rtems-coverage/app_common.h:1.7 gcc-testing/rtems-coverage/app_common.h:1.8
--- gcc-testing/rtems-coverage/app_common.h:1.7 Mon May 10 14:31:11 2010
+++ gcc-testing/rtems-coverage/app_common.h Tue May 11 14:44:52 2010
@@ -17,6 +17,7 @@
extern Coverage::Toolnames* Tools;
extern bool Verbose;
extern const char* outputDirectory;
+extern bool BranchInfoAvailable;
bool FileIsNewer( const char *f1, const char *f2 );
bool ReadUntilFound( FILE *file, const char *line );
diff -u gcc-testing/rtems-coverage/app_common.cc:1.3 gcc-testing/rtems-coverage/app_common.cc:1.4
--- gcc-testing/rtems-coverage/app_common.cc:1.3 Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/app_common.cc Tue May 11 14:44:52 2010
@@ -17,12 +17,13 @@
/*
* Global variables for the program
*/
-Coverage::Explanations* AllExplanations = NULL;
-Coverage::ObjdumpProcessor* objdumpProcessor = NULL;
-Coverage::DesiredSymbols* SymbolsToAnalyze = NULL;
-Coverage::Toolnames* Tools = NULL;
-bool Verbose = false;
-const char* outputDirectory = ".";
+Coverage::Explanations* AllExplanations = NULL;
+Coverage::ObjdumpProcessor* objdumpProcessor = NULL;
+Coverage::DesiredSymbols* SymbolsToAnalyze = NULL;
+Coverage::Toolnames* Tools = NULL;
+bool Verbose = false;
+const char* outputDirectory = ".";
+bool BranchInfoAvailable = false;
bool FileIsNewer( const char *f1, const char *f2 ) {
struct stat buf1, buf2;
diff -u gcc-testing/rtems-coverage/covoar.cc:1.16 gcc-testing/rtems-coverage/covoar.cc:1.17
--- gcc-testing/rtems-coverage/covoar.cc:1.16 Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/covoar.cc Tue May 11 14:44:52 2010
@@ -421,9 +421,10 @@
"Uncovered ranges found : %d\n",
SymbolsToAnalyze->getNumberUncoveredRanges()
);
- if (SymbolsToAnalyze->getNumberBranchesFound() == 0)
- printf( "MAIN No branch information found\n" );
- else {
+ if ((SymbolsToAnalyze->getNumberBranchesFound() == 0) ||
+ (BranchInfoAvailable == false) ) {
+ printf( "No branch information available\n" );
+ } else {
printf(
"Total branches found : %d\n",
SymbolsToAnalyze->getNumberBranchesFound()
*joel*:
2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
* CoverageReaderQEMU.cc, ObjdumpProcessor.cc, ObjdumpProcessor.h,
TargetBase.cc, TargetBase.h, TraceConverter.cc, TraceWriterQEMU.cc,
app_common.cc, app_common.h, covoar.cc, qemu-traces.h: Allow each
Qemu target architecture to define its own taken and not taken bits.
M 1.218 rtems-coverage/ChangeLog
M 1.14 rtems-coverage/CoverageReaderQEMU.cc
M 1.10 rtems-coverage/ObjdumpProcessor.h
M 1.30 rtems-coverage/ObjdumpProcessor.cc
M 1.3 rtems-coverage/TargetBase.h
M 1.5 rtems-coverage/TargetBase.cc
M 1.6 rtems-coverage/TraceConverter.cc
M 1.2 rtems-coverage/TraceWriterQEMU.cc
M 1.9 rtems-coverage/app_common.h
M 1.5 rtems-coverage/app_common.cc
M 1.18 rtems-coverage/covoar.cc
M 1.3 rtems-coverage/qemu-traces.h
diff -u gcc-testing/rtems-coverage/ChangeLog:1.217 gcc-testing/rtems-coverage/ChangeLog:1.218
--- gcc-testing/rtems-coverage/ChangeLog:1.217 Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/ChangeLog Tue May 11 15:09:19 2010
@@ -1,5 +1,12 @@
2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
+ * CoverageReaderQEMU.cc, ObjdumpProcessor.cc, ObjdumpProcessor.h,
+ TargetBase.cc, TargetBase.h, TraceConverter.cc, TraceWriterQEMU.cc,
+ app_common.cc, app_common.h, covoar.cc, qemu-traces.h: Allow each
+ Qemu target architecture to define its own taken and not taken bits.
+
+2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
* CoverageReaderQEMU.cc, ReportsBase.cc, app_common.cc, app_common.h,
covoar.cc: Now properly know when a trace or coverage format includes
or does not include branch information.
diff -u gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.13 gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.14
--- gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.13 Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/CoverageReaderQEMU.cc Tue May 11 15:09:19 2010
@@ -18,9 +18,6 @@
#include "CoverageMap.h"
#include "ExecutableInfo.h"
-/* XXX really not always right */
-typedef uint32_t target_ulong;
-
#include "qemu-traces.h"
/* hack so this can compile on the RH7 RTEMS 4.5 host */
@@ -53,6 +50,13 @@
struct STAT statbuf;
int status;
FILE* traceFile;
+ uint8_t taken;
+ uint8_t notTaken;
+ uint8_t branchInfo;
+
+ taken = TargetInfo->qemuTakenBit();
+ notTaken = TargetInfo->qemuNotTakenBit();
+ branchInfo = taken | notTaken;
//
// Verify that the coverage file has a non-zero size.
@@ -145,13 +149,13 @@
}
// Determine if additional branch information is available.
- if ( (entry->op & (TRACE_OP_TAKEN|TRACE_OP_NOT_TAKEN)) != 0 ) {
+ if ( (entry->op & branchInfo) != 0 ) {
unsigned int a = entry->pc + entry->size - 1;
while (!aCoverageMap->isStartOfInstruction(a))
a--;
- if (entry->op & TRACE_OP_TAKEN) {
+ if (entry->op & taken) {
aCoverageMap->setWasTaken( a );
- } else if (entry->op & TRACE_OP_NOT_TAKEN) {
+ } else if (entry->op & notTaken) {
aCoverageMap->setWasNotTaken( a );
}
}
diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.9 gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.10
--- gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.9 Fri May 7 13:53:58 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.h Tue May 11 15:09:19 2010
@@ -134,7 +134,6 @@
private:
objdumpFile_t objdumpList;
- Target::TargetBase* target_m;
/*!
* This method determines whether the specified line is a
diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.29 gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.30
--- gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.29 Fri May 7 13:53:58 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.cc Tue May 11 15:09:19 2010
@@ -17,8 +17,8 @@
#include <string.h>
#include <algorithm>
-#include "ObjdumpProcessor.h"
#include "app_common.h"
+#include "ObjdumpProcessor.h"
#include "CoverageMap.h"
#include "ExecutableInfo.h"
#include "SymbolTable.h"
@@ -76,7 +76,6 @@
ObjdumpProcessor::ObjdumpProcessor()
{
- target_m = Target::TargetFactory(Tools->getTarget());
}
ObjdumpProcessor::~ObjdumpProcessor()
@@ -87,26 +86,26 @@
const char *instruction
)
{
- if (!target_m) {
+ if ( !TargetInfo ) {
fprintf( stderr, "ERROR!!! unknown architecture!!!\n");
assert(0);
return false;
}
- return target_m->isBranch( instruction );
+ return TargetInfo->isBranch( instruction );
}
bool ObjdumpProcessor::isBranchLine(
const char* const line
)
{
- if (!target_m) {
+ if ( !TargetInfo ) {
fprintf( stderr, "ERROR!!! unknown architecture!!!\n");
assert(0);
return false;
}
- return target_m->isBranchLine( line );
+ return TargetInfo->isBranchLine( line );
}
bool ObjdumpProcessor::isNop(
@@ -115,14 +114,14 @@
)
{
- if (!target_m){
+ if ( !TargetInfo ){
fprintf( stderr, "ERROR!!! unknown architecture!!!\n");
fprintf( stderr, "HOW LARGE IS NOP ON THIS ARCHITECTURE? -- fix me\n" );
assert(0);
return false;
}
- return target_m->isNopLine( line, size );
+ return TargetInfo->isNopLine( line, size );
}
FILE* ObjdumpProcessor::getFile(
diff -u gcc-testing/rtems-coverage/TargetBase.h:1.2 gcc-testing/rtems-coverage/TargetBase.h:1.3
--- gcc-testing/rtems-coverage/TargetBase.h:1.2 Thu Apr 29 14:12:31 2010
+++ gcc-testing/rtems-coverage/TargetBase.h Tue May 11 15:09:19 2010
@@ -13,15 +13,15 @@
#include <list>
#include <string>
-
+#include <stdint.h>
namespace Target {
/*! @class TargetBase
*
* This class is the base class for all Target classes. Each
- * target class contains routines that are specific to the target in question.
- *
+ * target class contains routines that are specific to the target
+ * in question.
*/
class TargetBase {
@@ -74,6 +74,18 @@
const char* const instruction
);
+ /*!
+ * This method returns the bit set by Qemu in the trace record
+ * when a branch is taken.
+ */
+ virtual uint8_t qemuTakenBit(void);
+
+ /*!
+ * This method returns the bit set by Qemu in the trace record
+ * when a branch is taken.
+ */
+ virtual uint8_t qemuNotTakenBit(void);
+
protected:
/*!
diff -u gcc-testing/rtems-coverage/TargetBase.cc:1.4 gcc-testing/rtems-coverage/TargetBase.cc:1.5
--- gcc-testing/rtems-coverage/TargetBase.cc:1.4 Mon May 10 09:07:35 2010
+++ gcc-testing/rtems-coverage/TargetBase.cc Tue May 11 15:09:19 2010
@@ -8,7 +8,10 @@
* This file contains the implementation of the base class for
* functions supporting target unique functionallity.
*/
+
#include "TargetBase.h"
+#include "qemu-traces.h"
+
#include <algorithm>
#include <stdio.h>
@@ -25,7 +28,6 @@
{
}
-
bool TargetBase::isBranch(
const char* const instruction
)
@@ -90,4 +92,15 @@
return isBranch( instruction );
}
+
+ uint8_t TargetBase::qemuTakenBit(void)
+ {
+ return TRACE_OP_BR0;
+ }
+
+ uint8_t TargetBase::qemuNotTakenBit(void)
+ {
+ return TRACE_OP_BR1;
+ }
+
}
diff -u gcc-testing/rtems-coverage/TraceConverter.cc:1.5 gcc-testing/rtems-coverage/TraceConverter.cc:1.6
--- gcc-testing/rtems-coverage/TraceConverter.cc:1.5 Mon Apr 26 12:23:36 2010
+++ gcc-testing/rtems-coverage/TraceConverter.cc Tue May 11 15:09:19 2010
@@ -22,6 +22,7 @@
#include "ObjdumpProcessor.h"
#include "Toolnames.h"
#include "app_common.h"
+#include "TargetFactory.h"
char *progname;
@@ -82,6 +83,7 @@
// Create toolnames.
Tools = new Coverage::Toolnames( cpuname );
+ TargetInfo = Target::TargetFactory( cpuname );
objdumpProcessor = new Coverage::ObjdumpProcessor();
diff -u gcc-testing/rtems-coverage/TraceWriterQEMU.cc:1.1 gcc-testing/rtems-coverage/TraceWriterQEMU.cc:1.2
--- gcc-testing/rtems-coverage/TraceWriterQEMU.cc:1.1 Fri Apr 23 13:57:18 2010
+++ gcc-testing/rtems-coverage/TraceWriterQEMU.cc Tue May 11 15:09:19 2010
@@ -51,6 +51,11 @@
struct trace_header header;
int status;
FILE* traceFile;
+ uint8_t taken;
+ uint8_t notTaken;
+
+ taken = TargetInfo->qemuTakenBit();
+ notTaken = TargetInfo->qemuNotTakenBit();
//
// Verify that the TraceList has a non-zero size.
@@ -114,10 +119,10 @@
entry.op = TRACE_OP_BLOCK;
switch (itr->exitReason) {
case TraceList::EXIT_REASON_BRANCH_TAKEN:
- entry.op |= TRACE_OP_TAKEN;
+ entry.op |= taken;
break;
case TraceList::EXIT_REASON_BRANCH_NOT_TAKEN:
- entry.op |= TRACE_OP_NOT_TAKEN;
+ entry.op |= notTaken;
break;
case TraceList::EXIT_REASON_OTHER:
break;
@@ -127,7 +132,7 @@
break;
}
- if (Verbose )
+ if ( Verbose )
fprintf(stderr, "%x %x %x\n", entry.pc, entry.size, entry.op);
status = fwrite( &entry, sizeof(entry), 1, traceFile );
diff -u gcc-testing/rtems-coverage/app_common.h:1.8 gcc-testing/rtems-coverage/app_common.h:1.9
--- gcc-testing/rtems-coverage/app_common.h:1.8 Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/app_common.h Tue May 11 15:09:19 2010
@@ -10,6 +10,7 @@
#include "DesiredSymbols.h"
#include "Explanations.h"
#include "Toolnames.h"
+#include "TargetBase.h"
extern Coverage::Explanations* AllExplanations;
extern Coverage::ObjdumpProcessor* objdumpProcessor;
@@ -18,6 +19,7 @@
extern bool Verbose;
extern const char* outputDirectory;
extern bool BranchInfoAvailable;
+extern Target::TargetBase* TargetInfo;
bool FileIsNewer( const char *f1, const char *f2 );
bool ReadUntilFound( FILE *file, const char *line );
diff -u gcc-testing/rtems-coverage/app_common.cc:1.4 gcc-testing/rtems-coverage/app_common.cc:1.5
--- gcc-testing/rtems-coverage/app_common.cc:1.4 Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/app_common.cc Tue May 11 15:09:19 2010
@@ -24,6 +24,7 @@
bool Verbose = false;
const char* outputDirectory = ".";
bool BranchInfoAvailable = false;
+Target::TargetBase* TargetInfo = NULL;
bool FileIsNewer( const char *f1, const char *f2 ) {
struct stat buf1, buf2;
diff -u gcc-testing/rtems-coverage/covoar.cc:1.17 gcc-testing/rtems-coverage/covoar.cc:1.18
--- gcc-testing/rtems-coverage/covoar.cc:1.17 Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/covoar.cc Tue May 11 15:09:19 2010
@@ -24,6 +24,7 @@
#include "Explanations.h"
#include "ObjdumpProcessor.h"
#include "ReportsBase.h"
+#include "TargetFactory.h"
/*
* Variables to control general behavior
@@ -271,7 +272,8 @@
//
// Create toolnames based on target.
- Tools = new Coverage::Toolnames( target );
+ Tools = new Coverage::Toolnames( target );
+ TargetInfo = Target::TargetFactory( target );
// Create the set of desired symbols.
SymbolsToAnalyze = new Coverage::DesiredSymbols();
diff -u gcc-testing/rtems-coverage/qemu-traces.h:1.2 gcc-testing/rtems-coverage/qemu-traces.h:1.3
--- gcc-testing/rtems-coverage/qemu-traces.h:1.2 Wed Jan 20 13:08:07 2010
+++ gcc-testing/rtems-coverage/qemu-traces.h Tue May 11 15:09:19 2010
@@ -31,6 +31,10 @@
#ifndef QEMU_TRACE_H
#define QEMU_TRACE_H
+/* XXX really not always right */
+/* XXX Added for covoar so this compiles */
+typedef uint32_t target_ulong;
+
/* File header definition. */
struct trace_header
{
@@ -98,9 +102,6 @@
#define TRACE_OP_BR2 0x04
#define TRACE_OP_BR3 0x08
-#define TRACE_OP_TAKEN TRACE_OP_BR0 /* Branch not taken at pc. */
-#define TRACE_OP_NOT_TAKEN TRACE_OP_BR1 /* Branch taken at pc. */
-
/*
* Decision map operations
*/
--
Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20100511/38f2425f/attachment-0001.html>
More information about the vc
mailing list