https://github.com/slydiman updated 
https://github.com/llvm/llvm-project/pull/134383

>From 590d5b47b9f98a8e5f19945334b2a1c34248f9d8 Mon Sep 17 00:00:00 2001
From: Dmitry Vasilyev <dvassil...@accesssoftek.com>
Date: Fri, 4 Apr 2025 17:49:07 +0400
Subject: [PATCH 1/3] [LLDB][NFC] Remove Debugger dependency in
 SystemLifetimeManager

It reduces the memory usage in lldb-server.
Later I will try to remove the rest Debugger dependencies to reduce lldb-server 
size.
---
 .../Initialization/SystemLifetimeManager.h    |  5 ++-
 .../Initialization/SystemLifetimeManagerDbg.h | 36 +++++++++++++++++++
 lldb/source/API/SBDebugger.cpp                |  4 +--
 .../Initialization/SystemLifetimeManager.cpp  |  5 ++-
 lldb/tools/lldb-test/lldb-test.cpp            |  4 +--
 5 files changed, 46 insertions(+), 8 deletions(-)
 create mode 100644 lldb/include/lldb/Initialization/SystemLifetimeManagerDbg.h

diff --git a/lldb/include/lldb/Initialization/SystemLifetimeManager.h 
b/lldb/include/lldb/Initialization/SystemLifetimeManager.h
index 06328e60133fe..55138b33be712 100644
--- a/lldb/include/lldb/Initialization/SystemLifetimeManager.h
+++ b/lldb/include/lldb/Initialization/SystemLifetimeManager.h
@@ -21,7 +21,7 @@ namespace lldb_private {
 class SystemLifetimeManager {
 public:
   SystemLifetimeManager();
-  ~SystemLifetimeManager();
+  virtual ~SystemLifetimeManager();
 
   llvm::Error Initialize(std::unique_ptr<SystemInitializer> initializer,
                          LoadPluginCallbackType plugin_callback);
@@ -32,6 +32,9 @@ class SystemLifetimeManager {
   std::unique_ptr<SystemInitializer> m_initializer;
   bool m_initialized = false;
 
+  virtual void InitializeDebugger(LoadPluginCallbackType plugin_callback) {};
+  virtual void TerminateDebugger() {};
+
   // Noncopyable.
   SystemLifetimeManager(const SystemLifetimeManager &other) = delete;
   SystemLifetimeManager &operator=(const SystemLifetimeManager &other) = 
delete;
diff --git a/lldb/include/lldb/Initialization/SystemLifetimeManagerDbg.h 
b/lldb/include/lldb/Initialization/SystemLifetimeManagerDbg.h
new file mode 100644
index 0000000000000..5e728398f71bd
--- /dev/null
+++ b/lldb/include/lldb/Initialization/SystemLifetimeManagerDbg.h
@@ -0,0 +1,36 @@
+//===-- SystemLifetimeManagerDbg.h ------------------------------*- C++ 
-*-===//
+//
+// 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_INITIALIZATION_SYSTEMLIFETIMEMANAGERDBG_H
+#define LLDB_INITIALIZATION_SYSTEMLIFETIMEMANAGERDBG_H
+
+#include "SystemLifetimeManager.h"
+#include "lldb/Core/Debugger.h"
+
+namespace lldb_private {
+
+class SystemLifetimeManagerDbg : public SystemLifetimeManager {
+public:
+  SystemLifetimeManagerDbg() : SystemLifetimeManager() {};
+
+private:
+  virtual void
+  InitializeDebugger(LoadPluginCallbackType plugin_callback) override {
+    Debugger::Initialize(plugin_callback);
+  };
+
+  virtual void TerminateDebugger() override { Debugger::Terminate(); };
+
+  // Noncopyable.
+  SystemLifetimeManagerDbg(const SystemLifetimeManagerDbg &other) = delete;
+  SystemLifetimeManagerDbg &
+  operator=(const SystemLifetimeManagerDbg &other) = delete;
+};
+} // namespace lldb_private
+
+#endif
diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp
index e646b09e05852..55ccfd415ca47 100644
--- a/lldb/source/API/SBDebugger.cpp
+++ b/lldb/source/API/SBDebugger.cpp
@@ -44,7 +44,7 @@
 #include "lldb/Host/Config.h"
 #include "lldb/Host/StreamFile.h"
 #include "lldb/Host/XML.h"
-#include "lldb/Initialization/SystemLifetimeManager.h"
+#include "lldb/Initialization/SystemLifetimeManagerDbg.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
 #include "lldb/Interpreter/OptionArgParser.h"
 #include "lldb/Interpreter/OptionGroupPlatform.h"
@@ -66,7 +66,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-static llvm::ManagedStatic<SystemLifetimeManager> g_debugger_lifetime;
+static llvm::ManagedStatic<SystemLifetimeManagerDbg> g_debugger_lifetime;
 
 SBError SBInputReader::Initialize(
     lldb::SBDebugger &sb_debugger,
diff --git a/lldb/source/Initialization/SystemLifetimeManager.cpp 
b/lldb/source/Initialization/SystemLifetimeManager.cpp
index f9de41a675356..b07fe71affec7 100644
--- a/lldb/source/Initialization/SystemLifetimeManager.cpp
+++ b/lldb/source/Initialization/SystemLifetimeManager.cpp
@@ -8,7 +8,6 @@
 
 #include "lldb/Initialization/SystemLifetimeManager.h"
 
-#include "lldb/Core/Debugger.h"
 #include "lldb/Initialization/SystemInitializer.h"
 
 #include <utility>
@@ -36,7 +35,7 @@ llvm::Error SystemLifetimeManager::Initialize(
     if (auto e = m_initializer->Initialize())
       return e;
 
-    Debugger::Initialize(plugin_callback);
+    InitializeDebugger(plugin_callback);
   }
 
   return llvm::Error::success();
@@ -46,7 +45,7 @@ void SystemLifetimeManager::Terminate() {
   std::lock_guard<std::recursive_mutex> guard(m_mutex);
 
   if (m_initialized) {
-    Debugger::Terminate();
+    TerminateDebugger();
     m_initializer->Terminate();
 
     m_initializer.reset();
diff --git a/lldb/tools/lldb-test/lldb-test.cpp 
b/lldb/tools/lldb-test/lldb-test.cpp
index 1960240dc4151..81ac0b8898d6e 100644
--- a/lldb/tools/lldb-test/lldb-test.cpp
+++ b/lldb/tools/lldb-test/lldb-test.cpp
@@ -17,7 +17,7 @@
 #include "lldb/Core/Module.h"
 #include "lldb/Core/Section.h"
 #include "lldb/Expression/IRMemoryMap.h"
-#include "lldb/Initialization/SystemLifetimeManager.h"
+#include "lldb/Initialization/SystemLifetimeManagerDbg.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
 #include "lldb/Interpreter/CommandReturnObject.h"
 #include "lldb/Symbol/CompileUnit.h"
@@ -1245,7 +1245,7 @@ int main(int argc, const char *argv[]) {
 
   cl::ParseCommandLineOptions(argc, argv, "LLDB Testing Utility\n");
 
-  SystemLifetimeManager DebuggerLifetime;
+  SystemLifetimeManagerDbg DebuggerLifetime;
   if (auto e = DebuggerLifetime.Initialize(
           std::make_unique<SystemInitializerTest>(), nullptr)) {
     WithColor::error() << "initialization failed: " << toString(std::move(e))

>From 0d4e76c260d6c99fcd2fd35fad9259a3af7f7d48 Mon Sep 17 00:00:00 2001
From: Dmitry Vasilyev <dvassil...@accesssoftek.com>
Date: Fri, 4 Apr 2025 20:12:00 +0400
Subject: [PATCH 2/3] Customized using SystemInitializer.

---
 .../lldb/Initialization/SystemInitializer.h   |  3 +-
 .../Initialization/SystemInitializerCommon.h  |  2 +-
 .../Initialization/SystemLifetimeManager.h    |  5 +--
 .../Initialization/SystemLifetimeManagerDbg.h | 36 -------------------
 lldb/source/API/SBDebugger.cpp                |  4 +--
 lldb/source/API/SystemInitializerFull.cpp     |  9 +++--
 lldb/source/API/SystemInitializerFull.h       |  2 +-
 .../SystemInitializerCommon.cpp               |  3 +-
 .../Initialization/SystemLifetimeManager.cpp  |  5 +--
 .../lldb-server/SystemInitializerLLGS.cpp     |  5 +--
 .../tools/lldb-server/SystemInitializerLLGS.h |  3 +-
 .../tools/lldb-test/SystemInitializerTest.cpp |  9 +++--
 lldb/tools/lldb-test/SystemInitializerTest.h  |  2 +-
 lldb/tools/lldb-test/lldb-test.cpp            |  4 +--
 14 files changed, 32 insertions(+), 60 deletions(-)
 delete mode 100644 lldb/include/lldb/Initialization/SystemLifetimeManagerDbg.h

diff --git a/lldb/include/lldb/Initialization/SystemInitializer.h 
b/lldb/include/lldb/Initialization/SystemInitializer.h
index 4426bfb224e37..a504042e547c6 100644
--- a/lldb/include/lldb/Initialization/SystemInitializer.h
+++ b/lldb/include/lldb/Initialization/SystemInitializer.h
@@ -9,6 +9,7 @@
 #ifndef LLDB_INITIALIZATION_SYSTEMINITIALIZER_H
 #define LLDB_INITIALIZATION_SYSTEMINITIALIZER_H
 
+#include "lldb/lldb-private-types.h"
 #include "llvm/Support/Error.h"
 
 #include <string>
@@ -20,7 +21,7 @@ class SystemInitializer {
   SystemInitializer();
   virtual ~SystemInitializer();
 
-  virtual llvm::Error Initialize() = 0;
+  virtual llvm::Error Initialize(LoadPluginCallbackType plugin_callback) = 0;
   virtual void Terminate() = 0;
 };
 }
diff --git a/lldb/include/lldb/Initialization/SystemInitializerCommon.h 
b/lldb/include/lldb/Initialization/SystemInitializerCommon.h
index d918b1125a570..83ea8a3958d08 100644
--- a/lldb/include/lldb/Initialization/SystemInitializerCommon.h
+++ b/lldb/include/lldb/Initialization/SystemInitializerCommon.h
@@ -26,7 +26,7 @@ class SystemInitializerCommon : public SystemInitializer {
   SystemInitializerCommon(HostInfo::SharedLibraryDirectoryHelper *helper);
   ~SystemInitializerCommon() override;
 
-  llvm::Error Initialize() override;
+  llvm::Error Initialize(LoadPluginCallbackType plugin_callback) override;
   void Terminate() override;
 
 private:
diff --git a/lldb/include/lldb/Initialization/SystemLifetimeManager.h 
b/lldb/include/lldb/Initialization/SystemLifetimeManager.h
index 55138b33be712..06328e60133fe 100644
--- a/lldb/include/lldb/Initialization/SystemLifetimeManager.h
+++ b/lldb/include/lldb/Initialization/SystemLifetimeManager.h
@@ -21,7 +21,7 @@ namespace lldb_private {
 class SystemLifetimeManager {
 public:
   SystemLifetimeManager();
-  virtual ~SystemLifetimeManager();
+  ~SystemLifetimeManager();
 
   llvm::Error Initialize(std::unique_ptr<SystemInitializer> initializer,
                          LoadPluginCallbackType plugin_callback);
@@ -32,9 +32,6 @@ class SystemLifetimeManager {
   std::unique_ptr<SystemInitializer> m_initializer;
   bool m_initialized = false;
 
-  virtual void InitializeDebugger(LoadPluginCallbackType plugin_callback) {};
-  virtual void TerminateDebugger() {};
-
   // Noncopyable.
   SystemLifetimeManager(const SystemLifetimeManager &other) = delete;
   SystemLifetimeManager &operator=(const SystemLifetimeManager &other) = 
delete;
diff --git a/lldb/include/lldb/Initialization/SystemLifetimeManagerDbg.h 
b/lldb/include/lldb/Initialization/SystemLifetimeManagerDbg.h
deleted file mode 100644
index 5e728398f71bd..0000000000000
--- a/lldb/include/lldb/Initialization/SystemLifetimeManagerDbg.h
+++ /dev/null
@@ -1,36 +0,0 @@
-//===-- SystemLifetimeManagerDbg.h ------------------------------*- C++ 
-*-===//
-//
-// 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_INITIALIZATION_SYSTEMLIFETIMEMANAGERDBG_H
-#define LLDB_INITIALIZATION_SYSTEMLIFETIMEMANAGERDBG_H
-
-#include "SystemLifetimeManager.h"
-#include "lldb/Core/Debugger.h"
-
-namespace lldb_private {
-
-class SystemLifetimeManagerDbg : public SystemLifetimeManager {
-public:
-  SystemLifetimeManagerDbg() : SystemLifetimeManager() {};
-
-private:
-  virtual void
-  InitializeDebugger(LoadPluginCallbackType plugin_callback) override {
-    Debugger::Initialize(plugin_callback);
-  };
-
-  virtual void TerminateDebugger() override { Debugger::Terminate(); };
-
-  // Noncopyable.
-  SystemLifetimeManagerDbg(const SystemLifetimeManagerDbg &other) = delete;
-  SystemLifetimeManagerDbg &
-  operator=(const SystemLifetimeManagerDbg &other) = delete;
-};
-} // namespace lldb_private
-
-#endif
diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp
index 55ccfd415ca47..e646b09e05852 100644
--- a/lldb/source/API/SBDebugger.cpp
+++ b/lldb/source/API/SBDebugger.cpp
@@ -44,7 +44,7 @@
 #include "lldb/Host/Config.h"
 #include "lldb/Host/StreamFile.h"
 #include "lldb/Host/XML.h"
-#include "lldb/Initialization/SystemLifetimeManagerDbg.h"
+#include "lldb/Initialization/SystemLifetimeManager.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
 #include "lldb/Interpreter/OptionArgParser.h"
 #include "lldb/Interpreter/OptionGroupPlatform.h"
@@ -66,7 +66,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-static llvm::ManagedStatic<SystemLifetimeManagerDbg> g_debugger_lifetime;
+static llvm::ManagedStatic<SystemLifetimeManager> g_debugger_lifetime;
 
 SBError SBInputReader::Initialize(
     lldb::SBDebugger &sb_debugger,
diff --git a/lldb/source/API/SystemInitializerFull.cpp 
b/lldb/source/API/SystemInitializerFull.cpp
index 9cc3779d1895f..ef45261e0140d 100644
--- a/lldb/source/API/SystemInitializerFull.cpp
+++ b/lldb/source/API/SystemInitializerFull.cpp
@@ -49,8 +49,9 @@ SystemInitializerFull::SystemInitializerFull()
     : SystemInitializerCommon(g_shlib_dir_helper) {}
 SystemInitializerFull::~SystemInitializerFull() = default;
 
-llvm::Error SystemInitializerFull::Initialize() {
-  llvm::Error error = SystemInitializerCommon::Initialize();
+llvm::Error
+SystemInitializerFull::Initialize(LoadPluginCallbackType plugin_callback) {
+  llvm::Error error = SystemInitializerCommon::Initialize(plugin_callback);
   if (error)
     return error;
 
@@ -86,10 +87,14 @@ llvm::Error SystemInitializerFull::Initialize() {
 
   LLDB_LOG(GetLog(SystemLog::System), "{0}", GetVersion());
 
+  Debugger::Initialize(plugin_callback);
+
   return llvm::Error::success();
 }
 
 void SystemInitializerFull::Terminate() {
+  Debugger::Terminate();
+
   Debugger::SettingsTerminate();
 
   // Terminate plug-ins in core LLDB.
diff --git a/lldb/source/API/SystemInitializerFull.h 
b/lldb/source/API/SystemInitializerFull.h
index 7cab6cb97533d..06c2e5ba86181 100644
--- a/lldb/source/API/SystemInitializerFull.h
+++ b/lldb/source/API/SystemInitializerFull.h
@@ -23,7 +23,7 @@ class SystemInitializerFull : public SystemInitializerCommon {
   SystemInitializerFull();
   ~SystemInitializerFull() override;
 
-  llvm::Error Initialize() override;
+  llvm::Error Initialize(LoadPluginCallbackType plugin_callback) override;
   void Terminate() override;
 };
 
diff --git a/lldb/source/Initialization/SystemInitializerCommon.cpp 
b/lldb/source/Initialization/SystemInitializerCommon.cpp
index 1a172a95aa147..6341ca257dd6e 100644
--- a/lldb/source/Initialization/SystemInitializerCommon.cpp
+++ b/lldb/source/Initialization/SystemInitializerCommon.cpp
@@ -41,7 +41,8 @@ SystemInitializerCommon::SystemInitializerCommon(
 
 SystemInitializerCommon::~SystemInitializerCommon() = default;
 
-llvm::Error SystemInitializerCommon::Initialize() {
+llvm::Error
+SystemInitializerCommon::Initialize(LoadPluginCallbackType plugin_callback) {
 #if defined(_WIN32)
   const char *disable_crash_dialog_var = getenv("LLDB_DISABLE_CRASH_DIALOG");
   if (disable_crash_dialog_var &&
diff --git a/lldb/source/Initialization/SystemLifetimeManager.cpp 
b/lldb/source/Initialization/SystemLifetimeManager.cpp
index b07fe71affec7..0df01b3c20a59 100644
--- a/lldb/source/Initialization/SystemLifetimeManager.cpp
+++ b/lldb/source/Initialization/SystemLifetimeManager.cpp
@@ -32,10 +32,8 @@ llvm::Error SystemLifetimeManager::Initialize(
     m_initialized = true;
     m_initializer = std::move(initializer);
 
-    if (auto e = m_initializer->Initialize())
+    if (auto e = m_initializer->Initialize(plugin_callback))
       return e;
-
-    InitializeDebugger(plugin_callback);
   }
 
   return llvm::Error::success();
@@ -45,7 +43,6 @@ void SystemLifetimeManager::Terminate() {
   std::lock_guard<std::recursive_mutex> guard(m_mutex);
 
   if (m_initialized) {
-    TerminateDebugger();
     m_initializer->Terminate();
 
     m_initializer.reset();
diff --git a/lldb/tools/lldb-server/SystemInitializerLLGS.cpp 
b/lldb/tools/lldb-server/SystemInitializerLLGS.cpp
index 5b280d6cf5280..0e46c4b4073ef 100644
--- a/lldb/tools/lldb-server/SystemInitializerLLGS.cpp
+++ b/lldb/tools/lldb-server/SystemInitializerLLGS.cpp
@@ -56,8 +56,9 @@ using HostObjectFile = ObjectFileELF;
 
 using namespace lldb_private;
 
-llvm::Error SystemInitializerLLGS::Initialize() {
-  if (auto e = SystemInitializerCommon::Initialize())
+llvm::Error
+SystemInitializerLLGS::Initialize(LoadPluginCallbackType plugin_callback) {
+  if (auto e = SystemInitializerCommon::Initialize(plugin_callback))
     return e;
 
   HostObjectFile::Initialize();
diff --git a/lldb/tools/lldb-server/SystemInitializerLLGS.h 
b/lldb/tools/lldb-server/SystemInitializerLLGS.h
index 4469a8ba5f60a..e529e7f32cc80 100644
--- a/lldb/tools/lldb-server/SystemInitializerLLGS.h
+++ b/lldb/tools/lldb-server/SystemInitializerLLGS.h
@@ -16,7 +16,8 @@ class SystemInitializerLLGS : public 
lldb_private::SystemInitializerCommon {
 public:
   SystemInitializerLLGS() : SystemInitializerCommon(nullptr) {}
 
-  llvm::Error Initialize() override;
+  llvm::Error
+  Initialize(lldb_private::LoadPluginCallbackType plugin_callback) override;
   void Terminate() override;
 };
 
diff --git a/lldb/tools/lldb-test/SystemInitializerTest.cpp 
b/lldb/tools/lldb-test/SystemInitializerTest.cpp
index 2b6e0f26bb491..b655bd49d8526 100644
--- a/lldb/tools/lldb-test/SystemInitializerTest.cpp
+++ b/lldb/tools/lldb-test/SystemInitializerTest.cpp
@@ -26,8 +26,9 @@ SystemInitializerTest::SystemInitializerTest()
     : SystemInitializerCommon(nullptr) {}
 SystemInitializerTest::~SystemInitializerTest() = default;
 
-llvm::Error SystemInitializerTest::Initialize() {
-  if (auto e = SystemInitializerCommon::Initialize())
+llvm::Error
+SystemInitializerTest::Initialize(LoadPluginCallbackType plugin_callback) {
+  if (auto e = SystemInitializerCommon::Initialize(plugin_callback))
     return e;
 
   // Initialize LLVM and Clang
@@ -51,10 +52,14 @@ llvm::Error SystemInitializerTest::Initialize() {
   // Settings must be initialized AFTER PluginManager::Initialize is called.
   Debugger::SettingsInitialize();
 
+  Debugger::Initialize(plugin_callback);
+
   return llvm::Error::success();
 }
 
 void SystemInitializerTest::Terminate() {
+  Debugger::Terminate();
+
   Debugger::SettingsTerminate();
 
   // Terminate and unload and loaded system or user LLDB plug-ins
diff --git a/lldb/tools/lldb-test/SystemInitializerTest.h 
b/lldb/tools/lldb-test/SystemInitializerTest.h
index a9f2111e688fb..a4313c0f158d2 100644
--- a/lldb/tools/lldb-test/SystemInitializerTest.h
+++ b/lldb/tools/lldb-test/SystemInitializerTest.h
@@ -23,7 +23,7 @@ class SystemInitializerTest : public SystemInitializerCommon {
   SystemInitializerTest();
   ~SystemInitializerTest() override;
 
-  llvm::Error Initialize() override;
+  llvm::Error Initialize(LoadPluginCallbackType plugin_callback) override;
   void Terminate() override;
 };
 
diff --git a/lldb/tools/lldb-test/lldb-test.cpp 
b/lldb/tools/lldb-test/lldb-test.cpp
index 81ac0b8898d6e..1960240dc4151 100644
--- a/lldb/tools/lldb-test/lldb-test.cpp
+++ b/lldb/tools/lldb-test/lldb-test.cpp
@@ -17,7 +17,7 @@
 #include "lldb/Core/Module.h"
 #include "lldb/Core/Section.h"
 #include "lldb/Expression/IRMemoryMap.h"
-#include "lldb/Initialization/SystemLifetimeManagerDbg.h"
+#include "lldb/Initialization/SystemLifetimeManager.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
 #include "lldb/Interpreter/CommandReturnObject.h"
 #include "lldb/Symbol/CompileUnit.h"
@@ -1245,7 +1245,7 @@ int main(int argc, const char *argv[]) {
 
   cl::ParseCommandLineOptions(argc, argv, "LLDB Testing Utility\n");
 
-  SystemLifetimeManagerDbg DebuggerLifetime;
+  SystemLifetimeManager DebuggerLifetime;
   if (auto e = DebuggerLifetime.Initialize(
           std::make_unique<SystemInitializerTest>(), nullptr)) {
     WithColor::error() << "initialization failed: " << toString(std::move(e))

>From dd9f8d6d742cdfd4ca1faf6e41ec5eb7344957a7 Mon Sep 17 00:00:00 2001
From: Dmitry Vasilyev <dvassil...@accesssoftek.com>
Date: Mon, 7 Apr 2025 18:14:32 +0400
Subject: [PATCH 3/3] Moved LoadPlugin lambda to SystemInitializerFull.

---
 lldb/include/lldb/API/SBDebugger.h            |  2 +
 .../lldb/Initialization/SystemInitializer.h   |  3 +-
 .../Initialization/SystemInitializerCommon.h  |  2 +-
 .../Initialization/SystemLifetimeManager.h    |  3 +-
 lldb/source/API/SBDebugger.cpp                | 41 +---------------
 lldb/source/API/SystemInitializerFull.cpp     | 47 +++++++++++++++++--
 lldb/source/API/SystemInitializerFull.h       |  2 +-
 .../SystemInitializerCommon.cpp               |  3 +-
 .../Initialization/SystemLifetimeManager.cpp  |  5 +-
 .../lldb-server/SystemInitializerLLGS.cpp     |  5 +-
 .../tools/lldb-server/SystemInitializerLLGS.h |  3 +-
 lldb/tools/lldb-server/lldb-server.cpp        |  2 +-
 .../tools/lldb-test/SystemInitializerTest.cpp |  7 ++-
 lldb/tools/lldb-test/SystemInitializerTest.h  |  2 +-
 lldb/tools/lldb-test/lldb-test.cpp            |  2 +-
 15 files changed, 62 insertions(+), 67 deletions(-)

diff --git a/lldb/include/lldb/API/SBDebugger.h 
b/lldb/include/lldb/API/SBDebugger.h
index e0819f1684f8b..3ece2a2e3a9f2 100644
--- a/lldb/include/lldb/API/SBDebugger.h
+++ b/lldb/include/lldb/API/SBDebugger.h
@@ -16,6 +16,7 @@
 
 namespace lldb_private {
 class CommandPluginInterfaceImplementation;
+class SystemInitializerFull;
 namespace python {
 class SWIGBridge;
 }
@@ -508,6 +509,7 @@ class LLDB_API SBDebugger {
 protected:
   friend class lldb_private::CommandPluginInterfaceImplementation;
   friend class lldb_private::python::SWIGBridge;
+  friend class lldb_private::SystemInitializerFull;
 
   SBDebugger(const lldb::DebuggerSP &debugger_sp);
 
diff --git a/lldb/include/lldb/Initialization/SystemInitializer.h 
b/lldb/include/lldb/Initialization/SystemInitializer.h
index a504042e547c6..4426bfb224e37 100644
--- a/lldb/include/lldb/Initialization/SystemInitializer.h
+++ b/lldb/include/lldb/Initialization/SystemInitializer.h
@@ -9,7 +9,6 @@
 #ifndef LLDB_INITIALIZATION_SYSTEMINITIALIZER_H
 #define LLDB_INITIALIZATION_SYSTEMINITIALIZER_H
 
-#include "lldb/lldb-private-types.h"
 #include "llvm/Support/Error.h"
 
 #include <string>
@@ -21,7 +20,7 @@ class SystemInitializer {
   SystemInitializer();
   virtual ~SystemInitializer();
 
-  virtual llvm::Error Initialize(LoadPluginCallbackType plugin_callback) = 0;
+  virtual llvm::Error Initialize() = 0;
   virtual void Terminate() = 0;
 };
 }
diff --git a/lldb/include/lldb/Initialization/SystemInitializerCommon.h 
b/lldb/include/lldb/Initialization/SystemInitializerCommon.h
index 83ea8a3958d08..d918b1125a570 100644
--- a/lldb/include/lldb/Initialization/SystemInitializerCommon.h
+++ b/lldb/include/lldb/Initialization/SystemInitializerCommon.h
@@ -26,7 +26,7 @@ class SystemInitializerCommon : public SystemInitializer {
   SystemInitializerCommon(HostInfo::SharedLibraryDirectoryHelper *helper);
   ~SystemInitializerCommon() override;
 
-  llvm::Error Initialize(LoadPluginCallbackType plugin_callback) override;
+  llvm::Error Initialize() override;
   void Terminate() override;
 
 private:
diff --git a/lldb/include/lldb/Initialization/SystemLifetimeManager.h 
b/lldb/include/lldb/Initialization/SystemLifetimeManager.h
index 06328e60133fe..1b891010f5d8d 100644
--- a/lldb/include/lldb/Initialization/SystemLifetimeManager.h
+++ b/lldb/include/lldb/Initialization/SystemLifetimeManager.h
@@ -23,8 +23,7 @@ class SystemLifetimeManager {
   SystemLifetimeManager();
   ~SystemLifetimeManager();
 
-  llvm::Error Initialize(std::unique_ptr<SystemInitializer> initializer,
-                         LoadPluginCallbackType plugin_callback);
+  llvm::Error Initialize(std::unique_ptr<SystemInitializer> initializer);
   void Terminate();
 
 private:
diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp
index e646b09e05852..2cfcdc78c8111 100644
--- a/lldb/source/API/SBDebugger.cpp
+++ b/lldb/source/API/SBDebugger.cpp
@@ -179,48 +179,9 @@ void SBDebugger::Initialize() {
 lldb::SBError SBDebugger::InitializeWithErrorHandling() {
   LLDB_INSTRUMENT();
 
-  auto LoadPlugin = [](const lldb::DebuggerSP &debugger_sp,
-                       const FileSpec &spec,
-                       Status &error) -> llvm::sys::DynamicLibrary {
-    llvm::sys::DynamicLibrary dynlib =
-        llvm::sys::DynamicLibrary::getPermanentLibrary(spec.GetPath().c_str());
-    if (dynlib.isValid()) {
-      typedef bool (*LLDBCommandPluginInit)(lldb::SBDebugger debugger);
-
-      lldb::SBDebugger debugger_sb(debugger_sp);
-      // This calls the bool lldb::PluginInitialize(lldb::SBDebugger debugger)
-      // function.
-      // TODO: mangle this differently for your system - on OSX, the first
-      // underscore needs to be removed and the second one stays
-      LLDBCommandPluginInit init_func =
-          (LLDBCommandPluginInit)(uintptr_t)dynlib.getAddressOfSymbol(
-              "_ZN4lldb16PluginInitializeENS_10SBDebuggerE");
-      if (init_func) {
-        if (init_func(debugger_sb))
-          return dynlib;
-        else
-          error = Status::FromErrorString(
-              "plug-in refused to load "
-              "(lldb::PluginInitialize(lldb::SBDebugger) "
-              "returned false)");
-      } else {
-        error = Status::FromErrorString(
-            "plug-in is missing the required initialization: "
-            "lldb::PluginInitialize(lldb::SBDebugger)");
-      }
-    } else {
-      if (FileSystem::Instance().Exists(spec))
-        error = Status::FromErrorString(
-            "this file does not represent a loadable dylib");
-      else
-        error = Status::FromErrorString("no such file");
-    }
-    return llvm::sys::DynamicLibrary();
-  };
-
   SBError error;
   if (auto e = g_debugger_lifetime->Initialize(
-          std::make_unique<SystemInitializerFull>(), LoadPlugin)) {
+          std::make_unique<SystemInitializerFull>())) {
     error.SetError(Status::FromError(std::move(e)));
   }
   return error;
diff --git a/lldb/source/API/SystemInitializerFull.cpp 
b/lldb/source/API/SystemInitializerFull.cpp
index ef45261e0140d..4cf7dd149e023 100644
--- a/lldb/source/API/SystemInitializerFull.cpp
+++ b/lldb/source/API/SystemInitializerFull.cpp
@@ -8,6 +8,7 @@
 
 #include "SystemInitializerFull.h"
 #include "lldb/API/SBCommandInterpreter.h"
+#include "lldb/API/SBDebugger.h"
 #include "lldb/Core/Debugger.h"
 #include "lldb/Core/PluginManager.h"
 #include "lldb/Core/Progress.h"
@@ -49,9 +50,8 @@ SystemInitializerFull::SystemInitializerFull()
     : SystemInitializerCommon(g_shlib_dir_helper) {}
 SystemInitializerFull::~SystemInitializerFull() = default;
 
-llvm::Error
-SystemInitializerFull::Initialize(LoadPluginCallbackType plugin_callback) {
-  llvm::Error error = SystemInitializerCommon::Initialize(plugin_callback);
+llvm::Error SystemInitializerFull::Initialize() {
+  llvm::Error error = SystemInitializerCommon::Initialize();
   if (error)
     return error;
 
@@ -87,7 +87,46 @@ SystemInitializerFull::Initialize(LoadPluginCallbackType 
plugin_callback) {
 
   LLDB_LOG(GetLog(SystemLog::System), "{0}", GetVersion());
 
-  Debugger::Initialize(plugin_callback);
+  auto LoadPlugin = [](const lldb::DebuggerSP &debugger_sp,
+                       const FileSpec &spec,
+                       Status &error) -> llvm::sys::DynamicLibrary {
+    llvm::sys::DynamicLibrary dynlib =
+        llvm::sys::DynamicLibrary::getPermanentLibrary(spec.GetPath().c_str());
+    if (dynlib.isValid()) {
+      typedef bool (*LLDBCommandPluginInit)(lldb::SBDebugger debugger);
+
+      lldb::SBDebugger debugger_sb(debugger_sp);
+      // This calls the bool lldb::PluginInitialize(lldb::SBDebugger debugger)
+      // function.
+      // TODO: mangle this differently for your system - on OSX, the first
+      // underscore needs to be removed and the second one stays
+      LLDBCommandPluginInit init_func =
+          (LLDBCommandPluginInit)(uintptr_t)dynlib.getAddressOfSymbol(
+              "_ZN4lldb16PluginInitializeENS_10SBDebuggerE");
+      if (init_func) {
+        if (init_func(debugger_sb))
+          return dynlib;
+        else
+          error = Status::FromErrorString(
+              "plug-in refused to load "
+              "(lldb::PluginInitialize(lldb::SBDebugger) "
+              "returned false)");
+      } else {
+        error = Status::FromErrorString(
+            "plug-in is missing the required initialization: "
+            "lldb::PluginInitialize(lldb::SBDebugger)");
+      }
+    } else {
+      if (FileSystem::Instance().Exists(spec))
+        error = Status::FromErrorString(
+            "this file does not represent a loadable dylib");
+      else
+        error = Status::FromErrorString("no such file");
+    }
+    return llvm::sys::DynamicLibrary();
+  };
+
+  Debugger::Initialize(LoadPlugin);
 
   return llvm::Error::success();
 }
diff --git a/lldb/source/API/SystemInitializerFull.h 
b/lldb/source/API/SystemInitializerFull.h
index 06c2e5ba86181..7cab6cb97533d 100644
--- a/lldb/source/API/SystemInitializerFull.h
+++ b/lldb/source/API/SystemInitializerFull.h
@@ -23,7 +23,7 @@ class SystemInitializerFull : public SystemInitializerCommon {
   SystemInitializerFull();
   ~SystemInitializerFull() override;
 
-  llvm::Error Initialize(LoadPluginCallbackType plugin_callback) override;
+  llvm::Error Initialize() override;
   void Terminate() override;
 };
 
diff --git a/lldb/source/Initialization/SystemInitializerCommon.cpp 
b/lldb/source/Initialization/SystemInitializerCommon.cpp
index 6341ca257dd6e..1a172a95aa147 100644
--- a/lldb/source/Initialization/SystemInitializerCommon.cpp
+++ b/lldb/source/Initialization/SystemInitializerCommon.cpp
@@ -41,8 +41,7 @@ SystemInitializerCommon::SystemInitializerCommon(
 
 SystemInitializerCommon::~SystemInitializerCommon() = default;
 
-llvm::Error
-SystemInitializerCommon::Initialize(LoadPluginCallbackType plugin_callback) {
+llvm::Error SystemInitializerCommon::Initialize() {
 #if defined(_WIN32)
   const char *disable_crash_dialog_var = getenv("LLDB_DISABLE_CRASH_DIALOG");
   if (disable_crash_dialog_var &&
diff --git a/lldb/source/Initialization/SystemLifetimeManager.cpp 
b/lldb/source/Initialization/SystemLifetimeManager.cpp
index 0df01b3c20a59..43ceecce0cdb5 100644
--- a/lldb/source/Initialization/SystemLifetimeManager.cpp
+++ b/lldb/source/Initialization/SystemLifetimeManager.cpp
@@ -22,8 +22,7 @@ SystemLifetimeManager::~SystemLifetimeManager() {
 }
 
 llvm::Error SystemLifetimeManager::Initialize(
-    std::unique_ptr<SystemInitializer> initializer,
-    LoadPluginCallbackType plugin_callback) {
+    std::unique_ptr<SystemInitializer> initializer) {
   std::lock_guard<std::recursive_mutex> guard(m_mutex);
   if (!m_initialized) {
     assert(!m_initializer && "Attempting to call "
@@ -32,7 +31,7 @@ llvm::Error SystemLifetimeManager::Initialize(
     m_initialized = true;
     m_initializer = std::move(initializer);
 
-    if (auto e = m_initializer->Initialize(plugin_callback))
+    if (auto e = m_initializer->Initialize())
       return e;
   }
 
diff --git a/lldb/tools/lldb-server/SystemInitializerLLGS.cpp 
b/lldb/tools/lldb-server/SystemInitializerLLGS.cpp
index 0e46c4b4073ef..5b280d6cf5280 100644
--- a/lldb/tools/lldb-server/SystemInitializerLLGS.cpp
+++ b/lldb/tools/lldb-server/SystemInitializerLLGS.cpp
@@ -56,9 +56,8 @@ using HostObjectFile = ObjectFileELF;
 
 using namespace lldb_private;
 
-llvm::Error
-SystemInitializerLLGS::Initialize(LoadPluginCallbackType plugin_callback) {
-  if (auto e = SystemInitializerCommon::Initialize(plugin_callback))
+llvm::Error SystemInitializerLLGS::Initialize() {
+  if (auto e = SystemInitializerCommon::Initialize())
     return e;
 
   HostObjectFile::Initialize();
diff --git a/lldb/tools/lldb-server/SystemInitializerLLGS.h 
b/lldb/tools/lldb-server/SystemInitializerLLGS.h
index e529e7f32cc80..4469a8ba5f60a 100644
--- a/lldb/tools/lldb-server/SystemInitializerLLGS.h
+++ b/lldb/tools/lldb-server/SystemInitializerLLGS.h
@@ -16,8 +16,7 @@ class SystemInitializerLLGS : public 
lldb_private::SystemInitializerCommon {
 public:
   SystemInitializerLLGS() : SystemInitializerCommon(nullptr) {}
 
-  llvm::Error
-  Initialize(lldb_private::LoadPluginCallbackType plugin_callback) override;
+  llvm::Error Initialize() override;
   void Terminate() override;
 };
 
diff --git a/lldb/tools/lldb-server/lldb-server.cpp 
b/lldb/tools/lldb-server/lldb-server.cpp
index e2e6bfcd8645c..744f8ceb854fb 100644
--- a/lldb/tools/lldb-server/lldb-server.cpp
+++ b/lldb/tools/lldb-server/lldb-server.cpp
@@ -41,7 +41,7 @@ int main_platform(int argc, char *argv[]);
 namespace llgs {
 static void initialize() {
   if (auto e = g_debugger_lifetime->Initialize(
-          std::make_unique<SystemInitializerLLGS>(), nullptr))
+          std::make_unique<SystemInitializerLLGS>()))
     llvm::consumeError(std::move(e));
 }
 
diff --git a/lldb/tools/lldb-test/SystemInitializerTest.cpp 
b/lldb/tools/lldb-test/SystemInitializerTest.cpp
index b655bd49d8526..3478e5d8df994 100644
--- a/lldb/tools/lldb-test/SystemInitializerTest.cpp
+++ b/lldb/tools/lldb-test/SystemInitializerTest.cpp
@@ -26,9 +26,8 @@ SystemInitializerTest::SystemInitializerTest()
     : SystemInitializerCommon(nullptr) {}
 SystemInitializerTest::~SystemInitializerTest() = default;
 
-llvm::Error
-SystemInitializerTest::Initialize(LoadPluginCallbackType plugin_callback) {
-  if (auto e = SystemInitializerCommon::Initialize(plugin_callback))
+llvm::Error SystemInitializerTest::Initialize() {
+  if (auto e = SystemInitializerCommon::Initialize())
     return e;
 
   // Initialize LLVM and Clang
@@ -52,7 +51,7 @@ SystemInitializerTest::Initialize(LoadPluginCallbackType 
plugin_callback) {
   // Settings must be initialized AFTER PluginManager::Initialize is called.
   Debugger::SettingsInitialize();
 
-  Debugger::Initialize(plugin_callback);
+  Debugger::Initialize(nullptr);
 
   return llvm::Error::success();
 }
diff --git a/lldb/tools/lldb-test/SystemInitializerTest.h 
b/lldb/tools/lldb-test/SystemInitializerTest.h
index a4313c0f158d2..a9f2111e688fb 100644
--- a/lldb/tools/lldb-test/SystemInitializerTest.h
+++ b/lldb/tools/lldb-test/SystemInitializerTest.h
@@ -23,7 +23,7 @@ class SystemInitializerTest : public SystemInitializerCommon {
   SystemInitializerTest();
   ~SystemInitializerTest() override;
 
-  llvm::Error Initialize(LoadPluginCallbackType plugin_callback) override;
+  llvm::Error Initialize() override;
   void Terminate() override;
 };
 
diff --git a/lldb/tools/lldb-test/lldb-test.cpp 
b/lldb/tools/lldb-test/lldb-test.cpp
index 1960240dc4151..6743ce543dc66 100644
--- a/lldb/tools/lldb-test/lldb-test.cpp
+++ b/lldb/tools/lldb-test/lldb-test.cpp
@@ -1247,7 +1247,7 @@ int main(int argc, const char *argv[]) {
 
   SystemLifetimeManager DebuggerLifetime;
   if (auto e = DebuggerLifetime.Initialize(
-          std::make_unique<SystemInitializerTest>(), nullptr)) {
+          std::make_unique<SystemInitializerTest>())) {
     WithColor::error() << "initialization failed: " << toString(std::move(e))
                        << '\n';
     return 1;

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to