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"; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits