https://github.com/DhruvSrivastavaX created https://github.com/llvm/llvm-project/pull/120378
This PR is in reference to porting LLDB on AIX. Link to discussions on llvm discourse and github: 1. https://discourse.llvm.org/t/port-lldb-to-ibm-aix/80640 2. https://github.com/llvm/llvm-project/issues/101657 The complete changes for porting are present in this draft PR: https://github.com/llvm/llvm-project/pull/102601 Dropping changes for MainLoop polling in AIX, as `ppoll` is not supported in AIX currently. This change is part of the couple of minimal changes required to build a minimal `lldb` biniry on AIX Review Request: @labath @DavidSpickett >From cf6a863b6da6bdaf474d2abc4524960b6436f645 Mon Sep 17 00:00:00 2001 From: Dhruv-Srivastava <dhruv.srivast...@ibm.com> Date: Wed, 18 Dec 2024 02:17:04 -0600 Subject: [PATCH] AIX Changes for MainLoop --- lldb/source/Host/posix/MainLoopPosix.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lldb/source/Host/posix/MainLoopPosix.cpp b/lldb/source/Host/posix/MainLoopPosix.cpp index 1715610e0f84f1..a1d697e10a04ed 100644 --- a/lldb/source/Host/posix/MainLoopPosix.cpp +++ b/lldb/source/Host/posix/MainLoopPosix.cpp @@ -170,11 +170,23 @@ Status MainLoopPosix::RunImpl::Poll() { read_fds.push_back(pfd); } +#if defined(_AIX) + sigset_t origmask; + int timeout; + + timeout = -1; + pthread_sigmask(SIG_SETMASK, nullptr, &origmask); + int ready = poll(read_fds.data(), read_fds.size(), timeout); + pthread_sigmask(SIG_SETMASK, &origmask, nullptr); + if (ready == -1 && errno != EINTR) + return Status(errno, eErrorTypePOSIX); +#else if (ppoll(read_fds.data(), read_fds.size(), ToTimeSpec(loop.GetNextWakeupTime()), /*sigmask=*/nullptr) == -1 && errno != EINTR) return Status(errno, eErrorTypePOSIX); +#endif return Status(); } @@ -226,13 +238,13 @@ MainLoopPosix::~MainLoopPosix() { #endif m_read_fds.erase(m_interrupt_pipe.GetReadFileDescriptor()); m_interrupt_pipe.Close(); - assert(m_read_fds.size() == 0); + assert(m_read_fds.size() == 0); assert(m_signals.size() == 0); } MainLoopPosix::ReadHandleUP MainLoopPosix::RegisterReadObject(const IOObjectSP &object_sp, - const Callback &callback, Status &error) { + const Callback &callback, Status &error) { if (!object_sp || !object_sp->IsValid()) { error = Status::FromErrorString("IO object is not valid."); return nullptr; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits