Path: blob/main/contrib/llvm-project/lldb/source/Plugins/Architecture/AArch64/ArchitectureAArch64.h
39645 views
//===-- ArchitectureAArch64.h -----------------------------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLDB_SOURCE_PLUGINS_ARCHITECTURE_AARCH64_ARCHITECTUREAARCH64_H9#define LLDB_SOURCE_PLUGINS_ARCHITECTURE_AARCH64_ARCHITECTUREAARCH64_H1011#include "Plugins/Process/Utility/MemoryTagManagerAArch64MTE.h"12#include "lldb/Core/Architecture.h"1314namespace lldb_private {1516class ArchitectureAArch64 : public Architecture {17public:18static llvm::StringRef GetPluginNameStatic() { return "aarch64"; }19static void Initialize();20static void Terminate();2122llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }2324void OverrideStopInfo(Thread &thread) const override {}2526const MemoryTagManager *GetMemoryTagManager() const override {27return &m_memory_tag_manager;28}2930bool31RegisterWriteCausesReconfigure(const llvm::StringRef name) const override {32// lldb treats svg as read only, so only vg can be written. This results in33// the SVE registers changing size.34return name == "vg";35}3637bool ReconfigureRegisterInfo(DynamicRegisterInfo ®_info,38DataExtractor ®_data,39RegisterContext ®_context) const override;4041private:42static std::unique_ptr<Architecture> Create(const ArchSpec &arch);43ArchitectureAArch64() = default;44MemoryTagManagerAArch64MTE m_memory_tag_manager;45};4647} // namespace lldb_private4849#endif // LLDB_SOURCE_PLUGINS_ARCHITECTURE_AARCH64_ARCHITECTUREAARCH64_H505152