raddbgi_from_pdb: adjust itype -> type node building strategy; do initial pass of finding dependent itypes from a given itype, since those *must* be built first in order to comply with raddbgi's rule of type nodes only ever referencing earlier type nodes; then do a single itype build pass where you build all itypes by iterating their dependency chains

This commit is contained in:
Ryan Fleury
2024-02-19 11:13:29 -08:00
parent e44128de96
commit 694e9d27d6
4 changed files with 709 additions and 494 deletions
+1 -1
View File
@@ -457,7 +457,7 @@ CV_BasicTypeTable:
}
////////////////////////////////
//~ rjf: CV Leaf
//~ rjf: CV Leaf Kinds
@table(name header_type_name val)
CV_LeafKindTable:
+2 -2
View File
@@ -6870,13 +6870,13 @@ df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags
if(opt_member != 0)
{
U64 member_byte_size = tg_byte_size_from_graph_rdi_key(graph, rdi, opt_member->type_key);
str8_list_pushf(arena, &list, "member (%I64u offset, %I64u byte%s)", opt_member->off, member_byte_size, member_byte_size > 1 ? "s" : "");
str8_list_pushf(arena, &list, "member (%I64u offset, %I64u byte%s)", opt_member->off, member_byte_size, member_byte_size == 1 ? "s" : "");
}
else
{
String8 basic_type_kind_string = tg_kind_basic_string_table[tg_kind_from_key(eval.type_key)];
U64 byte_size = tg_byte_size_from_graph_rdi_key(graph, rdi, eval.type_key);
str8_list_pushf(arena, &list, "%S (%I64u byte%s)", basic_type_kind_string, byte_size, byte_size > 1 ? "s" : "");
str8_list_pushf(arena, &list, "%S (%I64u byte%s)", basic_type_kind_string, byte_size, byte_size == 1 ? "s" : "");
}
}
+1
View File
@@ -49,6 +49,7 @@
////////////////////////////////
//~ rjf: Hot, High Priority Tasks (Complete Unusability, Crashes, Fire-Worthy)
//
// [ ] DBGI layer is case-sensitive even on case-insensitive systems
// [ ] Jump table thunks, on code w/o /INCREMENTAL:NO
//
// [ ] ** Thread/process control bullet-proofing, including solo-step mode
File diff suppressed because it is too large Load Diff