From c53b8d43d04235d322a87ee7edf82d74b01ce343 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Fri, 15 Aug 2025 12:54:19 -0700 Subject: [PATCH] assign symbol indices before serializing symbols so forward-references are possible --- src/coff/coff_obj_writer.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/coff/coff_obj_writer.c b/src/coff/coff_obj_writer.c index 33da32fb..3770fb12 100644 --- a/src/coff/coff_obj_writer.c +++ b/src/coff/coff_obj_writer.c @@ -51,13 +51,21 @@ coff_obj_writer_serialize(Arena *arena, COFF_ObjWriter *obj_writer) // String8List symbol_table = {0}; { + { + U64 symbol_idx = 0; + for (COFF_ObjSymbolNode *symbol_n = obj_writer->symbol_first; symbol_n != 0; symbol_n = symbol_n->next) { + COFF_ObjSymbol *s = &symbol_n->v; + + // assign symbol index + s->idx = symbol_idx++; + symbol_idx += s->aux_symbols.node_count; + } + } + U64 symbol_idx = 0; for (COFF_ObjSymbolNode *symbol_n = obj_writer->symbol_first; symbol_n != 0; symbol_n = symbol_n->next) { COFF_ObjSymbol *s = &symbol_n->v; - // assign symbol index - s->idx = symbol_idx++; - COFF_Symbol16 *d = push_array(scratch.arena, COFF_Symbol16, 1); str8_list_push(scratch.arena, &symbol_table, str8_struct(d));