45 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_ARCHITECTURE_ARM_ARCHITECTUREARM_H10#define LLDB_SOURCE_PLUGINS_ARCHITECTURE_ARM_ARCHITECTUREARM_H11 12#include "lldb/Core/Architecture.h"13#include "lldb/Target/Thread.h"14 15namespace lldb_private {16 17class ArchitectureArm : public Architecture {18public:19 static llvm::StringRef GetPluginNameStatic() { return "arm"; }20 static void Initialize();21 static void Terminate();22 23 llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }24 25 void OverrideStopInfo(Thread &thread) const override;26 27 lldb::addr_t GetCallableLoadAddress(lldb::addr_t load_addr,28 AddressClass addr_class) const override;29 30 lldb::addr_t GetOpcodeLoadAddress(lldb::addr_t load_addr,31 AddressClass addr_class) const override;32 33 lldb::UnwindPlanSP GetArchitectureUnwindPlan(34 lldb_private::Thread &thread, lldb_private::RegisterContextUnwind *regctx,35 std::shared_ptr<const UnwindPlan> current_unwindplan) override;36 37private:38 static std::unique_ptr<Architecture> Create(const ArchSpec &arch);39 ArchitectureArm() = default;40};41 42} // namespace lldb_private43 44#endif // LLDB_SOURCE_PLUGINS_ARCHITECTURE_ARM_ARCHITECTUREARM_H45