COFF parser fixes

This commit is contained in:
Nikita Smith
2025-01-15 10:25:16 -08:00
parent 25f924b075
commit 1f8433096a
+6 -5
View File
@@ -953,9 +953,9 @@ coff_parse_archive_member_header(String8 data, U64 offset, B32 is_regular_archiv
size = str8_skip_chop_whitespace(size); size = str8_skip_chop_whitespace(size);
header_out->name = name; header_out->name = name;
header_out->time_stamp = s32_from_str8(date, 10); header_out->time_stamp = u32_from_str8(date, 10);
header_out->user_id = s32_from_str8(user_id, 10); header_out->user_id = u32_from_str8(user_id, 10);
header_out->group_id = s32_from_str8(group_id, 10); header_out->group_id = u32_from_str8(group_id, 10);
header_out->mode = mode; header_out->mode = mode;
header_out->is_end_correct = str8_match(end, end_magic, 0); header_out->is_end_correct = str8_match(end, end_magic, 0);
header_out->data_range = rng_1u64(cursor, cursor + u32_from_str8(size, 10)); header_out->data_range = rng_1u64(cursor, cursor + u32_from_str8(size, 10));
@@ -1028,8 +1028,9 @@ coff_parse_first_archive_member(COFF_ArchiveMember *member)
internal COFF_ArchiveSecondMember internal COFF_ArchiveSecondMember
coff_parse_second_archive_member(COFF_ArchiveMember *member) coff_parse_second_archive_member(COFF_ArchiveMember *member)
{ {
Assert(str8_match(member->header.name, str8_lit("/"), 0)); COFF_ArchiveSecondMember result = {0};
if (str8_match(member->header.name, str8_lit("/"), 0)) {
U64 cursor = 0; U64 cursor = 0;
U32 member_count = 0; U32 member_count = 0;
@@ -1055,7 +1056,6 @@ coff_parse_second_archive_member(COFF_ArchiveMember *member)
U16 *symbol_indices = (U16 *)raw_indices.str; U16 *symbol_indices = (U16 *)raw_indices.str;
U64 symbol_index_count = raw_indices.size / sizeof(symbol_indices[0]); U64 symbol_index_count = raw_indices.size / sizeof(symbol_indices[0]);
COFF_ArchiveSecondMember result = {0};
result.member_count = member_count; result.member_count = member_count;
result.symbol_count = symbol_count; result.symbol_count = symbol_count;
result.member_offsets = member_offsets; result.member_offsets = member_offsets;
@@ -1063,6 +1063,7 @@ coff_parse_second_archive_member(COFF_ArchiveMember *member)
result.symbol_indices = symbol_indices; result.symbol_indices = symbol_indices;
result.symbol_index_count = symbol_index_count; result.symbol_index_count = symbol_index_count;
result.string_table = str8_substr(member->data, string_table_range); result.string_table = str8_substr(member->data, string_table_range);
}
return result; return result;
} }