diff options
author | Xuanda Yang <th3charlie@gmail.com> | 2020-01-08 18:37:41 +0800 |
---|---|---|
committer | Xuanda Yang <th3charlie@gmail.com> | 2020-01-08 18:37:41 +0800 |
commit | dfeb8730e24c5a4493e9092907b7ff083fae43a5 (patch) | |
tree | 23e1e5921343eea1c8ed5e6c683156064aab4557 /llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | |
parent | b212eb7159b40c98b3c40619b82b996fb903282b (diff) | |
download | bcm5719-llvm-dfeb8730e24c5a4493e9092907b7ff083fae43a5.tar.gz bcm5719-llvm-dfeb8730e24c5a4493e9092907b7ff083fae43a5.zip |
[llvm-symbolizer]Fix printing of malformed address values not passed via stdin
Summary:
relates https://bugs.llvm.org/show_bug.cgi?id=44443
Adding missing newline when printing bad input values.
Fix testcase
Reviewers: jhenderson
Reviewed By: jhenderson
Subscribers: rupprecht, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72313
Diffstat (limited to 'llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp')
-rw-r--r-- | llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp index 45c845ac26e..96b2b72d8ba 100644 --- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -24,6 +24,7 @@ #include "llvm/Support/InitLLVM.h" #include "llvm/Support/Path.h" #include "llvm/Support/raw_ostream.h" +#include <algorithm> #include <cstdio> #include <cstring> #include <string> @@ -228,7 +229,7 @@ static void symbolizeInput(StringRef InputString, LLVMSymbolizer &Symbolizer, std::string ModuleName; uint64_t Offset = 0; if (!parseCommand(StringRef(InputString), Cmd, ModuleName, Offset)) { - outs() << InputString; + outs() << InputString << "\n"; return; } @@ -328,7 +329,13 @@ int main(int argc, char **argv) { char InputString[kMaxInputStringLength]; while (fgets(InputString, sizeof(InputString), stdin)) { - symbolizeInput(InputString, Symbolizer, Printer); + // Strip newline characters. + std::string StrippedInputString(InputString); + StrippedInputString.erase( + std::remove_if(StrippedInputString.begin(), StrippedInputString.end(), + [](char c) { return c == '\r' || c == '\n'; }), + StrippedInputString.end()); + symbolizeInput(StrippedInputString, Symbolizer, Printer); outs().flush(); } } else { |