Skip to content

Commit a062d66

Browse files
JDevliegherejoaosaffran
authored and
joaosaffran
committed
[lldb-dap] Return an llvm::Error instead of calling exit directly (NFC) (llvm#128951)
Return an `llvm::Error` from `LaunchRunInTerminalTarget` instead of calling `exit()` directly.
1 parent 84a1494 commit a062d66

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

lldb/tools/lldb-dap/lldb-dap.cpp

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,13 @@ static void printHelp(LLDBDAPOptTable &table, llvm::StringRef tool_name) {
202202
//
203203
// In case of errors launching the target, a suitable error message will be
204204
// emitted to the debug adaptor.
205-
static void LaunchRunInTerminalTarget(llvm::opt::Arg &target_arg,
206-
llvm::StringRef comm_file,
207-
lldb::pid_t debugger_pid, char *argv[]) {
205+
static llvm::Error LaunchRunInTerminalTarget(llvm::opt::Arg &target_arg,
206+
llvm::StringRef comm_file,
207+
lldb::pid_t debugger_pid,
208+
char *argv[]) {
208209
#if defined(_WIN32)
209-
llvm::errs() << "runInTerminal is only supported on POSIX systems\n";
210-
exit(EXIT_FAILURE);
210+
return llvm::createStringError(
211+
"runInTerminal is only supported on POSIX systems");
211212
#else
212213

213214
// 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,
219220
#endif
220221

221222
RunInTerminalLauncherCommChannel comm_channel(comm_file);
222-
if (llvm::Error err = comm_channel.NotifyPid()) {
223-
llvm::errs() << llvm::toString(std::move(err)) << "\n";
224-
exit(EXIT_FAILURE);
225-
}
223+
if (llvm::Error err = comm_channel.NotifyPid())
224+
return err;
226225

227226
// We will wait to be attached with a timeout. We don't wait indefinitely
228227
// using a signal to prevent being paused forever.
@@ -233,17 +232,16 @@ static void LaunchRunInTerminalTarget(llvm::opt::Arg &target_arg,
233232
timeout_env_var != nullptr ? atoi(timeout_env_var) : 20000;
234233
if (llvm::Error err = comm_channel.WaitUntilDebugAdaptorAttaches(
235234
std::chrono::milliseconds(timeout_in_ms))) {
236-
llvm::errs() << llvm::toString(std::move(err)) << "\n";
237-
exit(EXIT_FAILURE);
235+
return err;
238236
}
239237

240238
const char *target = target_arg.getValue();
241239
execvp(target, argv);
242240

243241
std::string error = std::strerror(errno);
244242
comm_channel.NotifyError(error);
245-
llvm::errs() << error << "\n";
246-
exit(EXIT_FAILURE);
243+
return llvm::createStringError(llvm::inconvertibleErrorCode(),
244+
std::move(error));
247245
#endif
248246
}
249247

@@ -471,13 +469,18 @@ int main(int argc, char *argv[]) {
471469
}
472470
}
473471
int target_args_pos = argc;
474-
for (int i = 0; i < argc; i++)
472+
for (int i = 0; i < argc; i++) {
475473
if (strcmp(argv[i], "--launch-target") == 0) {
476474
target_args_pos = i + 1;
477475
break;
478476
}
479-
LaunchRunInTerminalTarget(*target_arg, comm_file->getValue(), pid,
480-
argv + target_args_pos);
477+
}
478+
if (llvm::Error err =
479+
LaunchRunInTerminalTarget(*target_arg, comm_file->getValue(), pid,
480+
argv + target_args_pos)) {
481+
llvm::errs() << llvm::toString(std::move(err)) << '\n';
482+
return EXIT_FAILURE;
483+
}
481484
} else {
482485
llvm::errs() << "\"--launch-target\" requires \"--comm-file\" to be "
483486
"specified\n";

0 commit comments

Comments
 (0)