9#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERTYPEDETECTOR_ARM64_H
10#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERTYPEDETECTOR_ARM64_H
14#include "llvm/ADT/StringRef.h"
42 void DetectTypes(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3);
95 RegisterEntry({
"gcs_features_enabled",
"gcs_features_locked"},
104 static_assert(std::is_base_of_v<RegisterType, T>);
106 auto type = std::make_unique<T>(std::forward<Args>(args)...);
107 const T *type_ptr = type.get();
121 template <
typename T,
typename...
Args>
A command line argument class.
std::vector< std::unique_ptr< RegisterType > > detected_types
This class manages the storage and detection of register type information.
bool HasDetected() const
Returns true if field detection has been run at least once.
const T * MakeType(Args &&...args)
const RegisterType * DetectPOREL0Type(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
const RegisterType * DetectFPCRType(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
const RegisterType * DetectFPMRType(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
const RegisterType * DetectMTECtrlType(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
const RegisterType * DetectGCSFeaturesType(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
const RegisterType * DetectCPSRType(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
void UpdateRegisterInfo(const RegisterInfo *reg_info, uint32_t num_regs)
Add the type information of any registers named in this class, to the relevant RegisterInfo instances...
const RegisterType * DetectFPSRType(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
struct lldb_private::Arm64RegisterTypeDetector::RegisterEntry m_registers[8]
class lldb_private::Arm64RegisterTypeDetector::DetectedTypesHolder m_detected_types
void DetectTypes(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
For the registers listed in this class, detect which fields are present and build types for those.
const RegisterType * DetectSVCRType(uint64_t hwcap, uint64_t hwcap2, uint64_t hwcap3)
const RegisterType *( Arm64RegisterTypeDetector::*)(uint64_t, uint64_t, uint64_t) DetectorFn
A class that represents a running process on the host machine.
std::vector< llvm::StringRef > m_names
RegisterEntry(const std::vector< llvm::StringRef > &names, DetectorFn detector)
const RegisterType * m_type
Every register is described in detail including its name, alternate name (optional),...