diff --git a/src/lib_raddbgi_make/raddbgi_make.c b/src/lib_raddbgi_make/raddbgi_make.c index b93900e8..bf1597d7 100644 --- a/src/lib_raddbgi_make/raddbgi_make.c +++ b/src/lib_raddbgi_make/raddbgi_make.c @@ -736,11 +736,11 @@ rdim_scope_chunk_list_concat_in_place(RDIM_ScopeChunkList *dst, RDIM_ScopeChunkL { dst->last->next = to_push->first; dst->last = to_push->last; - dst->chunk_count += to_push->chunk_count; - dst->total_count += to_push->total_count; + dst->chunk_count += to_push->chunk_count; + dst->total_count += to_push->total_count; dst->scope_voff_count += to_push->scope_voff_count; - dst->local_count += to_push->local_count; - dst->location_count += to_push->location_count; + dst->local_count += to_push->local_count; + dst->location_count += to_push->location_count; } else if(dst->first == 0) { @@ -1405,6 +1405,11 @@ rdim_bake(RDIM_Arena *arena, RDIM_BakeParams *params) name_maps[k].slots_count = 65536; name_maps[k].slots = rdim_push_array(arena, RDIM_BakeNameMapNode *, name_maps[k].slots_count); } + RDIM_BakePathNode *nil_path = rdim_bake_path_node_from_string(arena, &path_tree, rdim_str8_lit("")); + RDIM_BakeSrcNode *nil_src = rdim_bake_src_node_from_path_node(arena, &path_tree, nil_path); + (void)nil_src; + rdim_bake_string(arena, &strings, rdim_str8_lit("")); + rdim_bake_idx_run(arena, &idx_runs, 0, 0); } ////////////////////////////// @@ -2066,7 +2071,7 @@ rdim_bake(RDIM_Arena *arena, RDIM_BakeParams *params) RDIM_ProfScope("build all procedures") { RDI_U32 dst_idx = 0; - for(RDIM_SymbolChunkNode *n = params->global_variables.first; n != 0; n = n->next) + for(RDIM_SymbolChunkNode *n = params->procedures.first; n != 0; n = n->next) { for(RDI_U64 chunk_idx = 0; chunk_idx < n->count; chunk_idx += 1, dst_idx += 1) { @@ -2343,7 +2348,7 @@ rdim_bake(RDIM_Arena *arena, RDIM_BakeParams *params) { RDIM_Scope *src_scope = &chunk_n->v[chunk_idx]; RDI_U32 scope_idx = (RDI_U32)rdim_idx_from_scope(src_scope); // TODO(rjf): @u64_to_u32 - for(RDIM_Rng1U64Node *n = 0; n != 0; n = n->next) + for(RDIM_Rng1U64Node *n = src_scope->voff_ranges.first; n != 0; n = n->next) { key_ptr->key = n->v.min; key_ptr->val = marker_ptr; diff --git a/src/lib_raddbgi_make/raddbgi_make.h b/src/lib_raddbgi_make/raddbgi_make.h index e23f9595..45fcb703 100644 --- a/src/lib_raddbgi_make/raddbgi_make.h +++ b/src/lib_raddbgi_make/raddbgi_make.h @@ -675,7 +675,6 @@ typedef struct RDIM_Symbol RDIM_Symbol; struct RDIM_Symbol { struct RDIM_SymbolChunkNode *chunk; - RDIM_SymbolKind kind; RDI_S32 is_extern; RDIM_String8 name; RDIM_String8 link_name; diff --git a/src/raddbgi_from_pdb/raddbgi_from_pdb.c b/src/raddbgi_from_pdb/raddbgi_from_pdb.c index 68503c7c..36ef1135 100644 --- a/src/raddbgi_from_pdb/raddbgi_from_pdb.c +++ b/src/raddbgi_from_pdb/raddbgi_from_pdb.c @@ -2377,7 +2377,7 @@ p2r_convert(Arena *arena, P2R_ConvertIn *in) U64 voff_first = section->voff + block32->off; U64 voff_last = voff_first + block32->len; RDIM_Rng1U64 voff_range = {voff_first, voff_last}; - rdim_rng1u64_list_push(arena, &scope->voff_ranges, voff_range); + rdim_scope_push_voff_range(arena, &sym_scopes, scope, voff_range); } } @@ -2437,7 +2437,6 @@ p2r_convert(Arena *arena, P2R_ConvertIn *in) // rjf: build symbol RDIM_Symbol *symbol = rdim_symbol_chunk_list_push(arena, &sym_global_variables, sym_global_variables_chunk_cap); - symbol->kind = RDIM_SymbolKind_GlobalVariable; symbol->is_extern = (kind == CV_SymKind_GDATA32); symbol->name = name; symbol->type = type; @@ -2488,7 +2487,7 @@ p2r_convert(Arena *arena, P2R_ConvertIn *in) U64 voff_first = section->voff + proc32->off; U64 voff_last = voff_first + proc32->len; RDIM_Rng1U64 voff_range = {voff_first, voff_last}; - rdim_rng1u64_list_push(arena, &procedure_root_scope->voff_ranges, voff_range); + rdim_scope_push_voff_range(arena, &sym_scopes, procedure_root_scope, voff_range); } } @@ -2512,13 +2511,13 @@ p2r_convert(Arena *arena, P2R_ConvertIn *in) // rjf: build procedure symbol RDIM_Symbol *procedure_symbol = rdim_symbol_chunk_list_push(arena, &sym_procedures, sym_procedures_chunk_cap); - procedure_symbol->kind = RDIM_SymbolKind_Procedure; procedure_symbol->is_extern = (kind == CV_SymKind_GPROC32); procedure_symbol->name = name; procedure_symbol->link_name = link_name; procedure_symbol->type = type; procedure_symbol->container_symbol = container_symbol; procedure_symbol->container_type = container_type; + procedure_symbol->root_scope = procedure_root_scope; // rjf: fill root scope's symbol procedure_root_scope->symbol = procedure_symbol; @@ -2649,7 +2648,6 @@ p2r_convert(Arena *arena, P2R_ConvertIn *in) // rjf: build symbol RDIM_Symbol *tvar = rdim_symbol_chunk_list_push(arena, &sym_thread_variables, sym_thread_variables_chunk_cap); - tvar->kind = RDIM_SymbolKind_ThreadVariable; tvar->name = name; tvar->type = type; tvar->is_extern = (kind == CV_SymKind_GTHREAD32);