[Lldb-commits] [PATCH] D90863: [lldb] [Process/FreeBSDRemote] Remove thread name caching
Michał Górny via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Thu Nov 5 11:46:09 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG40140e122f8b: [lldb] [Process/FreeBSDRemote] Remove thread name caching (authored by mgorny).
Herald added a project: LLDB.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90863/new/
https://reviews.llvm.org/D90863
Files:
lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.cpp
lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.h
lldb/test/API/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py
Index: lldb/test/API/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py
===================================================================
--- lldb/test/API/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py
+++ lldb/test/API/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py
@@ -29,7 +29,6 @@
self.assertEqual(expected_name, kv_dict.get("name"))
@skipIfWindows # the test is not updated for Windows.
- @expectedFailureAll(oslist=["freebsd"])
@llgs_test
def test(self):
""" Make sure lldb-server can retrieve inferior thread name"""
Index: lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.h
===================================================================
--- lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.h
+++ lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.h
@@ -74,7 +74,6 @@
using WatchpointIndexMap = std::map<lldb::addr_t, uint32_t>;
WatchpointIndexMap m_watchpoint_index_map;
WatchpointIndexMap m_hw_break_index_map;
- llvm::Optional<std::string> m_thread_name;
};
typedef std::shared_ptr<NativeThreadFreeBSD> NativeThreadFreeBSDSP;
Index: lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.cpp
===================================================================
--- lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.cpp
+++ lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.cpp
@@ -149,41 +149,35 @@
}
std::string NativeThreadFreeBSD::GetName() {
- if (!m_thread_name) {
- Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_THREAD));
-
- std::vector<struct kinfo_proc> kp;
- int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID | KERN_PROC_INC_THREAD,
- static_cast<int>(GetProcess().GetID())};
-
- while (1) {
- size_t len = kp.size() * sizeof(struct kinfo_proc);
- void *ptr = len == 0 ? nullptr : kp.data();
- int error = ::sysctl(mib, 4, ptr, &len, nullptr, 0);
- if (ptr == nullptr || (error != 0 && errno == ENOMEM)) {
- kp.resize(len / sizeof(struct kinfo_proc));
- continue;
- }
- if (error != 0) {
- len = 0;
- LLDB_LOG(log, "tid = {0} in state {1} failed to get thread name: {2}", GetID(),
- m_state, strerror(errno));
- }
+ Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_THREAD));
+
+ std::vector<struct kinfo_proc> kp;
+ int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID | KERN_PROC_INC_THREAD,
+ static_cast<int>(GetProcess().GetID())};
+
+ while (1) {
+ size_t len = kp.size() * sizeof(struct kinfo_proc);
+ void *ptr = len == 0 ? nullptr : kp.data();
+ int error = ::sysctl(mib, 4, ptr, &len, nullptr, 0);
+ if (ptr == nullptr || (error != 0 && errno == ENOMEM)) {
kp.resize(len / sizeof(struct kinfo_proc));
- break;
+ continue;
}
-
- // empty == unknown
- m_thread_name = std::string();
- for (auto& procinfo : kp) {
- if (procinfo.ki_tid == (lwpid_t)GetID()) {
- m_thread_name = procinfo.ki_tdname;
- break;
- }
+ if (error != 0) {
+ len = 0;
+ LLDB_LOG(log, "tid = {0} in state {1} failed to get thread name: {2}", GetID(),
+ m_state, strerror(errno));
}
+ kp.resize(len / sizeof(struct kinfo_proc));
+ break;
+ }
+
+ for (auto& procinfo : kp) {
+ if (procinfo.ki_tid == static_cast<lwpid_t>(GetID()))
+ return procinfo.ki_tdname;
}
- return m_thread_name.getValue();
+ return "";
}
lldb::StateType NativeThreadFreeBSD::GetState() { return m_state; }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90863.303212.patch
Type: text/x-patch
Size: 3609 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20201105/e47a2e67/attachment-0001.bin>
More information about the lldb-commits
mailing list