[Lldb-commits] [lldb] [lldb] Fix building on NetBSD 8.x (PR #74191)
Brad Smith via lldb-commits
lldb-commits at lists.llvm.org
Sat Dec 2 03:46:23 PST 2023
https://github.com/brad0 updated https://github.com/llvm/llvm-project/pull/74191
>From fc902910d55c5c38eb8b3ac3519b3285fab58b66 Mon Sep 17 00:00:00 2001
From: Brad Smith <brad at comstyle.com>
Date: Sat, 2 Dec 2023 05:52:53 -0500
Subject: [PATCH] [lldb] Fix building on NetBSD 8.x
PT_STOP was introduced with NetBSD 9.0.
---
.../Process/NetBSD/NativeProcessNetBSD.cpp | 27 +++++++++++++++++--
.../Process/NetBSD/NativeProcessNetBSD.h | 1 +
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp
index 26c562bd479050b..7f3e1a008727862 100644
--- a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp
+++ b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp
@@ -379,6 +379,29 @@ void NativeProcessNetBSD::MonitorSignal(lldb::pid_t pid, int signal) {
SetState(StateType::eStateStopped, true);
}
+Status NativeProcessNetBSD::StopProcess(lldb::pid_t pid) {
+#ifdef PT_STOP
+ return PtraceWrapper(PT_STOP, pid);
+#else
+ Log *log = GetLog(POSIXLog::Ptrace);
+ Status error;
+ int ret;
+
+ errno = 0;
+ ret = kill(pid, SIGSTOP);
+
+ if (ret == -1)
+ error.SetErrorToErrno();
+
+ LLDB_LOG(log, "kill({0}, SIGSTOP)", pid);
+
+ if (error.Fail())
+ LLDB_LOG(log, "kill() failed: {0}", error);
+
+ return error;
+#endif
+}
+
Status NativeProcessNetBSD::PtraceWrapper(int req, lldb::pid_t pid, void *addr,
int data, int *result) {
Log *log = GetLog(POSIXLog::Ptrace);
@@ -531,7 +554,7 @@ Status NativeProcessNetBSD::Resume(const ResumeActionList &resume_actions) {
return ret;
}
-Status NativeProcessNetBSD::Halt() { return PtraceWrapper(PT_STOP, GetID()); }
+Status NativeProcessNetBSD::Halt() { return StopProcess(GetID()); }
Status NativeProcessNetBSD::Detach() {
Status error;
@@ -556,7 +579,7 @@ Status NativeProcessNetBSD::Signal(int signo) {
}
Status NativeProcessNetBSD::Interrupt() {
- return PtraceWrapper(PT_STOP, GetID());
+ return StopProcess(GetID());
}
Status NativeProcessNetBSD::Kill() {
diff --git a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
index 86724fdd5b7e5dd..f3d07651384fe9f 100644
--- a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
+++ b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
@@ -88,6 +88,7 @@ class NativeProcessNetBSD : public NativeProcessELF {
// Interface used by NativeRegisterContext-derived classes.
static Status PtraceWrapper(int req, lldb::pid_t pid, void *addr = nullptr,
int data = 0, int *result = nullptr);
+ static Status StopProcess(lldb::pid_t pid);
llvm::Expected<std::string> SaveCore(llvm::StringRef path_hint) override;
More information about the lldb-commits
mailing list