From f10a871419c3bfb05690add75201b1cb56c8e96d Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Mon, 14 Nov 2016 21:10:41 +0000 Subject: [PATCH] Revert "Revert "llvm-strings: support printing the filename"" Change the dynamic files to static in the hope that it will actually fix the transient errors that Ive been unable to reproduce. llvm-svn: 286891 --- llvm/test/tools/llvm-strings/Inputs/abcd | 1 + llvm/test/tools/llvm-strings/archive-filename.test | 9 +++++++++ llvm/test/tools/llvm-strings/file-filename.test | 3 +++ llvm/test/tools/llvm-strings/nested-archives.test | 5 ++--- llvm/test/tools/llvm-strings/stdin-filename.test | 3 +++ llvm/tools/llvm-strings/llvm-strings.cpp | 21 +++++++++++++++++---- 6 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 llvm/test/tools/llvm-strings/Inputs/abcd create mode 100644 llvm/test/tools/llvm-strings/archive-filename.test create mode 100644 llvm/test/tools/llvm-strings/file-filename.test create mode 100644 llvm/test/tools/llvm-strings/stdin-filename.test diff --git a/llvm/test/tools/llvm-strings/Inputs/abcd b/llvm/test/tools/llvm-strings/Inputs/abcd new file mode 100644 index 0000000..85df507 --- /dev/null +++ b/llvm/test/tools/llvm-strings/Inputs/abcd @@ -0,0 +1 @@ +abcd \ No newline at end of file diff --git a/llvm/test/tools/llvm-strings/archive-filename.test b/llvm/test/tools/llvm-strings/archive-filename.test new file mode 100644 index 0000000..1c7b468 --- /dev/null +++ b/llvm/test/tools/llvm-strings/archive-filename.test @@ -0,0 +1,9 @@ +RUN: rm -f %T/archive.a +RUN: llvm-ar -format gnu crs %T/archive.a %S/Inputs/abcd +RUN: llvm-strings -f %T/archive.a | FileCheck %s +RUN: llvm-strings --print-file-name %T/archive.a | FileCheck %s + +CHECK: archive.a: ! +CHECK: archive.a: abcd/ 0 0 0 644 4 ` +CHECK: archive.a: abcd + diff --git a/llvm/test/tools/llvm-strings/file-filename.test b/llvm/test/tools/llvm-strings/file-filename.test new file mode 100644 index 0000000..de0ce97 --- /dev/null +++ b/llvm/test/tools/llvm-strings/file-filename.test @@ -0,0 +1,3 @@ +RUN: llvm-strings -f %S/Inputs/abcd | FileCheck %s +RUN: llvm-strings --print-file-name %S/Inputs/abcd | FileCheck %s +CHECK: {{[\\/]}}abcd: abcd diff --git a/llvm/test/tools/llvm-strings/nested-archives.test b/llvm/test/tools/llvm-strings/nested-archives.test index c3a95f2..09ad004 100644 --- a/llvm/test/tools/llvm-strings/nested-archives.test +++ b/llvm/test/tools/llvm-strings/nested-archives.test @@ -1,8 +1,7 @@ -RUN: echo -n abcd > %T/abcd RUN: rm -f %T/inner.ar -RUN: llvm-ar crs %T/inner.a %T/abcd +RUN: llvm-ar -format gnu crs %T/inner.a %S/Inputs/abcd RUN: rm -f %T/outer.ar -RUN: llvm-ar crs %T/outer.a %T/inner.a +RUN: llvm-ar -format gnu crs %T/outer.a %T/inner.a RUN: llvm-strings %T/outer.a | FileCheck %s CHECK: ! diff --git a/llvm/test/tools/llvm-strings/stdin-filename.test b/llvm/test/tools/llvm-strings/stdin-filename.test new file mode 100644 index 0000000..9c87e5c --- /dev/null +++ b/llvm/test/tools/llvm-strings/stdin-filename.test @@ -0,0 +1,3 @@ +RUN: echo abcd | llvm-strings -f - | FileCheck %s +RUN: echo abcd | llvm-strings --print-file-name - | FileCheck %s +CHECK: {standard input}: abcd diff --git a/llvm/tools/llvm-strings/llvm-strings.cpp b/llvm/tools/llvm-strings/llvm-strings.cpp index 6e5e2f2..cb0fb96 100644 --- a/llvm/tools/llvm-strings/llvm-strings.cpp +++ b/llvm/tools/llvm-strings/llvm-strings.cpp @@ -29,7 +29,19 @@ static cl::list InputFileNames(cl::Positional, cl::desc(""), cl::ZeroOrMore); -static void strings(raw_ostream &OS, StringRef Contents) { +static cl::opt + PrintFileName("print-file-name", + cl::desc("Print the name of the file before each string")); +static cl::alias PrintFileNameShort("f", cl::desc(""), + cl::aliasopt(PrintFileName)); + +static void strings(raw_ostream &OS, StringRef FileName, StringRef Contents) { + auto print = [&OS, FileName](StringRef L) { + if (PrintFileName) + OS << FileName << ": "; + OS << L << '\n'; + }; + const char *P = nullptr, *E = nullptr, *S = nullptr; for (P = Contents.begin(), E = Contents.end(); P < E; ++P) { if (std::isgraph(*P) || std::isblank(*P)) { @@ -37,12 +49,12 @@ static void strings(raw_ostream &OS, StringRef Contents) { S = P; } else if (S) { if (P - S > 3) - OS << StringRef(S, P - S) << '\n'; + print(StringRef(S, P - S)); S = nullptr; } } if (S && E - S > 3) - OS << StringRef(S, E - S) << '\n'; + print(StringRef(S, E - S)); } int main(int argc, char **argv) { @@ -60,7 +72,8 @@ int main(int argc, char **argv) { if (std::error_code EC = Buffer.getError()) errs() << File << ": " << EC.message() << '\n'; else - strings(llvm::outs(), Buffer.get()->getMemBufferRef().getBuffer()); + strings(llvm::outs(), File == "-" ? "{standard input}" : File, + Buffer.get()->getMemBufferRef().getBuffer()); } return EXIT_SUCCESS; -- 2.7.4