mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 09:18:09 +00:00
when resolving irtrees to values, promote register spaces -> containing process space; fixes pointer casts to register values
This commit is contained in:
+1
-1
@@ -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, },
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user