move register-related code to separate files, move DWARF module & handle
to pst_context, move get_frame() from pst_handler to pst_function
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
typedef struct __dwarf_reg_map {
|
||||
int regno; // platform-dependent register number
|
||||
const char* regname; // register name
|
||||
uint32_t op_num; // number of DWARF DW_OP_reg(x)/DW_OP_breg(x) operation corresponds to this register
|
||||
} dwarf_reg_map;
|
||||
|
||||
int find_regnum(uint32_t op);
|
||||
|
||||
typedef enum {
|
||||
REG_OK = 0,
|
||||
REG_UNDEFINED,
|
||||
REG_SAME,
|
||||
REG_CFI_ERROR,
|
||||
REG_EXPR_ERROR
|
||||
} pst_reg_error;
|
||||
|
||||
typedef struct __pst_frame : public SC_ListNode {
|
||||
__pst_frame() {
|
||||
memset(reg_state, REG_UNDEFINED, sizeof(reg_state));
|
||||
memset(regs, 0, sizeof(regs));
|
||||
cfa = 0;
|
||||
}
|
||||
int32_t reg_state[128];
|
||||
uint64_t regs[128];
|
||||
uint64_t cfa;
|
||||
} pst_frame;
|
||||
|
||||
pst_reg_error pst_get_reg(pst_context* ctx, int regno, uint64_t& regval);
|
||||
Reference in New Issue
Block a user