aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools
diff options
context:
space:
mode:
authorSerge Pavlov <sepavloff@gmail.com>2024-06-03 18:20:45 +0700
committerGitHub <noreply@github.com>2024-06-03 18:20:45 +0700
commit22a7f7c3314328dd1ac20042158f4b68a4ac5c1f (patch)
tree2d2cd75606d843d31cb313982dcc06b1118e7573 /llvm/tools
parent6b30180b663e1fe4de32046398581a374c8a54f2 (diff)
downloadllvm-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.cpp8
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)) {