1 //===-- ArchitectureAArch64.cpp -------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "Plugins/Architecture/AArch64/ArchitectureAArch64.h" 10 #include "lldb/Core/PluginManager.h" 11 #include "lldb/Utility/ArchSpec.h" 12 13 using namespace lldb_private; 14 using namespace lldb; 15 LLDB_PLUGIN_DEFINE(ArchitectureAArch64)16LLDB_PLUGIN_DEFINE(ArchitectureAArch64) 17 18 ConstString ArchitectureAArch64::GetPluginNameStatic() { 19 return ConstString("aarch64"); 20 } 21 Initialize()22void ArchitectureAArch64::Initialize() { 23 PluginManager::RegisterPlugin(GetPluginNameStatic(), 24 "AArch64-specific algorithms", 25 &ArchitectureAArch64::Create); 26 } 27 Terminate()28void ArchitectureAArch64::Terminate() { 29 PluginManager::UnregisterPlugin(&ArchitectureAArch64::Create); 30 } 31 32 std::unique_ptr<Architecture> Create(const ArchSpec & arch)33ArchitectureAArch64::Create(const ArchSpec &arch) { 34 auto machine = arch.GetMachine(); 35 if (machine != llvm::Triple::aarch64 && machine != llvm::Triple::aarch64_be && 36 machine != llvm::Triple::aarch64_32) { 37 return nullptr; 38 } 39 return std::unique_ptr<Architecture>(new ArchitectureAArch64()); 40 } 41 GetPluginName()42ConstString ArchitectureAArch64::GetPluginName() { 43 return GetPluginNameStatic(); 44 } GetPluginVersion()45uint32_t ArchitectureAArch64::GetPluginVersion() { return 1; } 46