serialize symbols directly into MSF streams

This commit is contained in:
Nikita Smith
2026-02-16 20:32:44 -08:00
parent 442f41b51a
commit 2083c1ed87
5 changed files with 202 additions and 200 deletions
+36 -2
View File
@@ -545,6 +545,40 @@ cv_data_c13_from_debug_s(Arena *arena, CV_DebugS *debug_s, B32 write_sig)
return srl;
}
internal U64
cv_size_from_debug_s(CV_DebugS *debug_s, U64 align)
{
U64 size = 0;
for EachElement(i, debug_s->data_list) {
if (i == CV_C13SubSectionIdxKind_Lines) { continue; }
if (debug_s->data_list[i].total_size == 0) { continue; }
size += sizeof(CV_C13SubSectionKind) + sizeof(U32); // header
size += debug_s->data_list[i].total_size;
size = AlignPow2(size, align);
}
String8List *line_data = cv_sub_section_ptr_from_debug_s(debug_s, CV_C13SubSectionKind_Lines);
for EachNode(line_n, String8Node, line_data->first) {
if (line_n->string.size == 0) { continue; }
size += sizeof(CV_C13SubSectionKind) + sizeof(U32); // header
size += line_n->string.size;
size = AlignPow2(size, align);
}
return size;
}
internal CV_C13SubSectionKind
cv_c13_sub_section_kind_from_idx(CV_C13SubSectionIdxKind idx)
{
switch (idx) {
#define X(n, c) case CV_C13SubSectionIdxKind_##n: return c;
CV_C13SubSectionKindXList(X)
#undef X
}
return 0;
}
internal CV_C13SubSectionIdxKind
cv_c13_sub_section_idx_from_kind(CV_C13SubSectionKind kind)
{
@@ -1520,8 +1554,8 @@ internal CV_ChecksumList
cv_c13_parse_checksum_data_list(Arena *arena, String8List checksum_data_list)
{
CV_ChecksumList result = {0};
for (String8Node *node = checksum_data_list.first; node != 0; node = node->next) {
cv_parse_checksum_data(arena, &result, node->string);
for EachNode(n, String8Node, checksum_data_list.first) {
cv_parse_checksum_data(arena, &result, n->string);
}
return result;
}
+3
View File
@@ -403,8 +403,11 @@ internal CV_Signature cv_signature_from_debug_s(String8 raw_debug_s);
internal CV_DebugS cv_parse_debug_s(Arena *arena, String8 raw_debug_s);
internal void cv_debug_s_concat_in_place(CV_DebugS *dst, CV_DebugS *src);
internal String8List cv_data_c13_from_debug_s(Arena *arena, CV_DebugS *debug_s, B32 write_sig);
internal U64 cv_size_from_debug_s(CV_DebugS *debug_s, U64 align);
internal CV_C13SubSectionKind cv_c13_sub_section_kind_from_idx(CV_C13SubSectionIdxKind idx);
internal CV_C13SubSectionIdxKind cv_c13_sub_section_idx_from_kind(CV_C13SubSectionKind kind);
internal String8List * cv_sub_section_ptr_from_debug_s(CV_DebugS *debug_s, CV_C13SubSectionKind kind);
internal String8List cv_sub_section_from_debug_s(CV_DebugS debug_s, CV_C13SubSectionKind kind);
internal String8 cv_string_table_from_debug_s(CV_DebugS debug_s);