mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-12 23:31:38 -07:00
resolve register-space evaluations to primary-module space evaluations in the visualizers
This commit is contained in:
@@ -10773,7 +10773,8 @@ rd_regs_fill_slot_from_string(RD_RegSlot slot, String8 query_expr, String8 strin
|
||||
E_TypeKind eval_type_kind = e_type_kind_from_key(e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative));
|
||||
if(eval_type_kind == E_TypeKind_Ptr ||
|
||||
eval_type_kind == E_TypeKind_LRef ||
|
||||
eval_type_kind == E_TypeKind_RRef)
|
||||
eval_type_kind == E_TypeKind_RRef ||
|
||||
e_space_match(eval.space, e_base_ctx->thread_reg_space))
|
||||
{
|
||||
eval = e_value_eval_from_eval(eval);
|
||||
}
|
||||
|
||||
+31
-11
@@ -2361,6 +2361,16 @@ RD_VIEW_UI_FUNCTION_DEF(disasm)
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
Access *access = access_open();
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: if disassembly views are parameterized by a register-space evaluation,
|
||||
// we will interpret it as an address in the primary module.
|
||||
//
|
||||
if(e_space_match(eval.space, e_base_ctx->thread_reg_space))
|
||||
{
|
||||
eval = e_value_eval_from_eval(eval);
|
||||
eval.space = e_base_ctx->primary_module->space;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: if disassembly views are not parameterized by anything, they
|
||||
// automatically snap to the selected thread's RIP, OR the "temp look
|
||||
@@ -2596,6 +2606,27 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
RD_MemoryViewState *mv = rd_view_state(RD_MemoryViewState);
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: if memory views are parameterized by a register-space evaluation,
|
||||
// we will interpret it as an address in the primary module.
|
||||
//
|
||||
if(e_space_match(eval.space, e_base_ctx->thread_reg_space))
|
||||
{
|
||||
eval = e_value_eval_from_eval(eval);
|
||||
eval.space = e_base_ctx->primary_module->space;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: if memory views are parameterized by nothing, we will
|
||||
// default to showing the entire memory space of the primary module.
|
||||
//
|
||||
Rng1U64 view_range = rd_space_range_from_eval(eval);
|
||||
if(eval.space.kind == 0)
|
||||
{
|
||||
eval.space = rd_eval_space_from_ctrl_entity(ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->process), RD_EvalSpaceKind_CtrlEntity);
|
||||
view_range = rd_whole_range_from_eval_space(eval.space);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: unpack parameterization info
|
||||
//
|
||||
@@ -2604,17 +2635,6 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
|
||||
Vec4F32 main_tx_color_rgba = ui_color_from_name(str8_lit("text"));
|
||||
Vec4F32 main_tx_color_hsva = hsva_from_rgba(main_tx_color_rgba);
|
||||
F32 main_font_size = ui_bottom_font_size();
|
||||
if(e_space_match(eval.space, e_base_ctx->thread_reg_space))
|
||||
{
|
||||
eval = e_value_eval_from_eval(eval);
|
||||
eval.space = e_base_ctx->primary_module->space;
|
||||
}
|
||||
Rng1U64 view_range = rd_space_range_from_eval(eval);
|
||||
if(eval.space.kind == 0)
|
||||
{
|
||||
eval.space = rd_eval_space_from_ctrl_entity(ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->process), RD_EvalSpaceKind_CtrlEntity);
|
||||
view_range = rd_whole_range_from_eval_space(eval.space);
|
||||
}
|
||||
U64 cursor_base_vaddr = rd_view_setting_u64_from_name(str8_lit("cursor"));
|
||||
U64 mark_base_vaddr = rd_view_setting_u64_from_name(str8_lit("mark"));
|
||||
U64 cursor_size = rd_view_setting_u64_from_name(str8_lit("cursor_size"));
|
||||
|
||||
Reference in New Issue
Block a user