Move printing functions to init script

This commit is contained in:
kamkow1
2025-03-09 18:46:31 +01:00
parent 4b10d7ea4d
commit ddf2152d46
3 changed files with 63 additions and 38 deletions

View File

@@ -1,13 +1,20 @@
log_inf("Loading init script for program ./test");
log_err("Test error message");
// Main script
var main_offset = "0x0000000000001135"; // objdump -d ./test
log_inf("Loading system init script");
// Testing...
print_file();
print_dbg_pid();
print_program_load_offset();
mk_brk_addr(main_offset);
list_brks();
cont();
function print_file()
{
log_inf("Debugging file \"" + get_file() + "\"");
}
function print_pid()
{
log_inf("Debuggee PID is " + get_pid());
}
function print_program_load_offset()
{
log_inf("Program load offset is " + get_program_load_offset());
}
load_script(".debugusrc1.js");

14
.debugusrc1.js Normal file
View File

@@ -0,0 +1,14 @@
// User script
log_inf("Loading user init script for program ./test");
log_err("Test error message");
var main_offset = "0x0000000000001135"; // objdump -d ./test
// Testing...
print_file();
print_pid();
print_program_load_offset();
mk_brk_addr(main_offset);
list_brks();
cont();

View File

@@ -72,22 +72,6 @@ typedef struct {
#define getdbg() ((Dbg*)js_currentfunctiondata(js))
void dbg_js_print_file(js_State *js)
{
Dbg *dbg = getdbg();
LOG_INF("File: %s\n", dbg->file);
js_pushundefined(js);
}
void dbg_js_print_dbg_pid(js_State *js)
{
Dbg *dbg = getdbg();
LOG_INF("Debugger PID: %d\n", dbg->pid);
js_pushundefined(js);
}
void dbg_js_cont(js_State *js)
{
Dbg *dbg = getdbg();
@@ -138,12 +122,10 @@ void dbg_js_set_program_load_offset(js_State *js)
js_pushundefined(js);
}
void dbg_js_print_program_load_offset(js_State *js)
void dbg_js_get_program_load_offset(js_State *js)
{
Dbg *dbg = getdbg();
LOG_INF("Program load offset: 0x%"PRIxPTR"\n", dbg->program_load_offset);
js_pushundefined(js);
js_pushnumber(js, dbg->program_load_offset);
}
void dbg_js_list_brks(js_State *js)
@@ -176,6 +158,27 @@ void dbg_js_log_err(js_State *js)
js_pushundefined(js);
}
void dbg_js_load_script(js_State *js)
{
void dbg_load_script(Dbg *dbg, const char *script_path);
Dbg *dbg = getdbg();
const char *path = js_tostring(js, 1);
dbg_load_script(dbg, path);
js_pushundefined(js);
}
void dbg_js_get_file(js_State *js)
{
Dbg *dbg = getdbg();
js_pushstring(js, dbg->file);
}
void dbg_js_get_pid(js_State *js)
{
Dbg *dbg = getdbg();
js_pushnumber(js, dbg->pid);
}
void dbg_init_js(Dbg *dbg)
{
dbg->js = js_newstate(NULL, NULL, JS_STRICT);
@@ -186,16 +189,17 @@ void dbg_init_js(Dbg *dbg)
js_setglobal(dbg->js, #name); \
} while(0)
make_js_func(print_file, 0);
make_js_func(print_dbg_pid, 0);
make_js_func(cont, 0);
make_js_func(mk_brk_addr, 1 /*addr*/);
make_js_func(rm_brk_addr, 1 /*addr*/);
make_js_func(list_brks, 0);
make_js_func(set_program_load_offset, 1);
make_js_func(print_program_load_offset, 0);
make_js_func(log_inf, 1);
make_js_func(log_err, 1);
make_js_func(set_program_load_offset, 1 /*offset*/);
make_js_func(log_inf, 1 /*string*/);
make_js_func(log_err, 1 /*string*/);
make_js_func(load_script, 1 /*path*/);
make_js_func(get_file, 0);
make_js_func(get_pid, 0);
make_js_func(get_program_load_offset, 0);
#undef make_js_func
}
@@ -219,7 +223,7 @@ void dbg_init_load_offset(Dbg *dbg)
pmparser_free(&maps_iter);
}
void dbg_load_init_script(Dbg *dbg, const char *script_path)
void dbg_load_script(Dbg *dbg, const char *script_path)
{
FILE *script = fopen(script_path, "r");
if (script == NULL) {
@@ -247,7 +251,7 @@ void dbg_init(Dbg *dbg, const char *file, pid_t pid)
dbg_init_load_offset(dbg);
hashtable_init(&dbg->brks, MAX_BRKS);
dbg_load_init_script(dbg, INIT_SCRIPT);
dbg_load_script(dbg, INIT_SCRIPT);
}
void dbg_deinit(Dbg *dbg)