[Lldb-commits] [lldb] Define TelemetryVendor plugin. (PR #126588)

Vy Nguyen via lldb-commits lldb-commits at lists.llvm.org
Wed Feb 12 07:36: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/7] 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 0000000000000..a2ab3b69fde42
--- /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 0000000000000..520a01b9b1c7a
--- /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/7] 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 a2ab3b69fde42..a55f06fb9141f 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 fc7456a4b9a32..2f2a4ec86a1fb 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 520a01b9b1c7a..0005848981f3b 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/7] 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 a55f06fb9141f..12a214c233d6c 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 0005848981f3b..2fc68a5fa1b28 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/7] 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 cf5f6ac9da489..db43d6132c595 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/7] 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 2f2a4ec86a1fb..b1696f520a55f 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 {
 

>From bfc954b1b047330a80b58606193cb035dbf50e42 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Wed, 12 Feb 2025 10:20:36 -0500
Subject: [PATCH 6/7] review comment

---
 lldb/include/lldb/Core/TelemetryVendor.h | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h
index 12a214c233d6c..31275a150fb7e 100644
--- a/lldb/include/lldb/Core/TelemetryVendor.h
+++ b/lldb/include/lldb/Core/TelemetryVendor.h
@@ -5,11 +5,13 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
-#ifdef LLDB_BUILD_TELEMETRY
-
 #ifndef LLDB_CORE_TELEMETRYVENDOR_H
 #define LLDB_CORE_TELEMETRYVENDOR_H
 
+#include "llvm/Config/llvm-config.h"
+
+#ifdef LLVM_BUILD_TELEMETRY
+
 #include "lldb/Core/PluginInterface.h"
 #include "lldb/Core/Telemetry.h"
 #include "llvm/Telemetry/Telemetry.h"
@@ -23,21 +25,19 @@ class TelemetryVendor : public PluginInterface {
   TelemetryVendor() = default;
 
   llvm::StringRef GetPluginName() override;
-
   static void Initialize();
-
   static void Terminate();
-
   static lldb::TelemetryConfig GetTelemetryConfig();
-
-  static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config);
-
   static lldb::TelemetryManagerSP GetTelemetryManager();
 
+
+protected:
+  static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config);
   static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp);
 };
 
 } // namespace lldb_private
-#endif // LLDB_CORE_TELEMETRYVENDOR_H
 
-#endif // LLDB_BUILD_TELEMETRY
+#endif // LLVM_BUILD_TELEMETRY
+
+#endif // LLDB_CORE_TELEMETRYVENDOR_H

>From b3c50f1706bacdfa8fdecfd865c0be370f6cddab Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Wed, 12 Feb 2025 10:36:29 -0500
Subject: [PATCH 7/7] addressed review commeht

---
 lldb/include/lldb/Core/TelemetryVendor.h |  9 ++++----
 lldb/include/lldb/lldb-forward.h         | 11 +++++----
 lldb/source/Core/TelemetryVendor.cpp     | 29 +++++++++++++-----------
 3 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h
index 31275a150fb7e..d906a9a26ea49 100644
--- a/lldb/include/lldb/Core/TelemetryVendor.h
+++ b/lldb/include/lldb/Core/TelemetryVendor.h
@@ -27,13 +27,12 @@ class TelemetryVendor : public PluginInterface {
   llvm::StringRef GetPluginName() override;
   static void Initialize();
   static void Terminate();
-  static lldb::TelemetryConfig GetTelemetryConfig();
-  static lldb::TelemetryManagerSP GetTelemetryManager();
-
+  static llvm::telemetry::Config *GetTelemetryConfig();
+  static telemetry::TelemetryManager *GetTelemetryManager();
 
 protected:
-  static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config);
-  static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp);
+  static void SetTelemetryConfig(const lldb::TelemetryConfigUP &config);
+  static void SetTelemetryManager(const lldb::TelemetryManagerUP &manager_sp);
 };
 
 } // namespace lldb_private
diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h
index b1696f520a55f..7b5cd1e82951b 100644
--- a/lldb/include/lldb/lldb-forward.h
+++ b/lldb/include/lldb/lldb-forward.h
@@ -11,6 +11,7 @@
 
 #include <memory>
 
+#include "llvm/Config/llvm-config.h"
 #ifdef LLVM_BUILD_TELEMETRY
 #include "llvm/Telemetry/Telemetry.h"
 #include "lldb/Core/Telemetry.h"
@@ -483,11 +484,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
+#ifdef LLVM_BUILD_TELEMETRY
+typedef std::unique_ptr<llvm::telemetry::Config> TelemetryConfigUP;
+typedef std::unique_ptr<lldb_private::telemetry::TelemetryManager>
+    TelemetryManagerUP;
+#endif // LLVM_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 2fc68a5fa1b28..588063c2f82e0 100644
--- a/lldb/source/Core/TelemetryVendor.cpp
+++ b/lldb/source/Core/TelemetryVendor.cpp
@@ -5,7 +5,10 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
-#ifdef LLDB_BUILD_TELEMETRY
+
+#include "llvm/Config/llvm-config.h"
+
+#ifdef LLVM_BUILD_TELEMETRY
 
 #include "lldb/Core/TelemetryVendor.h"
 
@@ -22,25 +25,25 @@ void TelemetryVendor::Initialize() {
   SetTelemetryManager(nullptr);
 }
 
-lldb::TelemetryConfigSP TelemetryVendor::GetTelemetryConfig() {
-  static lldb::TelemetryConfigSP g_config_sp;
-  return g_config_sp;
+static lldb::TelemetryConfigUP g_config_up =
+    std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false);
+lldb::TelemetryConfig *TelemetryVendor::GetTelemetryConfig() {
+  return g_config_up.get();
 }
 
-void TelemetryVendor::SetTelemetryConfig(
-    const lldb::TelemetryConfigSP &config) {
-  GetTelemetryCOnfig() = config;
+static lldb::TelemteryManagerUP g_telemetry_manager_up = nullptr;
+lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() {
+  return g_telemetry_manager_sp.get();
 }
 
-lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() {
-  static TelemteryManagerSP g_telemetry_manager_sp;
-  return g_telemetry_manager_sp;
+void TelemetryVendor::SetTelemetryConfig(lldb::TelemetryConfigUP config) {
+  g_config_up = std::move(config);
 }
 
-void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp) {
-  GetTelemetryManager() = manager_sp;
+void SetTelemetryManager(lldb::TelemetryManagerUP &manager) {
+  g_telemetry_manger_up = std::move(manager);
 }
 
 } // namespace lldb_private
 
-#ifdef LLDB_BUILD_TELEMETRY
+#endif LLVM_BUILD_TELEMETRY



More information about the lldb-commits mailing list