[llvm] [ObjectYAML][NFC] Finalize COFF symbol table offset in writeCOFF (PR #212671)
Haohai Wen via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 7 06:38:22 PDT 2026
================
@@ -359,6 +326,34 @@ static uint32_t initializeOptionalHeader(COFFParser &CP, uint16_t Magic,
}
static bool writeCOFF(COFFParser &CP, ContiguousBlobAccumulator &CBA) {
+ // Calculate number of symbols.
+ CP.Obj.Header.NumberOfSymbols = 0;
+ for (std::vector<COFFYAML::Symbol>::iterator i = CP.Obj.Symbols.begin(),
+ e = CP.Obj.Symbols.end();
+ i != e; ++i) {
+ uint32_t NumberOfAuxSymbols = 0;
+ if (i->FunctionDefinition)
+ NumberOfAuxSymbols += 1;
+ if (i->bfAndefSymbol)
+ NumberOfAuxSymbols += 1;
+ if (i->WeakExternal)
+ NumberOfAuxSymbols += 1;
+ if (!i->File.empty())
+ NumberOfAuxSymbols +=
+ (i->File.size() + CP.getSymbolSize() - 1) / CP.getSymbolSize();
+ if (i->SectionDefinition)
+ NumberOfAuxSymbols += 1;
+ if (i->CLRToken)
+ NumberOfAuxSymbols += 1;
+ i->Header.NumberOfAuxSymbols = NumberOfAuxSymbols;
+ CP.Obj.Header.NumberOfSymbols += 1 + NumberOfAuxSymbols;
+ }
+
+ CP.Obj.Header.NumberOfSections = CP.Obj.Sections.size();
+
+ // Save field offsets for writing back their final values.
+ uint64_t PointerToSymbolTableOffset = 0;
----------------
HaohaiWen wrote:
Done
https://github.com/llvm/llvm-project/pull/212671
More information about the llvm-commits
mailing list