[Lldb-commits] [lldb] Define TelemetryVendor plugin. (PR #126588)
Vy Nguyen via lldb-commits
lldb-commits at lists.llvm.org
Tue Feb 11 10:11:44 PST 2025
https://github.com/oontvoo updated https://github.com/llvm/llvm-project/pull/126588
>From c7734011094995c64137de6f8122033d2a981610 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Mon, 10 Feb 2025 14:44:11 -0500
Subject: [PATCH 1/5] Define TelemetryVendor plugin.
Details:
Upstream in LLDB, we will have a default TelemetryVendor plugin will provide a default Config and NULL TelemetryManager.
Downstream vendors can extend this to provide a vendor-specific Config along with a functional TelemetryManager instance.
---
lldb/include/lldb/Core/TelemetryVendor.h | 39 +++++++++++++++++++++
lldb/source/Core/TelemetryVendor.cpp | 43 ++++++++++++++++++++++++
2 files changed, 82 insertions(+)
create mode 100644 lldb/include/lldb/Core/TelemetryVendor.h
create mode 100644 lldb/source/Core/TelemetryVendor.cpp
diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h
new file mode 100644
index 000000000000000..a2ab3b69fde4225
--- /dev/null
+++ b/lldb/include/lldb/Core/TelemetryVendor.h
@@ -0,0 +1,39 @@
+//===-- TelemetryVendor.h -------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_CORE_TELEMETRYVENDOR_H
+#define LLDB_CORE_TELEMETRYVENDOR_H
+
+#include "lldb/Core/PluginInterface.h"
+#include "lldb/Core/Telemetry.h"
+#include "llvm/Telemetry/Telemetry.h"
+
+#include <memory>
+
+namespace lldb_private {
+
+class TelemetryVendor : public PluginInterface {
+public:
+ TelemetryVendor() = default;
+
+ llvm::StringRef GetPluginName() override;
+
+ static void Initialize();
+
+ static void Terminate();
+
+ static std::unique_ptr<llvm::telemetry::Config> GetTelemetryConfig();
+ static void
+ SetTelemetryConfig(std::unique_ptr<llvm::telemetry::Config> config);
+
+ static lldb::TelemetryManagerSP GetTelemetryManager();
+ static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp);
+};
+
+} // namespace lldb_private
+#endif // LLDB_CORE_TELEMETRYVENDOR_H
diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp
new file mode 100644
index 000000000000000..520a01b9b1c7a3e
--- /dev/null
+++ b/lldb/source/Core/TelemetryVendor.cpp
@@ -0,0 +1,43 @@
+//===-- TelemetryVendor.cpp -----------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Core/TelemetryVendor.h"
+
+namespace lldb_private {
+
+llvm::StringRef TelemetryVendor::GetPluginName() {
+ return "UpstreamTelemetryVendor";
+}
+
+void TelemetryVendor::Initialize() {
+ // The default (upstream) impl will have telemetry disabled by default.
+ SetTelemetryConfig(
+ std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false));
+ SetTelemetryManager(nullptr);
+}
+
+static std::unique_ptr<llvm::telemetry::Config> current_config;
+std::unique_ptr<llvm::telemetry::Config> TelemetryVendor::GetTelemetryConfig() {
+ return current_config;
+}
+
+void TelemetryVendor::SetTelemetryConfig(
+ std::unique_ptr<llvm::telemetry::Config> config) {
+ current_config = std::move(config);
+}
+
+lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() {
+ static TelemteryManagerSP g_telemetry_manager_sp;
+ return g_telemetry_manager_sp;
+}
+
+void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp) {
+ GetTelemetryManager() = manager_sp;
+}
+
+} // namespace lldb_private
>From 5f6a04de76a5bf633ca9d14d9907d535301c5c59 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Tue, 11 Feb 2025 10:31:00 -0500
Subject: [PATCH 2/5] use shared ptr
---
lldb/include/lldb/Core/TelemetryVendor.h | 7 ++++---
lldb/include/lldb/lldb-forward.h | 5 +++++
lldb/source/Core/TelemetryVendor.cpp | 14 +++++++-------
3 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h
index a2ab3b69fde4225..a55f06fb9141f06 100644
--- a/lldb/include/lldb/Core/TelemetryVendor.h
+++ b/lldb/include/lldb/Core/TelemetryVendor.h
@@ -27,11 +27,12 @@ class TelemetryVendor : public PluginInterface {
static void Terminate();
- static std::unique_ptr<llvm::telemetry::Config> GetTelemetryConfig();
- static void
- SetTelemetryConfig(std::unique_ptr<llvm::telemetry::Config> config);
+ static lldb::TelemetryConfig GetTelemetryConfig();
+
+ static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config);
static lldb::TelemetryManagerSP GetTelemetryManager();
+
static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp);
};
diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h
index fc7456a4b9a32e6..2f2a4ec86a1fb89 100644
--- a/lldb/include/lldb/lldb-forward.h
+++ b/lldb/include/lldb/lldb-forward.h
@@ -478,6 +478,11 @@ typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP;
typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren>
ScriptedSyntheticChildrenSP;
typedef std::shared_ptr<lldb_private::SupportFile> SupportFileSP;
+#ifdef LLDB_BUILD_TELEMETRY
+typedef std::shared_ptr<llvm::telemetry::Config> TelemetryConfigSP;
+typedef std::shared_ptr<lldb_private::telemetry::TelemetryManager>
+ TelemetryManagerSP;
+#endif // LLDB_BUILD_TELEMETRY
typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP;
typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP;
typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp
index 520a01b9b1c7a3e..0005848981f3bc7 100644
--- a/lldb/source/Core/TelemetryVendor.cpp
+++ b/lldb/source/Core/TelemetryVendor.cpp
@@ -16,19 +16,19 @@ llvm::StringRef TelemetryVendor::GetPluginName() {
void TelemetryVendor::Initialize() {
// The default (upstream) impl will have telemetry disabled by default.
- SetTelemetryConfig(
- std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false));
+ SetTelemetryConfig(std::make_shared<new llvm::telemetry::Config>(
+ /*enable_telemetry*/ false));
SetTelemetryManager(nullptr);
}
-static std::unique_ptr<llvm::telemetry::Config> current_config;
-std::unique_ptr<llvm::telemetry::Config> TelemetryVendor::GetTelemetryConfig() {
- return current_config;
+lldb::TelemetryConfigSP TelemetryVendor::GetTelemetryConfig() {
+ static lldb::TelemetryConfigSP g_config_sp;
+ return g_config_sp;
}
void TelemetryVendor::SetTelemetryConfig(
- std::unique_ptr<llvm::telemetry::Config> config) {
- current_config = std::move(config);
+ const lldb::TelemetryConfigSP &config) {
+ GetTelemetryCOnfig() = config;
}
lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() {
>From b0335138dc728f7edf8708184e3a414a14bebf39 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Tue, 11 Feb 2025 10:51:00 -0500
Subject: [PATCH 3/5] use header guard
---
lldb/include/lldb/Core/TelemetryVendor.h | 3 +++
lldb/source/Core/TelemetryVendor.cpp | 3 +++
2 files changed, 6 insertions(+)
diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h
index a55f06fb9141f06..12a214c233d6c0d 100644
--- a/lldb/include/lldb/Core/TelemetryVendor.h
+++ b/lldb/include/lldb/Core/TelemetryVendor.h
@@ -5,6 +5,7 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
+#ifdef LLDB_BUILD_TELEMETRY
#ifndef LLDB_CORE_TELEMETRYVENDOR_H
#define LLDB_CORE_TELEMETRYVENDOR_H
@@ -38,3 +39,5 @@ class TelemetryVendor : public PluginInterface {
} // namespace lldb_private
#endif // LLDB_CORE_TELEMETRYVENDOR_H
+
+#endif // LLDB_BUILD_TELEMETRY
diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp
index 0005848981f3bc7..2fc68a5fa1b28d6 100644
--- a/lldb/source/Core/TelemetryVendor.cpp
+++ b/lldb/source/Core/TelemetryVendor.cpp
@@ -5,6 +5,7 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
+#ifdef LLDB_BUILD_TELEMETRY
#include "lldb/Core/TelemetryVendor.h"
@@ -41,3 +42,5 @@ void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp) {
}
} // namespace lldb_private
+
+#ifdef LLDB_BUILD_TELEMETRY
>From 58e1d0f6feb72da6b77b15301c3c6c474443bd0d Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Tue, 11 Feb 2025 10:59:52 -0500
Subject: [PATCH 4/5] fix cmake
---
lldb/source/Core/CMakeLists.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/lldb/source/Core/CMakeLists.txt b/lldb/source/Core/CMakeLists.txt
index cf5f6ac9da4894a..db43d6132c5955a 100644
--- a/lldb/source/Core/CMakeLists.txt
+++ b/lldb/source/Core/CMakeLists.txt
@@ -58,6 +58,7 @@ add_lldb_library(lldbCore
SourceManager.cpp
StreamAsynchronousIO.cpp
Telemetry.cpp
+ TelemetryVendor.cpp
ThreadedCommunication.cpp
UserSettingsController.cpp
Value.cpp
>From b767a2efb6f1d39e83523cfdf330ddd26a8cf892 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Tue, 11 Feb 2025 13:11:30 -0500
Subject: [PATCH 5/5] add header incl
---
lldb/include/lldb/lldb-forward.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h
index 2f2a4ec86a1fb89..b1696f520a55fa8 100644
--- a/lldb/include/lldb/lldb-forward.h
+++ b/lldb/include/lldb/lldb-forward.h
@@ -11,6 +11,11 @@
#include <memory>
+#ifdef LLVM_BUILD_TELEMETRY
+#include "llvm/Telemetry/Telemetry.h"
+#include "lldb/Core/Telemetry.h"
+#endif
+
// lldb forward declarations
namespace lldb_private {
More information about the lldb-commits
mailing list