From: Yuchen Wu Date: Tue, 5 Nov 2013 01:20:41 +0000 (+0000) Subject: llvm-cov: Added command-line option to change dir. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=d8acf0078cf363252727acff00f85ae8074f95b3;p=oota-llvm.git llvm-cov: Added command-line option to change dir. This will allow for much easier testing when the input files are in a different folder from the test script. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194034 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/IR/GCOV.cpp b/lib/IR/GCOV.cpp index a33da2a5525..9f4b5367e19 100644 --- a/lib/IR/GCOV.cpp +++ b/lib/IR/GCOV.cpp @@ -266,18 +266,20 @@ void FileInfo::print(raw_fd_ostream &OS, StringRef gcnoFile, for (StringMap::iterator I = LineInfo.begin(), E = LineInfo.end(); I != E; ++I) { StringRef Filename = I->first(); - OS << " -: 0:Source:" << Filename << "\n"; - OS << " -: 0:Graph:" << gcnoFile << "\n"; - OS << " -: 0:Data:" << gcdaFile << "\n"; - OS << " -: 0:Runs:" << RunCount << "\n"; - OS << " -: 0:Programs:" << ProgramCount << "\n"; - LineCounts &L = LineInfo[Filename]; OwningPtr Buff; if (error_code ec = MemoryBuffer::getFileOrSTDIN(Filename, Buff)) { errs() << Filename << ": " << ec.message() << "\n"; return; } StringRef AllLines = Buff.take()->getBuffer(); + + OS << " -: 0:Source:" << Filename << "\n"; + OS << " -: 0:Graph:" << gcnoFile << "\n"; + OS << " -: 0:Data:" << gcdaFile << "\n"; + OS << " -: 0:Runs:" << RunCount << "\n"; + OS << " -: 0:Programs:" << ProgramCount << "\n"; + + LineCounts &L = LineInfo[Filename]; uint32_t i = 0; while (!AllLines.empty()) { if (L.find(i) != L.end()) { diff --git a/tools/llvm-cov/llvm-cov.cpp b/tools/llvm-cov/llvm-cov.cpp index ad6c6718154..18277737b6a 100644 --- a/tools/llvm-cov/llvm-cov.cpp +++ b/tools/llvm-cov/llvm-cov.cpp @@ -20,6 +20,7 @@ #include "llvm/Support/raw_ostream.h" #include "llvm/Support/Signals.h" #include "llvm/Support/system_error.h" +#include using namespace llvm; static cl::opt @@ -34,6 +35,9 @@ InputGCDA("gcda", cl::desc(""), cl::init("")); static cl::opt OutputFile("o", cl::desc(""), cl::init("-")); +static cl::opt +WorkingDir("C", cl::desc("change path of working directory"), + cl::init("")); //===----------------------------------------------------------------------===// int main(int argc, char **argv) { @@ -44,6 +48,13 @@ int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, "llvm coverage tool\n"); + if (!WorkingDir.empty()) { + if (chdir(WorkingDir.c_str()) == -1) { + errs() << "Cannot change to directory: " << WorkingDir << ".\n"; + return 1; + } + } + std::string ErrorInfo; raw_fd_ostream OS(OutputFile.c_str(), ErrorInfo); if (!ErrorInfo.empty()) @@ -77,7 +88,6 @@ int main(int argc, char **argv) { } } - if (DumpGCOV) GF.dump();