change log for gcc-testing (2010-05-11)
rtems-vc at rtems.org
rtems-vc at rtems.org
Tue May 11 21:10:03 UTC 2010
*humph*:
2010-05-11 Glenn Humphrey
* DesiredSymbols.cc, ObjdumpProcessor.cc: Due to differences in nops
used for alignment, had to move the trimming of trailing nops to the
objdump processing.
M 1.220 rtems-coverage/ChangeLog
M 1.9 rtems-coverage/DesiredSymbols.cc
M 1.32 rtems-coverage/ObjdumpProcessor.cc
diff -u gcc-testing/rtems-coverage/ChangeLog:1.219 gcc-testing/rtems-coverage/ChangeLog:1.220
--- gcc-testing/rtems-coverage/ChangeLog:1.219 Tue May 11 15:18:32 2010
+++ gcc-testing/rtems-coverage/ChangeLog Tue May 11 16:08:57 2010
@@ -1,3 +1,9 @@
+2010-05-11 Glenn Humphrey
+
+ * DesiredSymbols.cc, ObjdumpProcessor.cc: Due to differences in nops
+ used for alignment, had to move the trimming of trailing nops to the
+ objdump processing.
+
2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
* DesiredSymbols.cc, Makefile, ObjdumpProcessor.cc, TargetBase.cc,
diff -u gcc-testing/rtems-coverage/DesiredSymbols.cc:1.8 gcc-testing/rtems-coverage/DesiredSymbols.cc:1.9
--- gcc-testing/rtems-coverage/DesiredSymbols.cc:1.8 Tue May 11 15:18:32 2010
+++ gcc-testing/rtems-coverage/DesiredSymbols.cc Tue May 11 16:08:57 2010
@@ -108,10 +108,9 @@
void DesiredSymbols::preprocess( void )
{
- ObjdumpProcessor::objdumpLines_t::iterator fitr;
- ObjdumpProcessor::objdumpLines_t::reverse_iterator itr;
- DesiredSymbols::symbolSet_t::iterator sitr;
- CoverageMapBase* theCoverageMap;
+ ObjdumpProcessor::objdumpLines_t::iterator fitr;
+ DesiredSymbols::symbolSet_t::iterator sitr;
+ CoverageMapBase* theCoverageMap;
// Look at each symbol.
for (sitr = SymbolsToAnalyze->set.begin();
@@ -124,27 +123,6 @@
if (!theCoverageMap)
continue;
- // Mark any trailing nops as executed. Some targets use nops to
- // force alignment of the next method but still include the nops
- // in the symbol size.
- //
- // Mark all branches as isBranch.
- //
- // NOTE: If nop's are used for alignment inside a method, this
- // will not mark them!!!
- for (itr = sitr->second.instructions.rbegin(), itr++;
- itr != sitr->second.instructions.rend();
- itr++) {
- if (itr->isNop) {
- for ( int a=0; a < itr->nopSize ; a++ ) {
- theCoverageMap->setWasExecuted(
- itr->address - sitr->second.baseAddress + a
- );
- }
- } else
- break;
- }
-
// Mark any branch instructions.
for (fitr = sitr->second.instructions.begin();
fitr != sitr->second.instructions.end();
@@ -160,13 +138,12 @@
void DesiredSymbols::computeUncovered( void )
{
- uint32_t a, la, ha;
- uint32_t endAddress;
- ObjdumpProcessor::objdumpLines_t::reverse_iterator itr;
- DesiredSymbols::symbolSet_t::iterator sitr;
- CoverageRanges* theBranches;
- CoverageMapBase* theCoverageMap;
- CoverageRanges* theRanges;
+ uint32_t a, la, ha;
+ uint32_t endAddress;
+ DesiredSymbols::symbolSet_t::iterator sitr;
+ CoverageRanges* theBranches;
+ CoverageMapBase* theCoverageMap;
+ CoverageRanges* theRanges;
// Look at each symbol.
for (sitr = SymbolsToAnalyze->set.begin();
diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.31 gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.32
--- gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.31 Tue May 11 15:18:32 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.cc Tue May 11 16:08:58 2010
@@ -35,9 +35,51 @@
SymbolInformation* symbolInfo
) {
- CoverageMapBase* aCoverageMap = NULL;
- ObjdumpProcessor::objdumpLines_t::iterator itr;
- SymbolTable* theSymbolTable;
+ CoverageMapBase* aCoverageMap = NULL;
+ uint32_t endAddress = highAddress;
+ ObjdumpProcessor::objdumpLines_t::iterator itr, fnop, lnop;
+ ObjdumpProcessor::objdumpLines_t::reverse_iterator ritr;
+ SymbolTable* theSymbolTable;
+
+ //
+ // Remove trailing nop instructions.
+ //
+
+ // First find the last instruction.
+ for (ritr = instructions.rbegin();
+ ritr != instructions.rend();
+ ritr++) {
+ if (ritr->isInstruction)
+ break;
+ }
+
+ // If an instruction was found and it is a nop, ...
+ if ((ritr != instructions.rend()) && (ritr->isNop)) {
+
+ // save it as the last nop. Note that we must account for
+ // the difference between a forward and a reverse iterator.
+ lnop = ritr.base();
+ lnop--;
+ endAddress -= lnop->nopSize;
+
+ // Now look for the first nop in the sequence of trailing nops.
+ fnop = lnop;
+ ritr++;
+ for (; ritr != instructions.rend(); ritr++) {
+ if (ritr->isNop) {
+ fnop = ritr.base();
+ fnop--;
+ endAddress -= fnop->nopSize;
+ }
+ else
+ break;
+ }
+
+ // Erase trailing nops. The erase operation wants the first
+ // parameter to point to the first item to erase and the second
+ // parameter to point to the item beyond the last item to erase.
+ instructions.erase( fnop, ++lnop );
+ }
// If there are NOT already saved instructions, save them.
if (symbolInfo->instructions.empty()) {
@@ -49,12 +91,12 @@
// Add the symbol to this executable's symbol table.
theSymbolTable = executableInfo->getSymbolTable();
theSymbolTable->addSymbol(
- symbolName, lowAddress, highAddress - lowAddress + 1
+ symbolName, lowAddress, endAddress - lowAddress + 1
);
// Create a coverage map for the symbol.
aCoverageMap = executableInfo->createCoverageMap(
- symbolName, lowAddress, highAddress
+ symbolName, lowAddress, endAddress
);
if (aCoverageMap) {
@@ -69,7 +111,7 @@
// Create a unified coverage map for the symbol.
SymbolsToAnalyze->createCoverageMap(
- symbolName, highAddress - lowAddress + 1
+ symbolName, endAddress - lowAddress + 1
);
}
}
@@ -240,7 +282,8 @@
bool processSymbol = false;
char symbol[ 100 ];
SymbolInformation* symbolInformation = NULL;
- char terminator;
+ char terminator1;
+ char terminator2;
objdumpLines_t theInstructions;
// Obtain the objdump file.
@@ -259,7 +302,7 @@
executableInformation,
currentSymbol,
baseAddress,
- address, // XXX fix to determine corrent end address
+ address, // XXX fix to determine correct end address
theInstructions,
symbolInformation
);
@@ -289,11 +332,11 @@
items = sscanf(
buffer,
"%x <%[^>]>%c",
- &address, symbol, &terminator
+ &address, symbol, &terminator1
);
// If all items found, we are at the beginning of a symbol's objdump.
- if ((items == 3) && (terminator == ':')) {
+ if ((items == 3) && (terminator1 == ':')) {
// If we are currently processing a symbol, finalize it.
if ((processSymbol) && (symbolInformation)) {
@@ -329,12 +372,12 @@
// See if it is the dump of an instruction.
items = sscanf(
buffer,
- "%x%c",
- &instructionAddress, &terminator
+ "%x%c\t%*[^\t]%c",
+ &instructionAddress, &terminator1, &terminator2
);
// If it looks like an instruction ...
- if ((items == 2) && (terminator == ':')) {
+ if ((items == 3) && (terminator1 == ':') && (terminator2 == '\t')) {
// update the line's information, save it and ...
lineInfo.address = instructionAddress;
*humph*:
2010-05-11 Glenn Humphrey
* ReportsBase.cc: Fixed buffer overflow problem.
M 1.221 rtems-coverage/ChangeLog
M 1.7 rtems-coverage/ReportsBase.cc
diff -u gcc-testing/rtems-coverage/ChangeLog:1.220 gcc-testing/rtems-coverage/ChangeLog:1.221
--- gcc-testing/rtems-coverage/ChangeLog:1.220 Tue May 11 16:08:57 2010
+++ gcc-testing/rtems-coverage/ChangeLog Tue May 11 16:09:53 2010
@@ -1,5 +1,9 @@
2010-05-11 Glenn Humphrey
+ * ReportsBase.cc: Fixed buffer overflow problem.
+
+2010-05-11 Glenn Humphrey
+
* DesiredSymbols.cc, ObjdumpProcessor.cc: Due to differences in nops
used for alignment, had to move the trimming of trailing nops to the
objdump processing.
diff -u gcc-testing/rtems-coverage/ReportsBase.cc:1.6 gcc-testing/rtems-coverage/ReportsBase.cc:1.7
--- gcc-testing/rtems-coverage/ReportsBase.cc:1.6 Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/ReportsBase.cc Tue May 11 16:09:53 2010
@@ -173,7 +173,7 @@
uint32_t id = 0;
std::string annotation = "";
std::string line;
- char textLine[100];
+ char textLine[150];
state = A_SOURCE;
*joel*:
2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
* DesiredSymbols.cc, Makefile, ObjdumpProcessor.cc, TargetBase.cc,
TargetBase.h, TraceConverter.cc, app_common.cc, app_common.h,
covmerge.cc, covoar.cc: Merge Toolname into Target.
* Toolnames.cc, Toolnames.h: Removed.
M 1.219 rtems-coverage/ChangeLog
M 1.8 rtems-coverage/DesiredSymbols.cc
M 1.21 rtems-coverage/Makefile
M 1.31 rtems-coverage/ObjdumpProcessor.cc
M 1.4 rtems-coverage/TargetBase.h
M 1.6 rtems-coverage/TargetBase.cc
R 1.6 rtems-coverage/Toolnames.h
R 1.9 rtems-coverage/Toolnames.cc
M 1.7 rtems-coverage/TraceConverter.cc
M 1.10 rtems-coverage/app_common.h
M 1.6 rtems-coverage/app_common.cc
M 1.18 rtems-coverage/covmerge.cc
M 1.19 rtems-coverage/covoar.cc
diff -u gcc-testing/rtems-coverage/ChangeLog:1.218 gcc-testing/rtems-coverage/ChangeLog:1.219
--- gcc-testing/rtems-coverage/ChangeLog:1.218 Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/ChangeLog Tue May 11 15:18:32 2010
@@ -1,5 +1,12 @@
2010-05-11 Joel Sherrill <joel.sherrilL at OARcorp.com>
+ * DesiredSymbols.cc, Makefile, ObjdumpProcessor.cc, TargetBase.cc,
+ TargetBase.h, TraceConverter.cc, app_common.cc, app_common.h,
+ covmerge.cc, covoar.cc: Merge Toolname into Target.
+ * Toolnames.cc, Toolnames.h: Removed.
+
+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
diff -u gcc-testing/rtems-coverage/DesiredSymbols.cc:1.7 gcc-testing/rtems-coverage/DesiredSymbols.cc:1.8
--- gcc-testing/rtems-coverage/DesiredSymbols.cc:1.7 Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/DesiredSymbols.cc Tue May 11 15:18:32 2010
@@ -371,7 +371,7 @@
sprintf(
command,
"%s -e %s <%s | dos2unix >%s",
- Tools->getAddr2line(),
+ TargetInfo->getAddr2line(),
executableFileName.c_str(),
"ranges1.tmp",
"ranges2.tmp"
diff -u gcc-testing/rtems-coverage/Makefile:1.20 gcc-testing/rtems-coverage/Makefile:1.21
--- gcc-testing/rtems-coverage/Makefile:1.20 Fri May 7 13:01:51 2010
+++ gcc-testing/rtems-coverage/Makefile Tue May 11 15:18:32 2010
@@ -37,7 +37,6 @@
Target_m68k.o \
Target_powerpc.o \
Target_sparc.o \
- Toolnames.o
TRACECONVERTER_OBJS = \
$(COMMON_OBJS) \
@@ -134,7 +133,6 @@
Target_m68k.o: Target_m68k.cc Target_m68k.h TargetBase.h
Target_powerpc.o: Target_powerpc.cc Target_powerpc.h TargetBase.h
Target_sparc.o: Target_sparc.cc Target_sparc.h TargetBase.h
-Toolnames.o: Toolnames.cc Toolnames.h
TraceConverter.o: TraceConverter.cc TraceReaderBase.h TraceList.h
TraceList.o: TraceList.cc TraceList.h
diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.30 gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.31
--- gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.30 Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.cc Tue May 11 15:18:32 2010
@@ -140,7 +140,7 @@
sprintf(
buffer,
"%s -da --section=.text --source %s | sed -e \'s/ *$//\' >%s",
- Tools->getObjdump(),
+ TargetInfo->getObjdump(),
exeFileName.c_str(),
dumpFile
);
diff -u gcc-testing/rtems-coverage/TargetBase.h:1.3 gcc-testing/rtems-coverage/TargetBase.h:1.4
--- gcc-testing/rtems-coverage/TargetBase.h:1.3 Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/TargetBase.h Tue May 11 15:18:32 2010
@@ -29,8 +29,12 @@
/*!
* This method constructs an TargetBase instance.
+ *
+ * @param[in] targetName specifies the desired target
*/
- TargetBase( std::string targetName );
+ TargetBase(
+ std::string targetName
+ );
/*!
* This method destructs an TargetBase instance.
@@ -38,6 +42,41 @@
virtual ~TargetBase();
/*!
+ * This method returns the program name for addr2line.
+ *
+ * @return Returns the target specific addr2line program name
+ */
+ const char* getAddr2line( void ) const;
+
+ /*!
+ * This method returns the CPU name.
+ *
+ * @return Returns the target cpu name
+ */
+ const char* getCPU( void ) const;
+
+ /*!
+ * This method returns the program name for nm.
+ *
+ * @return Returns the target specific nm program name
+ */
+ const char* getNm( void ) const;
+
+ /*!
+ * This method returns the program name for objdump.
+ *
+ * @return Returns the target specific objdump program name
+ */
+ const char* getObjdump( void ) const;
+
+ /*!
+ * This method returns the target name.
+ *
+ * @return Returns the target name
+ */
+ const char* getTarget( void ) const;
+
+ /*!
* This method determines whether the specified line from a
* objdump file is a nop instruction.
*
@@ -111,6 +150,31 @@
* for this target.
*/
std::list <std::string> branchInstructions;
+
+ private:
+
+ /*!
+ * This member variable contains the name of the host program
+ * which reports the source line for the specified program address.
+ */
+ std::string addr2line_m;
+
+ /*!
+ * This member variable contains the name of the target cpu architecture.
+ */
+ std::string cpu_m;
+
+ /*!
+ * This member variable contains the name of the host program
+ * which produces a symbol table.
+ */
+ std::string nm_m;
+
+ /*!
+ * This member variable contains the name of the host program
+ * which disassembles an executable or library.
+ */
+ std::string objdump_m;
};
}
#endif
diff -u gcc-testing/rtems-coverage/TargetBase.cc:1.5 gcc-testing/rtems-coverage/TargetBase.cc:1.6
--- gcc-testing/rtems-coverage/TargetBase.cc:1.5 Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/TargetBase.cc Tue May 11 15:18:32 2010
@@ -22,12 +22,51 @@
):
targetName_m( targetName )
{
+ int i;
+ std::string front = "";
+
+ for (i=0 ; targetName_m[i] && targetName_m[i] != '-' ; ) {
+ cpu_m[i] = targetName_m[i];
+ cpu_m[++i] = '\0';
+ }
+ if (targetName_m[i] == '-')
+ front = targetName_m + "-";
+
+
+ addr2line_m = front + "addr2line";
+ nm_m = front + "nm";
+ objdump_m = front + "objdump";
}
TargetBase::~TargetBase()
{
}
+ const char* TargetBase::getAddr2line() const
+ {
+ return addr2line_m.c_str();
+ }
+
+ const char* TargetBase::getCPU( void ) const
+ {
+ return cpu_m.c_str();
+ }
+
+ const char* TargetBase::getNm() const
+ {
+ return nm_m.c_str();
+ }
+
+ const char* TargetBase::getObjdump() const
+ {
+ return objdump_m.c_str();
+ }
+
+ const char* TargetBase::getTarget( void ) const
+ {
+ return targetName_m.c_str();
+ }
+
bool TargetBase::isBranch(
const char* const instruction
)
diff -u gcc-testing/rtems-coverage/TraceConverter.cc:1.6 gcc-testing/rtems-coverage/TraceConverter.cc:1.7
--- gcc-testing/rtems-coverage/TraceConverter.cc:1.6 Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/TraceConverter.cc Tue May 11 15:18:32 2010
@@ -20,7 +20,6 @@
#include "TraceWriterQEMU.h"
#include "TraceList.h"
#include "ObjdumpProcessor.h"
-#include "Toolnames.h"
#include "app_common.h"
#include "TargetFactory.h"
@@ -82,7 +81,6 @@
}
// Create toolnames.
- Tools = new Coverage::Toolnames( cpuname );
TargetInfo = Target::TargetFactory( cpuname );
objdumpProcessor = new Coverage::ObjdumpProcessor();
diff -u gcc-testing/rtems-coverage/app_common.h:1.9 gcc-testing/rtems-coverage/app_common.h:1.10
--- gcc-testing/rtems-coverage/app_common.h:1.9 Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/app_common.h Tue May 11 15:18:32 2010
@@ -9,13 +9,11 @@
#include "DesiredSymbols.h"
#include "Explanations.h"
-#include "Toolnames.h"
#include "TargetBase.h"
extern Coverage::Explanations* AllExplanations;
extern Coverage::ObjdumpProcessor* objdumpProcessor;
extern Coverage::DesiredSymbols* SymbolsToAnalyze;
-extern Coverage::Toolnames* Tools;
extern bool Verbose;
extern const char* outputDirectory;
extern bool BranchInfoAvailable;
diff -u gcc-testing/rtems-coverage/app_common.cc:1.5 gcc-testing/rtems-coverage/app_common.cc:1.6
--- gcc-testing/rtems-coverage/app_common.cc:1.5 Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/app_common.cc Tue May 11 15:18:32 2010
@@ -11,7 +11,6 @@
#include "app_common.h"
#include "DesiredSymbols.h"
-#include "Toolnames.h"
#include "Explanations.h"
/*
@@ -20,7 +19,6 @@
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;
diff -u gcc-testing/rtems-coverage/covmerge.cc:1.17 gcc-testing/rtems-coverage/covmerge.cc:1.18
--- gcc-testing/rtems-coverage/covmerge.cc:1.17 Mon Feb 1 11:39:01 2010
+++ gcc-testing/rtems-coverage/covmerge.cc Tue May 11 15:18:32 2010
@@ -47,7 +47,6 @@
Coverage::CoverageMapBase *CoverageMap = NULL;
Coverage::CoverageReaderBase *CoverageReader = NULL;
Coverage::CoverageWriterBase *CoverageWriter = NULL;
-Coverage::Toolnames *Tools = NULL;
Coverage::ObjdumpProcessor *ObjdumpProcessor = NULL;
Coverage::CoverageRanges *Ranges = NULL;
Coverage::Explanations *Explanations = NULL;
@@ -352,7 +351,7 @@
/*
* Create toolnames based on target
*/
- Tools = new Coverage::Toolnames( target );
+ TargetInfo = Target::TargetFactory( target );
/*
* Create a ranges set
diff -u gcc-testing/rtems-coverage/covoar.cc:1.18 gcc-testing/rtems-coverage/covoar.cc:1.19
--- gcc-testing/rtems-coverage/covoar.cc:1.18 Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/covoar.cc Tue May 11 15:18:32 2010
@@ -272,7 +272,6 @@
//
// Create toolnames based on target.
- Tools = new Coverage::Toolnames( target );
TargetInfo = Target::TargetFactory( target );
// Create the set of desired symbols.
--
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/a8f08d84/attachment-0001.html>
More information about the vc
mailing list