1 //===-- ArchitectureArm.h ---------------------------------------*- C++ -*-===//
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 #ifndef LLDB_SOURCE_PLUGINS_ARCHITECTURE_ARM_ARCHITECTUREARM_H
10 #define LLDB_SOURCE_PLUGINS_ARCHITECTURE_ARM_ARCHITECTUREARM_H
11 
12 #include "lldb/Core/Architecture.h"
13 
14 namespace lldb_private {
15 
16 class ArchitectureArm : public Architecture {
17 public:
18   static llvm::StringRef GetPluginNameStatic() { return "arm"; }
19   static void Initialize();
20   static void Terminate();
21 
22   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
23 
24   void OverrideStopInfo(Thread &thread) const override;
25 
26   lldb::addr_t GetCallableLoadAddress(lldb::addr_t load_addr,
27                                       AddressClass addr_class) const override;
28 
29   lldb::addr_t GetOpcodeLoadAddress(lldb::addr_t load_addr,
30                                     AddressClass addr_class) const override;
31 
32 private:
33   static std::unique_ptr<Architecture> Create(const ArchSpec &arch);
34   ArchitectureArm() = default;
35 };
36 
37 } // namespace lldb_private
38 
39 #endif // LLDB_SOURCE_PLUGINS_ARCHITECTURE_ARM_ARCHITECTUREARM_H
40