diff options
author | Serge Pavlov <sepavloff@gmail.com> | 2024-06-03 18:20:45 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-03 18:20:45 +0700 |
commit | 22a7f7c3314328dd1ac20042158f4b68a4ac5c1f (patch) | |
tree | 2d2cd75606d843d31cb313982dcc06b1118e7573 /llvm/tools | |
parent | 6b30180b663e1fe4de32046398581a374c8a54f2 (diff) | |
download | llvm-22a7f7c3314328dd1ac20042158f4b68a4ac5c1f.zip llvm-22a7f7c3314328dd1ac20042158f4b68a4ac5c1f.tar.gz llvm-22a7f7c3314328dd1ac20042158f4b68a4ac5c1f.tar.bz2 |
[symbolizer] Empty string is not an error (#92660)
After commit 1792852f86dc7 ([symbolizer] Change reaction on invalid
input) llvm-symbolizer issues an error on malformed command instead of
echoing it to the standard output, as in previous versions. It turns out
this behavior broke a use case when echoing was used to check if
llvm-symbolizer is working (https://github.com/llvm/llvm-project/commit/1792852f86dc75efa1f44d46b1a0daf386d64afa#commitcomment-142161925).
With this change an empty line as input is not considered as an error
anymore and does not produce any output on stderr. llvm-symbolizer still
respond on empty line with line not found, this is consistent with GNU
addr2line.
---------
Co-authored-by: James Henderson <46713263+jh7370@users.noreply.github.com>
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp index b98bdbc..6d7953f 100644 --- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -337,6 +337,14 @@ static void symbolizeInput(const opt::InputArgList &Args, object::BuildID BuildID(IncomingBuildID.begin(), IncomingBuildID.end()); uint64_t Offset = 0; StringRef Symbol; + + // An empty input string may be used to check if the process is alive and + // responding to input. Do not emit a message on stderr in this case but + // respond on stdout. + if (InputString.empty()) { + printUnknownLineInfo(ModuleName, Printer); + return; + } if (Error E = parseCommand(Args.getLastArgValue(OPT_obj_EQ), IsAddr2Line, StringRef(InputString), Cmd, ModuleName, BuildID, Symbol, Offset)) { |