//===-- SystemInitializerTest.cpp -------------------------------*- 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
//
//===----------------------------------------------------------------------===//

#include "SystemInitializerTest.h"
#include "lldb/Core/Debugger.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Host/Host.h"
#include "lldb/Initialization/SystemInitializerCommon.h"
#include "lldb/Interpreter/CommandInterpreter.h"
#include "lldb/Utility/Timer.h"
#include "llvm/Support/TargetSelect.h"

#include <string>

using namespace lldb_private;

SystemInitializerTest::SystemInitializerTest() {}

SystemInitializerTest::~SystemInitializerTest() {}

#define LLDB_PROCESS_AArch64(op)                                               \
  op(ABIMacOSX_arm64);                                                         \
  op(ABISysV_arm64);
#define LLDB_PROCESS_ARM(op)                                                   \
  op(ABIMacOSX_arm);                                                           \
  op(ABISysV_arm);
#define LLDB_PROCESS_Hexagon(op) op(ABISysV_hexagon);
#define LLDB_PROCESS_Mips(op)                                                  \
  op(ABISysV_mips);                                                            \
  op(ABISysV_mips64);
#define LLDB_PROCESS_PowerPC(op)                                               \
  op(ABISysV_ppc);                                                             \
  op(ABISysV_ppc64);
#define LLDB_PROCESS_SystemZ(op) op(ABISysV_s390x);
#define LLDB_PROCESS_X86(op)                                                   \
  op(ABIMacOSX_i386);                                                          \
  op(ABISysV_i386);                                                            \
  op(ABISysV_x86_64);                                                          \
  op(ABIWindows_x86_64);

#define LLDB_PROCESS_AMDGPU(op)
#define LLDB_PROCESS_ARC(op)
#define LLDB_PROCESS_AVR(op)
#define LLDB_PROCESS_BPF(op)
#define LLDB_PROCESS_Lanai(op)
#define LLDB_PROCESS_MSP430(op)
#define LLDB_PROCESS_NVPTX(op)
#define LLDB_PROCESS_RISCV(op)
#define LLDB_PROCESS_Sparc(op)
#define LLDB_PROCESS_WebAssembly(op)
#define LLDB_PROCESS_XCore(op)

llvm::Error SystemInitializerTest::Initialize() {
  if (auto e = SystemInitializerCommon::Initialize())
    return e;

  LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
  LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
  LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
  LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
  LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);

  LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
  LLDB_PLUGIN_INITIALIZE(ObjectContainerUniversalMachO);

  LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);

  LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
  LLDB_PLUGIN_INITIALIZE(PlatformLinux);
  LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
  LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
  LLDB_PLUGIN_INITIALIZE(PlatformWindows);
  LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
  LLDB_PLUGIN_INITIALIZE(PlatformRemoteiOS);
  LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);

  // Initialize LLVM and Clang
  llvm::InitializeAllTargets();
  llvm::InitializeAllAsmPrinters();
  llvm::InitializeAllTargetMCs();
  llvm::InitializeAllDisassemblers();

  LLDB_PLUGIN_INITIALIZE(TypeSystemClang);

#define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
#include "llvm/Config/Targets.def"

  LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
  LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
  LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);

  LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);

  LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
  LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
  LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
  LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
  LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);

  LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
  LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
  LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
  LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
  LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
  LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
  LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
  LLDB_PLUGIN_INITIALIZE(UnwindAssembly_x86);

  LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM);
  LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM64);
  LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS);
  LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS64);
  LLDB_PLUGIN_INITIALIZE(EmulateInstructionPPC64);

  LLDB_PLUGIN_INITIALIZE(SymbolFileDWARFDebugMap);
  LLDB_PLUGIN_INITIALIZE(ItaniumABILanguageRuntime);
  LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
  LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
  LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);

  LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
  LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
  LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);

#if defined(_WIN32)
  LLDB_PLUGIN_INITIALIZE(ProcessWindows);
#endif
#if defined(__FreeBSD__)
  LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
#endif
#if defined(__APPLE__)
  LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
  LLDB_PLUGIN_INITIALIZE(ProcessKDP);
  LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
#endif

  // This plugin is valid on any host that talks to a Darwin remote. It
  // shouldn't be limited to __APPLE__.
  LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);

  // Platform agnostic plugins
  LLDB_PLUGIN_INITIALIZE(PlatformRemoteGDBServer);

  LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
  LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
  LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOS);
  LLDB_PLUGIN_INITIALIZE(DynamicLoaderPOSIXDYLD);
  LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
  LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);

  // Scan for any system or user LLDB plug-ins
  PluginManager::Initialize();

  // The process settings need to know about installed plug-ins, so the
  // Settings must be initialized
  // AFTER PluginManager::Initialize is called.

  Debugger::SettingsInitialize();

  return llvm::Error::success();
}

void SystemInitializerTest::Terminate() {
  static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
  Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);

  Debugger::SettingsTerminate();

  // Terminate and unload and loaded system or user LLDB plug-ins
  PluginManager::Terminate();

  LLDB_PLUGIN_TERMINATE(TypeSystemClang);

  LLDB_PLUGIN_TERMINATE(ArchitectureArm);
  LLDB_PLUGIN_TERMINATE(ArchitectureMips);
  LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);

#define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
#include "llvm/Config/Targets.def"

  LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);

  LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
  LLDB_PLUGIN_TERMINATE(ProcessElfCore);
  LLDB_PLUGIN_TERMINATE(ProcessMachCore);
  LLDB_PLUGIN_TERMINATE(ProcessMinidump);
  LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);

  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);

  LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
  LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
  LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
  LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
  LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
  LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
  LLDB_PLUGIN_TERMINATE(UnwindAssembly_x86);
  LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);

  LLDB_PLUGIN_TERMINATE(EmulateInstructionARM);
  LLDB_PLUGIN_TERMINATE(EmulateInstructionARM64);
  LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS);
  LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS64);
  LLDB_PLUGIN_TERMINATE(EmulateInstructionPPC64);

  LLDB_PLUGIN_TERMINATE(SymbolFileDWARFDebugMap);
  LLDB_PLUGIN_TERMINATE(ItaniumABILanguageRuntime);
  LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
  LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
  LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);

  LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
  LLDB_PLUGIN_TERMINATE(ObjCLanguage);
  LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);

#if defined(__APPLE__)
  LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
  LLDB_PLUGIN_TERMINATE(ProcessKDP);
  LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
#endif

#if defined(__FreeBSD__)
  LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
#endif
  Debugger::SettingsTerminate();

  LLDB_PLUGIN_TERMINATE(PlatformRemoteGDBServer);
  LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
  LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);

  LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
  LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOS);
  LLDB_PLUGIN_TERMINATE(DynamicLoaderPOSIXDYLD);
  LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
  LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);

  LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
  LLDB_PLUGIN_TERMINATE(PlatformLinux);
  LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
  LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
  LLDB_PLUGIN_TERMINATE(PlatformWindows);
  LLDB_PLUGIN_TERMINATE(PlatformAndroid);
  LLDB_PLUGIN_TERMINATE(PlatformRemoteiOS);
  LLDB_PLUGIN_TERMINATE(PlatformMacOSX);

  LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
  LLDB_PLUGIN_TERMINATE(ObjectFileELF);
  LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
  LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
  LLDB_PLUGIN_TERMINATE(ObjectFileWasm);

  LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
  LLDB_PLUGIN_TERMINATE(ObjectContainerUniversalMachO);

  LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);

  // Now shutdown the common parts, in reverse order.
  SystemInitializerCommon::Terminate();
}
