[Lldb-commits] [lldb] f409340 - [lldb-dap] Return an llvm::Error instead of calling exit directly (NFC) (#128951)
via lldb-commits
lldb-commits at lists.llvm.org
Wed Feb 26 16:34:25 PST 2025
Author: Jonas Devlieghere
Date: 2025-02-26T18:34:21-06:00
New Revision: f409340cc217c55c3960a375054a17b2bc927e53
URL: https://github.com/llvm/llvm-project/commit/f409340cc217c55c3960a375054a17b2bc927e53
DIFF: https://github.com/llvm/llvm-project/commit/f409340cc217c55c3960a375054a17b2bc927e53.diff
LOG: [lldb-dap] Return an llvm::Error instead of calling exit directly (NFC) (#128951)
Return an `llvm::Error` from `LaunchRunInTerminalTarget` instead of
calling `exit()` directly.
Added:
Modified:
lldb/tools/lldb-dap/lldb-dap.cpp
Removed:
################################################################################
diff --git a/lldb/tools/lldb-dap/lldb-dap.cpp b/lldb/tools/lldb-dap/lldb-dap.cpp
index d8b92831d5540..e6a28919694bc 100644
--- a/lldb/tools/lldb-dap/lldb-dap.cpp
+++ b/lldb/tools/lldb-dap/lldb-dap.cpp
@@ -202,12 +202,13 @@ static void printHelp(LLDBDAPOptTable &table, llvm::StringRef tool_name) {
//
// In case of errors launching the target, a suitable error message will be
// emitted to the debug adaptor.
-static void LaunchRunInTerminalTarget(llvm::opt::Arg &target_arg,
- llvm::StringRef comm_file,
- lldb::pid_t debugger_pid, char *argv[]) {
+static llvm::Error LaunchRunInTerminalTarget(llvm::opt::Arg &target_arg,
+ llvm::StringRef comm_file,
+ lldb::pid_t debugger_pid,
+ char *argv[]) {
#if defined(_WIN32)
- llvm::errs() << "runInTerminal is only supported on POSIX systems\n";
- exit(EXIT_FAILURE);
+ return llvm::createStringError(
+ "runInTerminal is only supported on POSIX systems");
#else
// On Linux with the Yama security module enabled, a process can only attach
@@ -219,10 +220,8 @@ static void LaunchRunInTerminalTarget(llvm::opt::Arg &target_arg,
#endif
RunInTerminalLauncherCommChannel comm_channel(comm_file);
- if (llvm::Error err = comm_channel.NotifyPid()) {
- llvm::errs() << llvm::toString(std::move(err)) << "\n";
- exit(EXIT_FAILURE);
- }
+ if (llvm::Error err = comm_channel.NotifyPid())
+ return err;
// We will wait to be attached with a timeout. We don't wait indefinitely
// using a signal to prevent being paused forever.
@@ -233,8 +232,7 @@ static void LaunchRunInTerminalTarget(llvm::opt::Arg &target_arg,
timeout_env_var != nullptr ? atoi(timeout_env_var) : 20000;
if (llvm::Error err = comm_channel.WaitUntilDebugAdaptorAttaches(
std::chrono::milliseconds(timeout_in_ms))) {
- llvm::errs() << llvm::toString(std::move(err)) << "\n";
- exit(EXIT_FAILURE);
+ return err;
}
const char *target = target_arg.getValue();
@@ -242,8 +240,8 @@ static void LaunchRunInTerminalTarget(llvm::opt::Arg &target_arg,
std::string error = std::strerror(errno);
comm_channel.NotifyError(error);
- llvm::errs() << error << "\n";
- exit(EXIT_FAILURE);
+ return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ std::move(error));
#endif
}
@@ -471,13 +469,18 @@ int main(int argc, char *argv[]) {
}
}
int target_args_pos = argc;
- for (int i = 0; i < argc; i++)
+ for (int i = 0; i < argc; i++) {
if (strcmp(argv[i], "--launch-target") == 0) {
target_args_pos = i + 1;
break;
}
- LaunchRunInTerminalTarget(*target_arg, comm_file->getValue(), pid,
- argv + target_args_pos);
+ }
+ if (llvm::Error err =
+ LaunchRunInTerminalTarget(*target_arg, comm_file->getValue(), pid,
+ argv + target_args_pos)) {
+ llvm::errs() << llvm::toString(std::move(err)) << '\n';
+ return EXIT_FAILURE;
+ }
} else {
llvm::errs() << "\"--launch-target\" requires \"--comm-file\" to be "
"specified\n";
More information about the lldb-commits
mailing list