diff --git a/project.4coder b/project.4coder index dcef9767..0d66816b 100644 --- a/project.4coder +++ b/project.4coder @@ -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, }, diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index 30ae8cd2..97d7e1ac 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -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; diff --git a/src/eval/eval_core.h b/src/eval/eval_core.h index c48e0d29..bf376b9d 100644 --- a/src/eval/eval_core.h +++ b/src/eval/eval_core.h @@ -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; diff --git a/src/eval/eval_ir.c b/src/eval/eval_ir.c index aee91800..5ed0b8c5 100644 --- a/src/eval/eval_ir.c +++ b/src/eval/eval_ir.c @@ -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: diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 6ae49298..6eda13da 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -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;