when resolving irtrees to values, promote register spaces -> containing process space; fixes pointer casts to register values

This commit is contained in:
Ryan Fleury
2026-04-07 17:16:56 -06:00
parent 960f439a59
commit fee9f9a2c3
5 changed files with 10 additions and 1 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ commands =
//- rjf: [raddbg]
// .f1 = { .win = "raddbg_stable --ipc kill_all && build raddbg meta telemetry", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
// .f1 = { .win = "raddbg_stable --ipc kill_all && build raddbg debug telemetry", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
.f1 = { .win = "raddbg_stable --ipc kill_all && build radbin debug", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
.f1 = { .win = "raddbg_stable --ipc kill_all && build raddbg debug", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
//- rjf: [raddbg wsl]
// .f1 = { .win = "wsl ./build.sh raddbg", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
+2
View File
@@ -4892,6 +4892,8 @@ ctrl_thread__eval_scope_begin(Arena *arena, CTRL_UserBreakpointList *user_bps, C
ctx->thread_arch = thread->arch;
ctx->thread_reg_space = e_space_make(CTRL_EvalSpaceKind_Entity);
ctx->thread_reg_space.u64_0 = (U64)thread;
ctx->thread_process_space = e_space_make(CTRL_EvalSpaceKind_Entity);
ctx->thread_process_space.u64_0 = (U64)process;
//- rjf: fill debug infos
ctx->dbg_infos = eval_dbg_infos;
+1
View File
@@ -768,6 +768,7 @@ struct E_BaseCtx
U64 thread_ip_vaddr;
U64 thread_ip_voff;
E_Space thread_reg_space;
E_Space thread_process_space;
Arch thread_arch;
U64 thread_unwind_count;
+5
View File
@@ -305,6 +305,10 @@ e_irtree_resolve_to_value(Arena *arena, E_Mode from_mode, E_IRNode *tree, E_Type
{
result = e_irtree_mem_read_type(arena, tree, type_key);
}
if(from_mode == E_Mode_Offset && e_space_match(tree->space, e_base_ctx->thread_reg_space))
{
result = e_irtree_set_space(arena, e_base_ctx->thread_process_space, result);
}
if(e_type_kind_from_key(type_key) == E_TypeKind_Bitfield)
{
E_Type *type = e_type_from_key(type_key);
@@ -2651,6 +2655,7 @@ e_append_oplist_from_irtree(Arena *arena, E_IRNode *root, E_Space *current_space
{
e_append_oplist_from_irtree(arena, child, current_space, out);
}
e_oplist_push_set_space(arena, out, space);
}break;
case RDI_EvalOp_Cond:
+1
View File
@@ -11121,6 +11121,7 @@ rd_frame(void)
ctx->thread_ip_vaddr = rip_vaddr;
ctx->thread_ip_voff = rip_voff;
ctx->thread_reg_space = rd_eval_space_from_ctrl_entity(thread, CTRL_EvalSpaceKind_Entity);
ctx->thread_process_space= rd_eval_space_from_ctrl_entity(process, CTRL_EvalSpaceKind_Entity);
ctx->thread_arch = thread->arch;
ctx->thread_unwind_count = unwind_count;