From 45b59e4cc48a4a2a6ab4a00a3b18d99ecbe45e2e Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 31 Jan 2024 15:06:20 -0800 Subject: [PATCH] apply fuzzy filtering correctly to globals/thread-locals/types views --- src/dbgi/dbgi.c | 2 +- src/df/gfx/df_views.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/dbgi/dbgi.c b/src/dbgi/dbgi.c index 4c96bc06..b894681e 100644 --- a/src/dbgi/dbgi.c +++ b/src/dbgi/dbgi.c @@ -1183,7 +1183,7 @@ dbgi_fuzzy_thread__entry_point(void *p) if(task_is_good) { void *table_base = (U8*)rdbg + table_ptr_off; - for(U64 idx = 1; task_is_good && idx < rdbg->procedures_count; idx += 1) + for(U64 idx = 1; task_is_good && idx < element_count; idx += 1) { void *element = (U8 *)(*(void **)table_base) + element_size*idx; U32 *name_idx_ptr = (U32 *)((U8 *)element + element_name_idx_off); diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 973d9127..0b5ff9e0 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -753,7 +753,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF DF_EvalVizBlock *globals_block = push_array(arena, DF_EvalVizBlock, 1); SLLQueuePush(blocks.first, blocks.last, globals_block); globals_block->kind = DF_EvalVizBlockKind_AllGlobals; - globals_block->visual_idx_range = globals_block->semantic_idx_range = r1u64(1, items.count); + globals_block->visual_idx_range = globals_block->semantic_idx_range = r1u64(0, items.count); globals_block->parent_key = parent_key; globals_block->key = root_key; globals_block->backing_search_items = items; @@ -788,7 +788,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF } // rjf: unpack global - RADDBG_GlobalVariable *global_var = raddbg_element_from_idx(parse_ctx->rdbg, global_variables, child_idx); + RADDBG_GlobalVariable *global_var = raddbg_element_from_idx(parse_ctx->rdbg, global_variables, items.v[child_idx].idx); RADDBG_TypeNode *type_node = raddbg_element_from_idx(parse_ctx->rdbg, type_nodes, global_var->type_idx); U64 voff = global_var->voff; U64 vaddr = df_vaddr_from_voff(module, voff); @@ -859,7 +859,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF DF_EvalVizBlock *tlocals_block = push_array(arena, DF_EvalVizBlock, 1); SLLQueuePush(blocks.first, blocks.last, tlocals_block); tlocals_block->kind = DF_EvalVizBlockKind_AllThreadLocals; - tlocals_block->visual_idx_range = tlocals_block->semantic_idx_range = r1u64(1, items.count); + tlocals_block->visual_idx_range = tlocals_block->semantic_idx_range = r1u64(0, items.count); tlocals_block->parent_key = parent_key; tlocals_block->key = root_key; tlocals_block->backing_search_items = items; @@ -894,7 +894,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF } // rjf: unpack tlocal - RADDBG_ThreadVariable *thread_var = raddbg_element_from_idx(parse_ctx->rdbg, thread_variables, child_idx); + RADDBG_ThreadVariable *thread_var = raddbg_element_from_idx(parse_ctx->rdbg, thread_variables, items.v[child_idx].idx); RADDBG_TypeNode *type_node = raddbg_element_from_idx(parse_ctx->rdbg, type_nodes, thread_var->type_idx); U64 name_size = 0; U8 *name_base = raddbg_string_from_idx(parse_ctx->rdbg, thread_var->name_string_idx, &name_size); @@ -958,7 +958,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF DF_EvalVizBlock *types_block = push_array(arena, DF_EvalVizBlock, 1); SLLQueuePush(blocks.first, blocks.last, types_block); types_block->kind = DF_EvalVizBlockKind_AllTypes; - types_block->visual_idx_range = types_block->semantic_idx_range = r1u64(1, items.count); + types_block->visual_idx_range = types_block->semantic_idx_range = r1u64(0, items.count); types_block->parent_key = parent_key; types_block->key = root_key; types_block->backing_search_items = items; @@ -993,7 +993,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF } // rjf: unpack types - RADDBG_UDT *udt = raddbg_element_from_idx(parse_ctx->rdbg, udts, child_idx); + RADDBG_UDT *udt = raddbg_element_from_idx(parse_ctx->rdbg, udts, items.v[child_idx].idx); RADDBG_TypeNode *type_node = raddbg_element_from_idx(parse_ctx->rdbg, type_nodes, udt->self_type_idx); U64 name_size = 0; U8 *name_base = raddbg_string_from_idx(parse_ctx->rdbg, type_node->user_defined.name_string_idx, &name_size);