Skip to content

Commit

Permalink
[lldb] Move once_flags in HostInfoLinux so the internal state struct
Browse files Browse the repository at this point in the history
The HostInfoLinuxFields struct is supposed to be set up/torn down on
Initialize/Terminate and should contain all the state of the plugin.
`once_flags` are part of this state and should also be reset on `Terminate` so
we can re-initialize these lazy values after the next `Initialize` call.

This itself is NFC as the HostInfoLinux was broken before this patch and is
still broken afterwards. D104091 will be the proper fix.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D104093
  • Loading branch information
Teemperor committed Jun 11, 2021
1 parent 643b640 commit 632cbca
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions lldb/source/Host/linux/HostInfoLinux.cpp
Expand Up @@ -26,7 +26,9 @@ using namespace lldb_private;

namespace {
struct HostInfoLinuxFields {
llvm::once_flag m_distribution_once_flag;
std::string m_distribution_id;
llvm::once_flag m_os_version_once_flag;
llvm::VersionTuple m_os_version;
};

Expand All @@ -40,8 +42,8 @@ void HostInfoLinux::Initialize(SharedLibraryDirectoryHelper *helper) {
}

llvm::VersionTuple HostInfoLinux::GetOSVersion() {
static llvm::once_flag g_once_flag;
llvm::call_once(g_once_flag, []() {
assert(g_fields && "Missing call to Initialize?");
llvm::call_once(g_fields->m_os_version_once_flag, []() {
struct utsname un;
if (uname(&un) != 0)
return;
Expand Down Expand Up @@ -82,10 +84,10 @@ bool HostInfoLinux::GetOSKernelDescription(std::string &s) {
}

llvm::StringRef HostInfoLinux::GetDistributionId() {
assert(g_fields && "Missing call to Initialize?");
// Try to run 'lbs_release -i', and use that response for the distribution
// id.
static llvm::once_flag g_once_flag;
llvm::call_once(g_once_flag, []() {
llvm::call_once(g_fields->m_distribution_once_flag, []() {

Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST));
LLDB_LOGF(log, "attempting to determine Linux distribution...");
Expand Down

0 comments on commit 632cbca

Please sign in to comment.