non-scope, non-type namespace gathering / gathering from pdb & baking & dumping

This commit is contained in:
Ryan Fleury
2026-04-20 09:57:34 -07:00
parent 5e81f124dc
commit 03d1575c85
7 changed files with 1254 additions and 931 deletions
+4
View File
@@ -896,6 +896,8 @@ X(Set)\
#define RDI_Namespace_XList \ #define RDI_Namespace_XList \
X(RDI_U32, name_string_idx)\ X(RDI_U32, name_string_idx)\
X(RDI_ContainerFlags, container_flags)\ X(RDI_ContainerFlags, container_flags)\
X(RDI_U8, padding_0)\
X(RDI_U16, padding_1)\
X(RDI_U32, container_idx)\ X(RDI_U32, container_idx)\
#define RDI_Symbol_XList \ #define RDI_Symbol_XList \
@@ -1347,6 +1349,8 @@ struct RDI_Namespace
{ {
RDI_U32 name_string_idx; RDI_U32 name_string_idx;
RDI_ContainerFlags container_flags; RDI_ContainerFlags container_flags;
RDI_U8 padding_0;
RDI_U16 padding_1;
RDI_U32 container_idx; RDI_U32 container_idx;
}; };
+1
View File
@@ -1194,6 +1194,7 @@ rdim_bake_params_concat_in_place(RDIM_BakeParams *dst, RDIM_BakeParams *src)
rdim_udt_chunk_list_concat_in_place(&dst->udts, &src->udts); rdim_udt_chunk_list_concat_in_place(&dst->udts, &src->udts);
rdim_src_file_chunk_list_concat_in_place(&dst->src_files, &src->src_files); rdim_src_file_chunk_list_concat_in_place(&dst->src_files, &src->src_files);
rdim_line_table_chunk_list_concat_in_place(&dst->line_tables, &src->line_tables); rdim_line_table_chunk_list_concat_in_place(&dst->line_tables, &src->line_tables);
rdim_namespace_chunk_list_concat_in_place(&dst->namespaces, &src->namespaces);
} }
} }
+2
View File
@@ -1026,6 +1026,8 @@ RDI_NamespaceMemberTable:
{ {
{name_string_idx RDI_U32 ""} {name_string_idx RDI_U32 ""}
{container_flags RDI_ContainerFlags ""} {container_flags RDI_ContainerFlags ""}
{padding_0 RDI_U8 ""}
{padding_1 RDI_U16 ""}
{container_idx RDI_U32 ""} {container_idx RDI_U32 ""}
} }
+33
View File
@@ -1236,6 +1236,39 @@ lane_sync(); if(flags & (1ull<<(kind))) ProfScope(rdi_name_title_from_dump_subse
scratch_end(scratch); scratch_end(scratch);
} }
//////////////////////////////
//- rjf: dump namespaces
//
DumpSubset(Namespaces)
{
U64 count = 0;
RDI_Namespace *v = rdi_table_from_name(rdi, Namespaces, &count);
Rng1U64 range = lane_range(count);
for EachInRange(idx, range)
{
RDI_Namespace *ns = &v[idx];
String8 container_kind_name = str8_lit("container_idx");
switch(ns->container_flags & RDI_ContainerFlag_KindMask)
{
default:{}break;
case RDI_ContainerKind_Type:
{
container_kind_name = str8_lit("container_udt_idx");
}break;
case RDI_ContainerKind_Namespace:
{
container_kind_name = str8_lit("container_namespace_idx");
}break;
case RDI_ContainerKind_Scope:
{
container_kind_name = str8_lit("container_scope_idx");
}break;
}
dumpf("\n '%S': {%S: %I64u} // namespaces[%I64u]", str8_from_rdi_string_idx(rdi, ns->name_string_idx), container_kind_name, ns->container_idx, idx);
}
if(lane_idx() == lane_count()-1) { dumpf("\n"); }
}
////////////////////////////// //////////////////////////////
//- rjf: dump strings //- rjf: dump strings
// //
+1
View File
@@ -32,6 +32,7 @@ X(Scopes, scopes, "SCOPES")\
X(ScopeVMap, scope_vmap, "SCOPE VMAP")\ X(ScopeVMap, scope_vmap, "SCOPE VMAP")\
X(InlineSites, inline_sites, "INLINE SITES")\ X(InlineSites, inline_sites, "INLINE SITES")\
X(NameMaps, name_maps, "NAME MAPS")\ X(NameMaps, name_maps, "NAME MAPS")\
X(Namespaces, namespaces, "NAMESPACES")\
X(Strings, strings, "STRINGS")\ X(Strings, strings, "STRINGS")\
typedef enum RDI_DumpSubset typedef enum RDI_DumpSubset
File diff suppressed because it is too large Load Diff
+1
View File
@@ -2584,6 +2584,7 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
} }
} }
} }
lane_sync();
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
//- rjf: @rdim_bake_stage compute lane UDT member/enum-val layouts //- rjf: @rdim_bake_stage compute lane UDT member/enum-val layouts