xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/Architecture/AArch64/ArchitectureAArch64.h (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1be691f3bSpatrick //===-- ArchitectureAArch64.h -----------------------------------*- C++ -*-===//
2be691f3bSpatrick //
3be691f3bSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4be691f3bSpatrick // See https://llvm.org/LICENSE.txt for license information.
5be691f3bSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6be691f3bSpatrick //
7be691f3bSpatrick //===----------------------------------------------------------------------===//
8be691f3bSpatrick 
9be691f3bSpatrick #ifndef LLDB_SOURCE_PLUGINS_ARCHITECTURE_AARCH64_ARCHITECTUREAARCH64_H
10be691f3bSpatrick #define LLDB_SOURCE_PLUGINS_ARCHITECTURE_AARCH64_ARCHITECTUREAARCH64_H
11be691f3bSpatrick 
12be691f3bSpatrick #include "Plugins/Process/Utility/MemoryTagManagerAArch64MTE.h"
13be691f3bSpatrick #include "lldb/Core/Architecture.h"
14be691f3bSpatrick 
15be691f3bSpatrick namespace lldb_private {
16be691f3bSpatrick 
17be691f3bSpatrick class ArchitectureAArch64 : public Architecture {
18be691f3bSpatrick public:
GetPluginNameStatic()19*f6aab3d8Srobert   static llvm::StringRef GetPluginNameStatic() { return "aarch64"; }
20be691f3bSpatrick   static void Initialize();
21be691f3bSpatrick   static void Terminate();
22be691f3bSpatrick 
GetPluginName()23*f6aab3d8Srobert   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
24be691f3bSpatrick 
OverrideStopInfo(Thread & thread)25be691f3bSpatrick   void OverrideStopInfo(Thread &thread) const override{};
26be691f3bSpatrick 
GetMemoryTagManager()27be691f3bSpatrick   const MemoryTagManager *GetMemoryTagManager() const override {
28be691f3bSpatrick     return &m_memory_tag_manager;
29be691f3bSpatrick   }
30be691f3bSpatrick 
31be691f3bSpatrick private:
32be691f3bSpatrick   static std::unique_ptr<Architecture> Create(const ArchSpec &arch);
33be691f3bSpatrick   ArchitectureAArch64() = default;
34be691f3bSpatrick   MemoryTagManagerAArch64MTE m_memory_tag_manager;
35be691f3bSpatrick };
36be691f3bSpatrick 
37be691f3bSpatrick } // namespace lldb_private
38be691f3bSpatrick 
39be691f3bSpatrick #endif // LLDB_SOURCE_PLUGINS_ARCHITECTURE_AARCH64_ARCHITECTUREAARCH64_H
40