#include "EmulateInstructionPPC64.h"
#include <cstdlib>
#include <optional>
#include "Plugins/Process/Utility/lldb-ppc64le-register-enums.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Symbol/UnwindPlan.h"
#include "lldb/Utility/ArchSpec.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/LLDBLog.h"
#define DECLARE_REGISTER_INFOS_PPC64LE_STRUCT
#include "Plugins/Process/Utility/RegisterInfos_ppc64le.h"
#include "Plugins/Process/Utility/InstructionUtils.h"
usingnamespacelldb;
usingnamespacelldb_private;
LLDB_PLUGIN_DEFINE_ADV(EmulateInstructionPPC64, InstructionPPC64)
EmulateInstructionPPC64::EmulateInstructionPPC64(const ArchSpec &arch)
: … { … }
void EmulateInstructionPPC64::Initialize() { … }
void EmulateInstructionPPC64::Terminate() { … }
llvm::StringRef EmulateInstructionPPC64::GetPluginDescriptionStatic() { … }
EmulateInstruction *
EmulateInstructionPPC64::CreateInstance(const ArchSpec &arch,
InstructionType inst_type) { … }
bool EmulateInstructionPPC64::SetTargetTriple(const ArchSpec &arch) { … }
static std::optional<RegisterInfo> LLDBTableGetRegisterInfo(uint32_t reg_num) { … }
std::optional<RegisterInfo>
EmulateInstructionPPC64::GetRegisterInfo(RegisterKind reg_kind,
uint32_t reg_num) { … }
bool EmulateInstructionPPC64::ReadInstruction() { … }
bool EmulateInstructionPPC64::CreateFunctionEntryUnwind(
UnwindPlan &unwind_plan) { … }
EmulateInstructionPPC64::Opcode *
EmulateInstructionPPC64::GetOpcodeForInstruction(uint32_t opcode) { … }
bool EmulateInstructionPPC64::EvaluateInstruction(uint32_t evaluate_options) { … }
bool EmulateInstructionPPC64::EmulateMFSPR(uint32_t opcode) { … }
bool EmulateInstructionPPC64::EmulateLD(uint32_t opcode) { … }
bool EmulateInstructionPPC64::EmulateSTD(uint32_t opcode) { … }
bool EmulateInstructionPPC64::EmulateOR(uint32_t opcode) { … }
bool EmulateInstructionPPC64::EmulateADDI(uint32_t opcode) { … }