Setting registers
This commit is contained in:
@@ -11,5 +11,13 @@ print_pid();
|
|||||||
print_program_load_offset();
|
print_program_load_offset();
|
||||||
mk_brk_addr(main_offset);
|
mk_brk_addr(main_offset);
|
||||||
list_brks();
|
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();
|
dump_regs();
|
||||||
cont();
|
cont();
|
||||||
|
|||||||
19
debugus.c
19
debugus.c
@@ -202,7 +202,7 @@ void dbg_js_mk_brk_addr(js_State *js)
|
|||||||
Dbg *dbg = getdbg();
|
Dbg *dbg = getdbg();
|
||||||
const char *addr_str = js_tostring(js, 1);
|
const char *addr_str = js_tostring(js, 1);
|
||||||
uintptr_t addr;
|
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 brk = { .pid = dbg->pid, .addr = dbg->program_load_offset + addr };
|
||||||
brk_enable(&brk);
|
brk_enable(&brk);
|
||||||
hashtable_set(&dbg->brks, addr_str, &brk, sizeof(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();
|
Dbg *dbg = getdbg();
|
||||||
const char *addr_str = js_tostring(js, 1);
|
const char *addr_str = js_tostring(js, 1);
|
||||||
uintptr_t addr;
|
uintptr_t addr;
|
||||||
sscanf(addr_str, "%"SCNxPTR, &addr);
|
sscanf(addr_str, "0x%"SCNxPTR, &addr);
|
||||||
dbg->program_load_offset = addr;
|
dbg->program_load_offset = addr;
|
||||||
|
|
||||||
js_pushundefined(js);
|
js_pushundefined(js);
|
||||||
@@ -304,6 +304,18 @@ void dbg_js_get_reg(js_State *js)
|
|||||||
js_pushstring(js, buf);
|
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)
|
void dbg_init_js(Dbg *dbg)
|
||||||
{
|
{
|
||||||
dbg->js = js_newstate(NULL, NULL, JS_STRICT);
|
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_file, 0);
|
||||||
make_js_func(get_pid, 0);
|
make_js_func(get_pid, 0);
|
||||||
make_js_func(get_program_load_offset, 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
|
#undef make_js_func
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user