[Lldb-commits] [lldb] [lldb][AIX] Added Kill() implementation (PR #169454)
Dhruv Srivastava via lldb-commits
lldb-commits at lists.llvm.org
Fri Dec 19 07:53:31 PST 2025
https://github.com/DhruvSrivastavaX updated https://github.com/llvm/llvm-project/pull/169454
>From e142b765cc8a847016cb0cc15f161e94e0fd236a Mon Sep 17 00:00:00 2001
From: DhruvSrivastavaX <dhruv.srivastava at ibm.com>
Date: Mon, 24 Nov 2025 22:44:35 -0600
Subject: [PATCH 1/3] Added Kill() implementation
---
.../Plugins/Process/AIX/NativeProcessAIX.cpp | 43 ++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
diff --git a/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp b/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
index cd5e3458e60e8..7f3dbbff18ea2 100644
--- a/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
+++ b/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
@@ -137,6 +137,12 @@ void NativeProcessAIX::Manager::SigchldHandler() {
auto wait_result = WaitPid();
if (!wait_result)
return;
+ lldb::pid_t pid = wait_result->first;
+ WaitStatus status = wait_result->second;
+
+ llvm::any_of(m_processes, [&](NativeProcessAIX *process) {
+ return process->TryHandleWaitStatus(pid, status);
+ });
}
}
@@ -187,7 +193,41 @@ Status NativeProcessAIX::Signal(int signo) { return Status("unsupported"); }
Status NativeProcessAIX::Interrupt() { return Status("unsupported"); }
-Status NativeProcessAIX::Kill() { return Status("unsupported"); }
+Status NativeProcessAIX::Kill() {
+
+ Log *log = GetLog(POSIXLog::Process);
+ LLDB_LOG(log, "pid {0}", GetID());
+
+ Status error;
+
+ switch (m_state) {
+ case StateType::eStateInvalid:
+ case StateType::eStateExited:
+ case StateType::eStateCrashed:
+ case StateType::eStateDetached:
+ case StateType::eStateUnloaded:
+ // Nothing to do - the process is already dead.
+ LLDB_LOG(log, "ignored for PID {0} due to current state: {1}", GetID(),
+ m_state);
+ return error;
+
+ case StateType::eStateConnected:
+ case StateType::eStateAttaching:
+ case StateType::eStateLaunching:
+ case StateType::eStateStopped:
+ case StateType::eStateRunning:
+ case StateType::eStateStepping:
+ case StateType::eStateSuspended:
+ // We can try to kill a process in these states.
+ break;
+ }
+
+ llvm::Error result =
+ (PtraceWrapper(PT_KILL, GetID(), nullptr, nullptr, 0)).takeError();
+ if (!result)
+ error.FromErrorString("Kill failed");
+ return error;
+}
Status NativeProcessAIX::ReadMemory(lldb::addr_t addr, void *buf, size_t size,
size_t &bytes_read) {
@@ -237,6 +277,7 @@ llvm::Expected<int> NativeProcessAIX::PtraceWrapper(int req, lldb::pid_t pid,
switch (req) {
case PT_ATTACH:
case PT_DETACH:
+ case PT_KILL:
ret = ptrace64(req, pid, 0, 0, nullptr);
break;
default:
>From ebdc6f3f71b42d920fd1148d0349382121baed62 Mon Sep 17 00:00:00 2001
From: DhruvSrivastavaX <dhruv.srivastava at ibm.com>
Date: Fri, 19 Dec 2025 07:21:15 -0600
Subject: [PATCH 2/3] Addressed comment
---
lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp b/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
index 7f3dbbff18ea2..bf0e71d9d89ea 100644
--- a/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
+++ b/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
@@ -222,10 +222,13 @@ Status NativeProcessAIX::Kill() {
break;
}
- llvm::Error result =
- (PtraceWrapper(PT_KILL, GetID(), nullptr, nullptr, 0)).takeError();
- if (!result)
- error.FromErrorString("Kill failed");
+ llvm::Expected<int> result =
+ PtraceWrapper(PT_KILL, GetID(), nullptr, nullptr, 0);
+ if (!result) {
+ std::string error_string = std::string("Kill failed for process. error: ") +
+ llvm::toString(result.takeError());
+ error.FromErrorString(error_string.c_str());
+ }
return error;
}
>From 676ea37101246ca8cbbb58c57cc5118a7e6a0b46 Mon Sep 17 00:00:00 2001
From: Dhruv Srivastava <dhruv.srivastava at ibm.com>
Date: Fri, 19 Dec 2025 21:23:22 +0530
Subject: [PATCH 3/3] removed stray code
---
lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp | 6 ------
1 file changed, 6 deletions(-)
diff --git a/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp b/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
index bf0e71d9d89ea..6e3b9438b0075 100644
--- a/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
+++ b/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
@@ -137,12 +137,6 @@ void NativeProcessAIX::Manager::SigchldHandler() {
auto wait_result = WaitPid();
if (!wait_result)
return;
- lldb::pid_t pid = wait_result->first;
- WaitStatus status = wait_result->second;
-
- llvm::any_of(m_processes, [&](NativeProcessAIX *process) {
- return process->TryHandleWaitStatus(pid, status);
- });
}
}
More information about the lldb-commits
mailing list