Author: Dhruv Srivastava
Date: 2025-12-22T11:37:22+05:30
New Revision: f54c36ebc97d1d6aafcc000faa3e85ea8243fe54

URL: 
https://github.com/llvm/llvm-project/commit/f54c36ebc97d1d6aafcc000faa3e85ea8243fe54
DIFF: 
https://github.com/llvm/llvm-project/commit/f54c36ebc97d1d6aafcc000faa3e85ea8243fe54.diff

LOG: [lldb][AIX] Added Kill() implementation (#169454)

This PR is in reference to porting LLDB on AIX.

Link to discussions on llvm
https://discourse.llvm.org/t/port-lldb-to-ibm-aix/80640 and
https://github.com/llvm/llvm-project/issues/101657
Complete changes together in this draft:
- https://github.com/llvm/llvm-project/pull/102601

**Description:**
Extending Kill and SigchldHandler for NativeProcessAIX.

Ref: 
https://www.ibm.com/docs/en/aix/7.3.0?topic=p-ptrace-ptracex-ptrace64-subroutine

Added: 
    

Modified: 
    lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp 
b/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
index cd5e3458e60e8..6e3b9438b0075 100644
--- a/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
+++ b/lldb/source/Plugins/Process/AIX/NativeProcessAIX.cpp
@@ -187,7 +187,44 @@ 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::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;
+}
 
 Status NativeProcessAIX::ReadMemory(lldb::addr_t addr, void *buf, size_t size,
                                     size_t &bytes_read) {
@@ -237,6 +274,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:


        
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to