Setting registers
This commit is contained in:
@@ -11,5 +11,13 @@ print_pid();
|
||||
print_program_load_offset();
|
||||
mk_brk_addr(main_offset);
|
||||
list_brks();
|
||||
log_inf("1 --------------------------------------------");
|
||||
dump_regs();
|
||||
var r14 = get_reg("r14");
|
||||
set_reg("r14", "0x0");
|
||||
log_inf("2 --------------------------------------------");
|
||||
dump_regs();
|
||||
set_reg("r14", r14);
|
||||
log_inf("3 --------------------------------------------");
|
||||
dump_regs();
|
||||
cont();
|
||||
|
||||
19
debugus.c
19
debugus.c
@@ -202,7 +202,7 @@ void dbg_js_mk_brk_addr(js_State *js)
|
||||
Dbg *dbg = getdbg();
|
||||
const char *addr_str = js_tostring(js, 1);
|
||||
uintptr_t addr;
|
||||
sscanf(addr_str, "%"SCNxPTR, &addr);
|
||||
sscanf(addr_str, "0x%"SCNxPTR, &addr);
|
||||
Brk brk = { .pid = dbg->pid, .addr = dbg->program_load_offset + addr };
|
||||
brk_enable(&brk);
|
||||
hashtable_set(&dbg->brks, addr_str, &brk, sizeof(brk));
|
||||
@@ -230,7 +230,7 @@ void dbg_js_set_program_load_offset(js_State *js)
|
||||
Dbg *dbg = getdbg();
|
||||
const char *addr_str = js_tostring(js, 1);
|
||||
uintptr_t addr;
|
||||
sscanf(addr_str, "%"SCNxPTR, &addr);
|
||||
sscanf(addr_str, "0x%"SCNxPTR, &addr);
|
||||
dbg->program_load_offset = addr;
|
||||
|
||||
js_pushundefined(js);
|
||||
@@ -304,6 +304,18 @@ void dbg_js_get_reg(js_State *js)
|
||||
js_pushstring(js, buf);
|
||||
}
|
||||
|
||||
void dbg_js_set_reg(js_State *js)
|
||||
{
|
||||
Dbg *dbg = getdbg();
|
||||
const char *name = js_tostring(js, 1);
|
||||
Register r = get_reg_from_name(name);
|
||||
const char *value_str = js_tostring(js, 2);
|
||||
uint64_t value;
|
||||
sscanf(value_str, "0x%"SCNx64, &value);
|
||||
set_reg_value(dbg->pid, r, value);
|
||||
js_pushundefined(js);
|
||||
}
|
||||
|
||||
void dbg_init_js(Dbg *dbg)
|
||||
{
|
||||
dbg->js = js_newstate(NULL, NULL, JS_STRICT);
|
||||
@@ -325,7 +337,8 @@ void dbg_init_js(Dbg *dbg)
|
||||
make_js_func(get_file, 0);
|
||||
make_js_func(get_pid, 0);
|
||||
make_js_func(get_program_load_offset, 0);
|
||||
make_js_func(get_reg, 1);
|
||||
make_js_func(get_reg, 1 /*reg name*/);
|
||||
make_js_func(set_reg, 2 /* reg name, value*/);
|
||||
|
||||
#undef make_js_func
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user