mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 05:32:28 +08:00
[lldb] Move once_flags in HostInfoLinux so the internal state struct
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
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
@@ -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...");
|
||||
|
||||
Reference in New Issue
Block a user