added print_registers() to context
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
#include "dwarf_operations.h"
|
||||
|
||||
extern SC_LogBase* logger;
|
||||
extern dwarf_reg_map reg_map[];
|
||||
extern int regnum;
|
||||
|
||||
bool dwarf_value::get_int(int64_t& v)
|
||||
{
|
||||
@@ -81,6 +83,18 @@ bool dwarf_value::get_generic(uint64_t& v)
|
||||
return true;
|
||||
}
|
||||
|
||||
void __pst_context::print_registers(int from, int to)
|
||||
{
|
||||
for(int i = from; i < regnum && i <= to; ++i) {
|
||||
unw_word_t regval;
|
||||
if(!unw_get_reg(curr_frame, reg_map[i].regno, ®val)) {
|
||||
log(SEVERITY_DEBUG, "%s = %#lX%s", reg_map[i].regname, regval, i != to ? "," : "");
|
||||
} else {
|
||||
log(SEVERITY_DEBUG, "%s = <undef>", reg_map[i].regname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool __pst_context::print(const char* fmt, ...)
|
||||
{
|
||||
bool nret = true;
|
||||
|
||||
@@ -23,6 +23,7 @@ typedef struct __pst_context {
|
||||
bool print(const char* fmt, ...);
|
||||
void log(SC_LogSeverity severity, const char*fmt, ...);
|
||||
uint32_t print_expr_block(Dwarf_Op *exprs, int len, char* buff, uint32_t buff_size, Dwarf_Attribute* attr = 0);
|
||||
void print_registers(int from, int to);
|
||||
|
||||
ucontext_t* hcontext; // context of signal handler
|
||||
unw_context_t context; // context of stack trace
|
||||
|
||||
@@ -85,6 +85,8 @@ dwarf_reg_map reg_map[] = {
|
||||
{0x1f, "XMM14", DW_OP_breg31},
|
||||
};
|
||||
|
||||
int regnum = sizeof(reg_map) / sizeof(dwarf_reg_map);
|
||||
|
||||
// not implemented operations
|
||||
bool dw_op_notimpl(dwarf_stack* stack, const dwarf_op_map* map, Dwarf_Word op1, Dwarf_Word op2)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user