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 <v...@google.com> Date: Mon, 10 Feb 2025 14:44:11 -0500 Subject: [PATCH 1/4] 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 <v...@google.com> Date: Tue, 11 Feb 2025 10:31:00 -0500 Subject: [PATCH 2/4] 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 <v...@google.com> Date: Tue, 11 Feb 2025 10:51:00 -0500 Subject: [PATCH 3/4] 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 <v...@google.com> Date: Tue, 11 Feb 2025 10:59:52 -0500 Subject: [PATCH 4/4] 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 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits