9#ifndef LLDB_SOURCE_PLUGINS_UNWINDASSEMBLY_X86_X86ASSEMBLYINSPECTIONENGINE_H
10#define LLDB_SOURCE_PLUGINS_UNWINDASSEMBLY_X86_X86ASSEMBLYINSPECTIONENGINE_H
12#include "llvm-c/Disassembler.h"
48 const char *
name =
nullptr;
52 void Initialize(std::vector<lldb_reg_info> ®_info);
A section + offset based address range class.
An architecture specification class.
bool FindFirstNonPrologueInstruction(uint8_t *data, size_t size, size_t &offset)
::LLVMDisasmContextRef m_disasm_context
bool mov_reg_to_local_stack_frame_p(int ®no, int &rbp_offset)
bool mov_rsp_rbp_pattern_p()
bool mov_rbx_rsp_pattern_p()
bool call_next_insn_pattern_p()
bool non_local_branch_p(const lldb::addr_t current_func_text_offset, const lldb_private::AddressRange &func_range, const int instruction_length)
std::map< uint32_t, lldb_reg_info > MachineRegnumToNameAndLLDBRegnum
~x86AssemblyInspectionEngine()
default dtor
bool nonvolatile_reg_p(int machine_regno)
bool lea_rbx_rsp_pattern_p(int &amount)
bool add_rsp_pattern_p(int &amount)
uint32_t m_machine_sp_regnum
bool lea_rsp_pattern_p(int &amount)
int16_t extract_2_signed(uint8_t *b)
bool lea_rbp_rsp_pattern_p(int &amount)
bool mov_rbp_rsp_pattern_p()
uint32_t m_machine_fp_regnum
bool AugmentUnwindPlanFromCallSite(uint8_t *data, size_t size, lldb_private::AddressRange &func_range, lldb_private::UnwindPlan &unwind_plan, lldb::RegisterContextSP ®_ctx)
Take an existing UnwindPlan, probably from eh_frame which may be missing description of the epilogue ...
bool push_rbp_pattern_p()
uint32_t m_machine_alt_fp_regnum
bool pc_rel_branch_or_jump_p(const int instruction_length, int &offset)
void Initialize(lldb::RegisterContextSP ®_ctx)
One of the two initialize methods that can be called on this object; they must be called before any o...
uint32_t m_lldb_alt_fp_regnum
bool GetNonCallSiteUnwindPlanFromAssembly(uint8_t *data, size_t size, lldb_private::AddressRange &func_range, lldb_private::UnwindPlan &unwind_plan)
Create an UnwindPlan for a "non-call site" stack frame situation.
uint16_t extract_2(uint8_t *b)
bool instruction_length(uint8_t *insn, int &length, uint32_t buffer_remaining_bytes)
uint32_t m_machine_ip_regnum
uint32_t m_lldb_ip_regnum
bool mov_rsp_rbx_pattern_p()
uint32_t m_lldb_sp_regnum
x86AssemblyInspectionEngine(const x86AssemblyInspectionEngine &)=delete
const x86AssemblyInspectionEngine & operator=(const x86AssemblyInspectionEngine &)=delete
int32_t extract_4_signed(uint8_t *b)
bool m_register_map_initialized
MachineRegnumToNameAndLLDBRegnum m_reg_map
bool machine_regno_to_lldb_regno(int machine_regno, uint32_t &lldb_regno)
bool push_reg_p(int ®no)
@ kMaxInstructionByteSize
bool pop_reg_p(int ®no)
uint32_t m_lldb_fp_regnum
uint32_t extract_4(uint8_t *b)
bool push_extended_pattern_p()
lldb_private::ArchSpec m_arch
bool sub_rsp_pattern_p(int &amount)
bool push_imm_pattern_p()
bool local_branch_p(const lldb::addr_t current_func_text_offset, const lldb_private::AddressRange &func_range, const int instruction_length, lldb::addr_t &target_insn_offset)
#define LLDB_INVALID_REGNUM
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::RegisterContext > RegisterContextSP
One of the two initialize methods that can be called on this object; they must be called before any o...