stage0 支持类gdb的调试vm手段

This commit is contained in:
zzy
2026-08-06 09:11:15 +08:00
parent ca7cf221c8
commit a56b4cbb70
6 changed files with 783 additions and 47 deletions

View File

@@ -39,6 +39,8 @@ void spl_prog_drop(spl_prog_t *prog) {
vec_for(prog->strtab, i) { free((void *)vec_at(prog->strtab, i)); }
vec_free(prog->strtab);
map_free(prog->symtab);
free(prog->debug);
prog->debug = NULL;
}
/* ---- LE read/write helpers ---- */
@@ -201,6 +203,23 @@ int spl_prog_load_from_file(const char *fname, spl_prog_t *prog) {
vec_push(prog->gdata, entry);
}
/* ---- debug 段splc0 -g 追加在文件尾部) ---- */
prog->debug = NULL;
prog->debug_size = 0;
{
ptrdiff_t used = p - data;
if (used >= 0 && (usize)used < (usize)len) {
size_t dlen = (size_t)len - (size_t)used;
char *dbg = (char *)malloc(dlen + 1);
if (dbg) {
memcpy(dbg, data + used, dlen);
dbg[dlen] = 0;
prog->debug = dbg;
prog->debug_size = dlen;
}
}
}
free(data);
return 0;
}