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
