mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 17:28:07 +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]
|
//- 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 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 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]
|
//- rjf: [raddbg wsl]
|
||||||
// .f1 = { .win = "wsl ./build.sh raddbg", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
// .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_arch = thread->arch;
|
||||||
ctx->thread_reg_space = e_space_make(CTRL_EvalSpaceKind_Entity);
|
ctx->thread_reg_space = e_space_make(CTRL_EvalSpaceKind_Entity);
|
||||||
ctx->thread_reg_space.u64_0 = (U64)thread;
|
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
|
//- rjf: fill debug infos
|
||||||
ctx->dbg_infos = eval_dbg_infos;
|
ctx->dbg_infos = eval_dbg_infos;
|
||||||
|
|||||||
@@ -768,6 +768,7 @@ struct E_BaseCtx
|
|||||||
U64 thread_ip_vaddr;
|
U64 thread_ip_vaddr;
|
||||||
U64 thread_ip_voff;
|
U64 thread_ip_voff;
|
||||||
E_Space thread_reg_space;
|
E_Space thread_reg_space;
|
||||||
|
E_Space thread_process_space;
|
||||||
Arch thread_arch;
|
Arch thread_arch;
|
||||||
U64 thread_unwind_count;
|
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);
|
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)
|
if(e_type_kind_from_key(type_key) == E_TypeKind_Bitfield)
|
||||||
{
|
{
|
||||||
E_Type *type = e_type_from_key(type_key);
|
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_append_oplist_from_irtree(arena, child, current_space, out);
|
||||||
}
|
}
|
||||||
|
e_oplist_push_set_space(arena, out, space);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
case RDI_EvalOp_Cond:
|
case RDI_EvalOp_Cond:
|
||||||
|
|||||||
@@ -11121,6 +11121,7 @@ rd_frame(void)
|
|||||||
ctx->thread_ip_vaddr = rip_vaddr;
|
ctx->thread_ip_vaddr = rip_vaddr;
|
||||||
ctx->thread_ip_voff = rip_voff;
|
ctx->thread_ip_voff = rip_voff;
|
||||||
ctx->thread_reg_space = rd_eval_space_from_ctrl_entity(thread, CTRL_EvalSpaceKind_Entity);
|
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_arch = thread->arch;
|
||||||
ctx->thread_unwind_count = unwind_count;
|
ctx->thread_unwind_count = unwind_count;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user