[Lldb-commits] [lldb] [LLDB] Add IsCoreDumping to ProcessInstanceInfo (PR #138580)
via lldb-commits
lldb-commits at lists.llvm.org
Mon May 5 13:36:09 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Jacob Lalonde (Jlalond)
<details>
<summary>Changes</summary>
This is the first useful patch in the series related to enabling `PTRACE_SEIZE` for processes Coredumping. In order to make the decision if we want to seize or attach, we need to expose that in processinfo.
We currently select a few entries from `/proc/pid/status`, and I now also extract CoreDumping.
Note that in status it is `CoreDumping` not `Coredumping`, so I kept with that, even if I prefer `Coredumping`
---
Full diff: https://github.com/llvm/llvm-project/pull/138580.diff
3 Files Affected:
- (modified) lldb/include/lldb/Utility/ProcessInfo.h (+6)
- (modified) lldb/source/Host/linux/Host.cpp (+5)
- (modified) lldb/unittests/Host/posix/HostTest.cpp (+3)
``````````diff
diff --git a/lldb/include/lldb/Utility/ProcessInfo.h b/lldb/include/lldb/Utility/ProcessInfo.h
index 78ade4bbb1ee6..24041faad80bf 100644
--- a/lldb/include/lldb/Utility/ProcessInfo.h
+++ b/lldb/include/lldb/Utility/ProcessInfo.h
@@ -247,6 +247,11 @@ class ProcessInstanceInfo : public ProcessInfo {
std::optional<bool> IsZombie() const { return m_zombie; }
+ // proc/../status specifies CoreDumping as the field
+ // so we match the case here.
+ void SetIsCoreDumping(bool is_coredumping) { m_coredumping = is_coredumping; }
+ std::optional<bool> IsCoreDumping() const { return m_coredumping; }
+
void Dump(Stream &s, UserIDResolver &resolver) const;
static void DumpTableHeader(Stream &s, bool show_args, bool verbose);
@@ -266,6 +271,7 @@ class ProcessInstanceInfo : public ProcessInfo {
struct timespec m_cumulative_system_time;
std::optional<int8_t> m_priority_value = std::nullopt;
std::optional<bool> m_zombie = std::nullopt;
+ std::optional<bool> m_coredumping = std::nullopt;
};
typedef std::vector<ProcessInstanceInfo> ProcessInstanceInfoList;
diff --git a/lldb/source/Host/linux/Host.cpp b/lldb/source/Host/linux/Host.cpp
index 8b475a7ab5003..2e2d4fdd84097 100644
--- a/lldb/source/Host/linux/Host.cpp
+++ b/lldb/source/Host/linux/Host.cpp
@@ -213,6 +213,11 @@ static bool GetStatusInfo(::pid_t Pid, ProcessInstanceInfo &ProcessInfo,
} else if (Line.consume_front("Tgid:")) {
Line = Line.ltrim();
Line.consumeInteger(10, Tgid);
+ } else if (Line.consume_front("CoreDumping:")) {
+ uint32_t coredumping;
+ Line = Line.ltrim();
+ Line.consumeInteger(1, coredumping);
+ ProcessInfo.SetIsCoreDumping(coredumping);
}
}
return true;
diff --git a/lldb/unittests/Host/posix/HostTest.cpp b/lldb/unittests/Host/posix/HostTest.cpp
index 5d50de3524d1e..082edccf4e774 100644
--- a/lldb/unittests/Host/posix/HostTest.cpp
+++ b/lldb/unittests/Host/posix/HostTest.cpp
@@ -115,5 +115,8 @@ TEST_F(HostTest, GetProcessInfoSetsPriority) {
}
ASSERT_TRUE(Info.IsZombie().has_value());
ASSERT_FALSE(Info.IsZombie().value());
+
+ ASSERT_TRUE(Info.IsCoreDumping().has_value());
+ ASSERT_FALSE(Info.IsCoreDumping().value());
}
#endif
``````````
</details>
https://github.com/llvm/llvm-project/pull/138580
More information about the lldb-commits
mailing list