Index: lld/trunk/COFF/Chunks.h =================================================================== --- lld/trunk/COFF/Chunks.h +++ lld/trunk/COFF/Chunks.h @@ -311,7 +311,7 @@ }; // Windows-specific. -// A chunk for DLL import jump table entry. In a final output, it's +// A chunk for DLL import jump table entry. In a final output, its // contents will be a JMP instruction to some __imp_ symbol. class ImportThunkChunkX64 : public Chunk { public: Index: lld/trunk/COFF/InputFiles.cpp =================================================================== --- lld/trunk/COFF/InputFiles.cpp +++ lld/trunk/COFF/InputFiles.cpp @@ -155,9 +155,10 @@ const coff_aux_section_definition *Def, StringRef LeaderName) { const coff_section *Sec; - StringRef Name; if (auto EC = COFFObj->getSection(SectionNumber, Sec)) fatal("getSection failed: #" + Twine(SectionNumber) + ": " + EC.message()); + + StringRef Name; if (auto EC = COFFObj->getSectionName(Sec, Name)) fatal("getSectionName failed: #" + Twine(SectionNumber) + ": " + EC.message()); @@ -181,8 +182,8 @@ // of the linker; they are just a data section containing relocations. // We can just link them to complete debug info. // - // CodeView needs a linker support. We need to interpret and debug - // info, and then write it to a separate .pdb file. + // CodeView needs linker support. We need to interpret debug info, + // and then write it to a separate .pdb file. // Ignore DWARF debug info unless /debug is given. if (!Config->Debug && Name.startswith(".debug_")) @@ -290,7 +291,7 @@ return Symtab->addUndefined(Name, this, false); } if (SC) - return make(this, /*Name*/ "", false, + return make(this, /*Name*/ "", /*IsCOMDAT*/ false, /*IsExternal*/ false, Sym.getGeneric(), SC); return nullptr; } @@ -338,7 +339,7 @@ for (uint32_t I : PendingIndexes) { COFFSymbolRef Sym = check(COFFObj->getSymbol(I)); - if (auto *Def = Sym.getSectionDefinition()) { + if (const coff_aux_section_definition *Def = Sym.getSectionDefinition()) { if (Def->Selection == IMAGE_COMDAT_SELECT_ASSOCIATIVE) readAssociativeDefinition(Sym, Def); else if (Config->MinGW) @@ -421,7 +422,7 @@ std::tie(Leader, Prevailing) = Symtab->addComdat(this, GetName(), Sym.getGeneric()); } else { - Leader = make(this, /*Name*/ "", false, + Leader = make(this, /*Name*/ "", /*IsCOMDAT*/ false, /*IsExternal*/ false, Sym.getGeneric()); Prevailing = true; } @@ -441,7 +442,7 @@ // leader symbol by setting the section's ComdatDefs pointer if we encounter a // non-associative comdat. if (SparseChunks[SectionNumber] == PendingComdat) { - if (auto *Def = Sym.getSectionDefinition()) { + if (const coff_aux_section_definition *Def = Sym.getSectionDefinition()) { if (Def->Selection == IMAGE_COMDAT_SELECT_ASSOCIATIVE) readAssociativeDefinition(Sym, Def); else @@ -449,8 +450,10 @@ } } + // readAssociativeDefinition() writes to SparseChunks, so need to check again. if (SparseChunks[SectionNumber] == PendingComdat) return None; + return createRegular(Sym); } Index: lld/trunk/COFF/Symbols.h =================================================================== --- lld/trunk/COFF/Symbols.h +++ lld/trunk/COFF/Symbols.h @@ -39,7 +39,7 @@ public: enum Kind { // The order of these is significant. We start with the regular defined - // symbols as those are the most prevelant and the zero tag is the cheapest + // symbols as those are the most prevalent and the zero tag is the cheapest // to set. Among the defined kinds, the lower the kind is preferred over // the higher kind when testing whether one symbol should take precedence // over another.