Index: lld/trunk/ELF/Driver.cpp =================================================================== --- lld/trunk/ELF/Driver.cpp +++ lld/trunk/ELF/Driver.cpp @@ -61,9 +61,9 @@ if (S == "aarch64linux") return {ELF64LEKind, EM_AARCH64}; if (S == "i386pe" || S == "i386pep" || S == "thumb2pe") - error("Windows targets are not supported on the ELF frontend: " + S); + error("windows targets are not supported on the ELF frontend: " + S); else - error("Unknown emulation: " + S); + error("unknown emulation: " + S); return {ELFNoneKind, 0}; } @@ -112,7 +112,7 @@ return; case file_magic::elf_shared_object: if (Config->Relocatable) { - error("Attempted static link of dynamic object " + Path); + error("attempted static link of dynamic object " + Path); return; } Files.push_back(createSharedFile(MBRef)); @@ -126,7 +126,7 @@ void LinkerDriver::addLibrary(StringRef Name) { std::string Path = searchLibrary(Name); if (Path.empty()) - error("Unable to find library -l" + Name); + error("unable to find library -l" + Name); else addFile(Path); } @@ -137,7 +137,7 @@ // The MIPS ABI as of 2016 does not support the GNU-style symbol lookup // table which is a relatively new feature. if (Config->EMachine == EM_MIPS && Config->GnuHash) - error("The .gnu.hash section is not compatible with the MIPS target."); + error("the .gnu.hash section is not compatible with the MIPS target."); if (Config->EMachine == EM_AMDGPU && !Config->Entry.empty()) error("-e option is not valid for AMDGPU."); @@ -262,7 +262,7 @@ if (auto *Arg = Args.getLastArg(OPT_O)) { StringRef Val = Arg->getValue(); if (Val.getAsInteger(10, Config->Optimize)) - error("Invalid optimization level"); + error("invalid optimization level"); } if (auto *Arg = Args.getLastArg(OPT_hash_style)) { @@ -273,7 +273,7 @@ } else if (S == "both") { Config->GnuHash = true; } else if (S != "sysv") - error("Unknown hash style: " + S); + error("unknown hash style: " + S); } for (auto *Arg : Args.filtered(OPT_undefined)) Index: lld/trunk/ELF/InputFiles.h =================================================================== --- lld/trunk/ELF/InputFiles.h +++ lld/trunk/ELF/InputFiles.h @@ -18,10 +18,8 @@ #include "lld/Core/LLVM.h" #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/STLExtras.h" -#include "llvm/IR/Comdat.h" #include "llvm/Object/Archive.h" #include "llvm/Object/ELF.h" -#include "llvm/Object/IRObjectFile.h" #include "llvm/Support/StringSaver.h" namespace lld { @@ -182,16 +180,19 @@ static bool classof(const InputFile *F); void parse(llvm::DenseSet &ComdatGroups); ArrayRef getSymbols() { return SymbolBodies; } - static bool shouldSkip(const llvm::object::BasicSymbolRef &Sym); + ArrayRef getExtraKeeps() { return ExtraKeeps; } private: std::vector SymbolBodies; + // Some symbols like llvm.global_ctors are internal to the IR and so + // don't show up in SymbolBodies, but must be kept when creating the + // combined LTO module. We track them here. + // We currently use a different Module for creating SymbolBody's vs when + // we are creating the combined LTO module, and so we can't store IR + // pointers directly and must rely on the IR names. + std::vector ExtraKeeps; llvm::BumpPtrAllocator Alloc; llvm::StringSaver Saver{Alloc}; - SymbolBody * - createSymbolBody(const llvm::DenseSet &KeptComdats, - const llvm::object::IRObjectFile &Obj, - const llvm::object::BasicSymbolRef &Sym); }; // .so file. Index: lld/trunk/ELF/InputFiles.cpp =================================================================== --- lld/trunk/ELF/InputFiles.cpp +++ lld/trunk/ELF/InputFiles.cpp @@ -53,7 +53,7 @@ uint32_t NumSymbols = std::distance(Syms.begin(), Syms.end()); uint32_t FirstNonLocal = Symtab->sh_info; if (FirstNonLocal > NumSymbols) - fatal("Invalid sh_info in symbol table"); + fatal("invalid sh_info in symbol table"); if (OnlyGlobals) return make_range(Syms.begin() + FirstNonLocal, Syms.end()); @@ -137,7 +137,7 @@ ArrayRef Entries = check(Obj.template getSectionContentsAsArray(&Sec)); if (Entries.empty() || Entries[0] != GRP_COMDAT) - fatal("Unsupported SHT_GROUP format"); + fatal("unsupported SHT_GROUP format"); return Entries.slice(1); } @@ -148,7 +148,7 @@ if (!(Flags & SHF_MERGE)) return false; if (Flags & SHF_WRITE) - fatal("Writable SHF_MERGE sections are not supported"); + fatal("writable SHF_MERGE sections are not supported"); uintX_t EntSize = Sec.sh_entsize; if (!EntSize || Sec.sh_size % EntSize) fatal("SHF_MERGE section size must be a multiple of sh_entsize"); @@ -187,7 +187,7 @@ continue; for (uint32_t SecIndex : getShtGroupEntries(Sec)) { if (SecIndex >= Size) - fatal("Invalid section index in group"); + fatal("invalid section index in group"); Sections[SecIndex] = InputSection::Discarded; } break; @@ -204,7 +204,7 @@ case SHT_REL: { uint32_t RelocatedSectionIndex = Sec.sh_info; if (RelocatedSectionIndex >= Size) - fatal("Invalid relocated section index"); + fatal("invalid relocated section index"); InputSectionBase *RelocatedSection = Sections[RelocatedSectionIndex]; // Strictly speaking, a relocation section must be included in the @@ -213,7 +213,7 @@ if (RelocatedSection == InputSection::Discarded) continue; if (!RelocatedSection) - fatal("Unsupported relocation reference"); + fatal("unsupported relocation reference"); if (Config->Relocatable) { // For -r, relocation sections are handled as regular input sections. Sections[I] = new (Alloc) InputSection(this, &Sec); @@ -221,10 +221,10 @@ S->RelocSections.push_back(&Sec); } else if (auto *S = dyn_cast>(RelocatedSection)) { if (S->RelocSection) - fatal("Multiple relocation sections to .eh_frame are not supported"); + fatal("multiple relocation sections to .eh_frame are not supported"); S->RelocSection = &Sec; } else { - fatal("Relocations pointing to SHF_MERGE are not supported"); + fatal("relocations pointing to SHF_MERGE are not supported"); } break; } @@ -247,7 +247,7 @@ return InputSection::Discarded; if (Name == ".note.GNU-split-stack") - error("Objects using splitstacks are not supported"); + error("objects using splitstacks are not supported"); // A MIPS object file has a special section that contains register // usage info, which needs to be handled by the linker specially. @@ -281,7 +281,7 @@ if (Index == 0) return nullptr; if (Index >= Sections.size() || !Sections[Index]) - fatal("Invalid section index"); + fatal("invalid section index"); InputSectionBase *S = Sections[Index]; if (S == InputSectionBase::Discarded) return S; @@ -397,7 +397,7 @@ if (Dyn.d_tag == DT_SONAME) { uintX_t Val = Dyn.getVal(); if (Val >= this->StringTable.size()) - fatal("Invalid DT_SONAME entry"); + fatal("invalid DT_SONAME entry"); SoName = StringRef(this->StringTable.data() + Val); return; } @@ -433,51 +433,7 @@ case GlobalValue::ProtectedVisibility: return STV_PROTECTED; } - llvm_unreachable("Unknown visibility"); -} - -SymbolBody * -BitcodeFile::createSymbolBody(const DenseSet &KeptComdats, - const IRObjectFile &Obj, - const BasicSymbolRef &Sym) { - const GlobalValue *GV = Obj.getSymbolGV(Sym.getRawDataRefImpl()); - assert(GV); - if (const Comdat *C = GV->getComdat()) - if (!KeptComdats.count(C)) - return nullptr; - - uint8_t Visibility = getGvVisibility(GV); - - SmallString<64> Name; - raw_svector_ostream OS(Name); - Sym.printName(OS); - StringRef NameRef = Saver.save(StringRef(Name)); - - const Module &M = Obj.getModule(); - SymbolBody *Body; - uint32_t Flags = Sym.getFlags(); - bool IsWeak = Flags & BasicSymbolRef::SF_Weak; - if (Flags & BasicSymbolRef::SF_Undefined) { - Body = new (Alloc) Undefined(NameRef, IsWeak, Visibility, false); - } else if (Flags & BasicSymbolRef::SF_Common) { - const DataLayout &DL = M.getDataLayout(); - uint64_t Size = DL.getTypeAllocSize(GV->getValueType()); - Body = new (Alloc) - DefinedCommon(NameRef, Size, GV->getAlignment(), IsWeak, Visibility); - } else { - Body = new (Alloc) DefinedBitcode(NameRef, IsWeak, Visibility); - } - Body->IsTls = GV->isThreadLocal(); - return Body; -} - -bool BitcodeFile::shouldSkip(const BasicSymbolRef &Sym) { - uint32_t Flags = Sym.getFlags(); - if (!(Flags & BasicSymbolRef::SF_Global)) - return true; - if (Flags & BasicSymbolRef::SF_FormatSpecific) - return true; - return false; + llvm_unreachable("unknown visibility"); } void BitcodeFile::parse(DenseSet &ComdatGroups) { @@ -492,9 +448,43 @@ KeptComdats.insert(&P.second); } - for (const BasicSymbolRef &Sym : Obj->symbols()) - if (!shouldSkip(Sym)) - SymbolBodies.push_back(createSymbolBody(KeptComdats, *Obj, Sym)); + for (const BasicSymbolRef &Sym : Obj->symbols()) { + const GlobalValue *GV = Obj->getSymbolGV(Sym.getRawDataRefImpl()); + assert(GV); + uint32_t Flags = Sym.getFlags(); + if (const Comdat *C = GV->getComdat()) + if (!KeptComdats.count(C)) + continue; + if (!(Flags & BasicSymbolRef::SF_Global)) + continue; + if (GV->hasAppendingLinkage()) { + ExtraKeeps.push_back(GV->getName().copy(Alloc)); + continue; + } + if (Flags & BasicSymbolRef::SF_FormatSpecific) + continue; + uint8_t Visibility = getGvVisibility(GV); + + SmallString<64> Name; + raw_svector_ostream OS(Name); + Sym.printName(OS); + StringRef NameRef = Saver.save(StringRef(Name)); + + SymbolBody *Body; + bool IsWeak = Flags & BasicSymbolRef::SF_Weak; + if (Flags & BasicSymbolRef::SF_Undefined) { + Body = new (Alloc) Undefined(NameRef, IsWeak, Visibility, false); + } else if (Flags & BasicSymbolRef::SF_Common) { + const DataLayout &DL = M.getDataLayout(); + uint64_t Size = DL.getTypeAllocSize(GV->getValueType()); + Body = new (Alloc) + DefinedCommon(NameRef, Size, GV->getAlignment(), IsWeak, Visibility); + } else { + Body = new (Alloc) DefinedBitcode(NameRef, IsWeak, Visibility); + } + Body->IsTls = GV->isThreadLocal(); + SymbolBodies.push_back(Body); + } } template @@ -516,7 +506,7 @@ static std::unique_ptr createELFFile(MemoryBufferRef MB) { std::pair Type = getElfArchType(MB.getBuffer()); if (Type.second != ELF::ELFDATA2LSB && Type.second != ELF::ELFDATA2MSB) - fatal("Invalid data encoding: " + MB.getBufferIdentifier()); + fatal("invalid data encoding: " + MB.getBufferIdentifier()); if (Type.first == ELF::ELFCLASS32) { if (Type.second == ELF::ELFDATA2LSB) @@ -528,7 +518,7 @@ return createELFFileAux>(MB); return createELFFileAux>(MB); } - fatal("Invalid file class: " + MB.getBufferIdentifier()); + fatal("invalid file class: " + MB.getBufferIdentifier()); } std::unique_ptr elf::createObjectFile(MemoryBufferRef MB, Index: lld/trunk/ELF/InputSection.cpp =================================================================== --- lld/trunk/ELF/InputSection.cpp +++ lld/trunk/ELF/InputSection.cpp @@ -25,7 +25,7 @@ using namespace lld::elf; template -InputSectionBase::InputSectionBase(elf::ObjectFile *File, +InputSectionBase::InputSectionBase(ObjectFile *File, const Elf_Shdr *Header, Kind SectionKind) : Header(Header), File(File), SectionKind(SectionKind), Repl(this) { @@ -62,7 +62,7 @@ // so it should never be copied to output. llvm_unreachable("MIPS .reginfo reached writeTo()."); } - llvm_unreachable("Invalid section kind"); + llvm_unreachable("invalid section kind"); } template @@ -93,8 +93,7 @@ } template -InputSection::InputSection(elf::ObjectFile *F, - const Elf_Shdr *Header) +InputSection::InputSection(ObjectFile *F, const Elf_Shdr *Header) : InputSectionBase(F, Header, Base::Regular) {} template @@ -332,12 +331,12 @@ template SplitInputSection::SplitInputSection( - elf::ObjectFile *File, const Elf_Shdr *Header, + ObjectFile *File, const Elf_Shdr *Header, typename InputSectionBase::Kind SectionKind) : InputSectionBase(File, Header, SectionKind) {} template -EHInputSection::EHInputSection(elf::ObjectFile *F, +EHInputSection::EHInputSection(ObjectFile *F, const Elf_Shdr *Header) : SplitInputSection(F, Header, InputSectionBase::EHFrame) { // Mark .eh_frame sections as live by default because there are @@ -387,7 +386,7 @@ StringRef Data((const char *)D.data(), D.size()); uintX_t Size = Data.size(); if (Offset >= Size) - fatal("Entry is past the end of the section"); + fatal("entry is past the end of the section"); // Find the element this offset points to. auto I = std::upper_bound( @@ -425,13 +424,13 @@ } template -MipsReginfoInputSection::MipsReginfoInputSection(elf::ObjectFile *F, +MipsReginfoInputSection::MipsReginfoInputSection(ObjectFile *F, const Elf_Shdr *Hdr) : InputSectionBase(F, Hdr, InputSectionBase::MipsReginfo) { // Initialize this->Reginfo. ArrayRef D = this->getSectionData(); if (D.size() != sizeof(Elf_Mips_RegInfo)) - fatal("Invalid size of .reginfo section"); + fatal("invalid size of .reginfo section"); Reginfo = reinterpret_cast *>(D.data()); } Index: lld/trunk/ELF/LinkerScript.cpp =================================================================== --- lld/trunk/ELF/LinkerScript.cpp +++ lld/trunk/ELF/LinkerScript.cpp @@ -296,7 +296,7 @@ } else { std::string Path = findFromSearchPaths(S); if (Path.empty()) - setError("Unable to find " + S); + setError("unable to find " + S); else Driver->addFile(Saver.save(Path)); } @@ -419,7 +419,7 @@ S = S.substr(2); uint8_t H; if (B.getAsInteger(16, H)) { - setError("Not a HEX value: " + B); + setError("not a HEX value: " + B); return {}; } Hex.push_back(H); @@ -442,13 +442,13 @@ readSectionPatterns(OutSec, true); expect(")"); } else { - setError("Unknown command " + Tok); + setError("unknown command " + Tok); } } StringRef Tok = peek(); if (Tok.startswith("=")) { if (!Tok.startswith("=0x")) { - setError("Filler should be a HEX value"); + setError("filler should be a HEX value"); return; } Tok = Tok.substr(3); Index: lld/trunk/ELF/OutputSections.cpp =================================================================== --- lld/trunk/ELF/OutputSections.cpp +++ lld/trunk/ELF/OutputSections.cpp @@ -256,7 +256,7 @@ case Off_GotPlt: return Sym->getGotPltVA(); } - llvm_unreachable("Invalid offset kind"); + llvm_unreachable("invalid offset kind"); } template void RelocationSection::writeTo(uint8_t *Buf) { @@ -1150,7 +1150,7 @@ uint32_t CieOffset = Offset + 4 - ID; auto I = OffsetToIndex.find(CieOffset); if (I == OffsetToIndex.end()) - fatal("Invalid CIE reference"); + fatal("invalid CIE reference"); Cies[I->second].Fdes.push_back(EHRegion(S, Index)); Out::EhFrameHdr->reserveFde(); this->Header.sh_size += alignTo(Length, sizeof(uintX_t)); @@ -1266,7 +1266,7 @@ while (!Data.empty()) { size_t End = findNull(Data, EntSize); if (End == StringRef::npos) - fatal("String is not null terminated"); + fatal("string is not null terminated"); StringRef Entry = Data.substr(0, End + EntSize); uintX_t OutputOffset = Builder.add(Entry); if (shouldTailMerge()) @@ -1512,7 +1512,7 @@ case SymbolBody::LazyKind: break; case SymbolBody::DefinedBitcodeKind: - llvm_unreachable("Should have been replaced"); + llvm_unreachable("should have been replaced"); } return nullptr; } Index: lld/trunk/ELF/SymbolTable.cpp =================================================================== --- lld/trunk/ELF/SymbolTable.cpp +++ lld/trunk/ELF/SymbolTable.cpp @@ -84,8 +84,7 @@ BitcodeFiles.emplace_back(cast(File.release())); F->parse(ComdatGroups); for (SymbolBody *B : F->getSymbols()) - if (B) - resolve(B); + resolve(B); return; } @@ -119,7 +118,7 @@ std::string ErrMsg; const Target *TheTarget = TargetRegistry::lookupTarget(TripleStr, ErrMsg); if (!TheTarget) - fatal("Target not found: " + ErrMsg); + fatal("target not found: " + ErrMsg); TargetOptions Options; Reloc::Model R = Config->Shared ? Reloc::PIC_ : Reloc::Static; @@ -130,7 +129,7 @@ legacy::PassManager CodeGenPasses; if (TM->addPassesToEmitFile(CodeGenPasses, OS, TargetMachine::CGFT_ObjectFile)) - fatal("Failed to setup codegen"); + fatal("failed to setup codegen"); CodeGenPasses.run(M); LtoBuffer = MemoryBuffer::getMemBuffer(OwningLTOData, "", false); if (Config->SaveTemps) @@ -140,33 +139,28 @@ static void addBitcodeFile(IRMover &Mover, BitcodeFile &F, LLVMContext &Context) { - - std::unique_ptr Obj = - check(IRObjectFile::create(F.MB, Context)); + std::unique_ptr Buffer = + MemoryBuffer::getMemBuffer(F.MB, false); + std::unique_ptr M = + check(getLazyBitcodeModule(std::move(Buffer), Context, + /*ShouldLazyLoadMetadata*/ false)); std::vector Keep; - unsigned BodyIndex = 0; - ArrayRef Bodies = F.getSymbols(); - - for (const BasicSymbolRef &Sym : Obj->symbols()) { - GlobalValue *GV = Obj->getSymbolGV(Sym.getRawDataRefImpl()); - assert(GV); - if (GV->hasAppendingLinkage()) { - Keep.push_back(GV); - continue; - } - if (BitcodeFile::shouldSkip(Sym)) - continue; - SymbolBody *B = Bodies[BodyIndex++]; - if (!B || &B->repl() != B) + for (SymbolBody *B : F.getSymbols()) { + if (&B->repl() != B) continue; auto *DB = dyn_cast(B); if (!DB) continue; + GlobalValue *GV = M->getNamedValue(B->getName()); + assert(GV); Keep.push_back(GV); } - - Mover.move(Obj->takeModule(), Keep, - [](GlobalValue &, IRMover::ValueAdder) {}); + for (StringRef S : F.getExtraKeeps()) { + GlobalValue *GV = M->getNamedValue(S); + assert(GV); + Keep.push_back(GV); + } + Mover.move(std::move(M), Keep, [](GlobalValue &, IRMover::ValueAdder) {}); } // This is for use when debugging LTO. Index: lld/trunk/ELF/Symbols.cpp =================================================================== --- lld/trunk/ELF/Symbols.cpp +++ lld/trunk/ELF/Symbols.cpp @@ -73,12 +73,12 @@ case SymbolBody::UndefinedKind: return 0; case SymbolBody::LazyKind: - assert(Body.isUsedInRegularObj() && "Lazy symbol reached writer"); + assert(Body.isUsedInRegularObj() && "lazy symbol reached writer"); return 0; case SymbolBody::DefinedBitcodeKind: - llvm_unreachable("Should have been replaced"); + llvm_unreachable("should have been replaced"); } - llvm_unreachable("Invalid symbol kind"); + llvm_unreachable("invalid symbol kind"); } template Index: lld/trunk/ELF/Target.cpp =================================================================== --- lld/trunk/ELF/Target.cpp +++ lld/trunk/ELF/Target.cpp @@ -46,28 +46,28 @@ if (isInt(V)) return; StringRef S = getELFRelocationTypeName(Config->EMachine, Type); - error("Relocation " + S + " out of range"); + error("relocation " + S + " out of range"); } template static void checkUInt(uint64_t V, uint32_t Type) { if (isUInt(V)) return; StringRef S = getELFRelocationTypeName(Config->EMachine, Type); - error("Relocation " + S + " out of range"); + error("relocation " + S + " out of range"); } template static void checkIntUInt(uint64_t V, uint32_t Type) { if (isInt(V) || isUInt(V)) return; StringRef S = getELFRelocationTypeName(Config->EMachine, Type); - error("Relocation " + S + " out of range"); + error("relocation " + S + " out of range"); } template static void checkAlignment(uint64_t V, uint32_t Type) { if ((V & (N - 1)) == 0) return; StringRef S = getELFRelocationTypeName(Config->EMachine, Type); - error("Improper alignment for relocation " + S); + error("improper alignment for relocation " + S); } template bool isGnuIFunc(const SymbolBody &S) { @@ -246,7 +246,7 @@ case ELF32BEKind: return new MipsTargetInfo(); default: - fatal("Unsupported MIPS target"); + fatal("unsupported MIPS target"); } case EM_PPC: return new PPCTargetInfo(); @@ -255,7 +255,7 @@ case EM_X86_64: return new X86_64TargetInfo(); } - fatal("Unknown target machine"); + fatal("unknown target machine"); } TargetInfo::~TargetInfo() {} @@ -566,7 +566,7 @@ relocateOne(Loc, BufEnd, R_386_TLS_LE, P, SA); return 0; } - llvm_unreachable("Unknown TLS optimization"); + llvm_unreachable("unknown TLS optimization"); } // "Ulrich Drepper, ELF Handling For Thread-Local Storage" (5.1 @@ -914,7 +914,7 @@ // The next relocation should be against __tls_get_addr, so skip it return 1; } - llvm_unreachable("Unknown TLS optimization"); + llvm_unreachable("unknown TLS optimization"); } void X86_64TargetInfo::relocateOne(uint8_t *Loc, uint8_t *BufEnd, uint32_t Type, @@ -1470,7 +1470,7 @@ case R_AARCH64_TLSDESC_ADD_LO12_NC: case R_AARCH64_TLSDESC_CALL: { if (canBePreempted(S)) - fatal("Unsupported TLS optimization"); + fatal("unsupported TLS optimization"); uint64_t X = S.getVA(); relocateTlsGdToLe(Type, Loc, BufEnd, P, X); return 0; @@ -1480,7 +1480,7 @@ relocateTlsIeToLe(Type, Loc, BufEnd, P, S.getVA()); return 0; } - llvm_unreachable("Unknown TLS optimization"); + llvm_unreachable("unknown TLS optimization"); } // Global-Dynamic relocations can be relaxed to Local-Exec if both binary is @@ -1519,7 +1519,7 @@ NewInst = 0xf2800000 | ((X & 0xffff) << 5); break; default: - llvm_unreachable("Unsupported Relocation for TLS GD to LE relax"); + llvm_unreachable("unsupported Relocation for TLS GD to LE relax"); } write32le(Loc, NewInst); } @@ -1544,7 +1544,7 @@ unsigned RegNo = (Inst & 0x1f); NewInst = (0xf2800000 | RegNo) | ((X & 0xffff) << 5); } else { - llvm_unreachable("Invalid Relocation for TLS IE to LE Relax"); + llvm_unreachable("invalid Relocation for TLS IE to LE Relax"); } write32le(Loc, NewInst); } Index: lld/trunk/test/ELF/basic.s =================================================================== --- lld/trunk/test/ELF/basic.s +++ lld/trunk/test/ELF/basic.s @@ -213,4 +213,4 @@ # DUP: duplicate symbol: _start in {{.*}} and {{.*}} # RUN: not ld.lld %t -o %t -m wrong_emul 2>&1 | FileCheck --check-prefix=UNKNOWN_EMUL %s -# UNKNOWN_EMUL: Unknown emulation: wrong_emul +# UNKNOWN_EMUL: unknown emulation: wrong_emul Index: lld/trunk/test/ELF/driver.test =================================================================== --- lld/trunk/test/ELF/driver.test +++ lld/trunk/test/ELF/driver.test @@ -6,9 +6,9 @@ # UNKNOWN: warning: unknown argument: --unknown1 # UNKNOWN: warning: unknown argument: --unknown2 # UNKNOWN: unknown argument(s) found -# UNKNOWN: Unknown emulation: foo +# UNKNOWN: unknown emulation: foo # UNKNOWN: cannot open /no/such/file -# UNKNOWN: Unable to find library -lnosuchlib +# UNKNOWN: unable to find library -lnosuchlib # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t # RUN: not ld.lld %t -o /no/such/file 2>&1 | FileCheck -check-prefix=MISSING %s @@ -23,7 +23,7 @@ ## Attempt to link DSO with -r # RUN: ld.lld -shared %t -o %t.so # RUN: not ld.lld -r %t.so %t -o %tfail 2>&1 | FileCheck -check-prefix=ERR %s -# ERR: Attempted static link of dynamic object +# ERR: attempted static link of dynamic object ## Attempt to use -r and -shared together # RUN: not ld.lld -r -shared %t -o %tfail 2>&1 | FileCheck -check-prefix=ERR2 %s Index: lld/trunk/test/ELF/invalid-cie-reference.s =================================================================== --- lld/trunk/test/ELF/invalid-cie-reference.s +++ lld/trunk/test/ELF/invalid-cie-reference.s @@ -29,4 +29,4 @@ .long 0x0 .long 0x0 -// CHECK: Invalid CIE reference +// CHECK: invalid CIE reference Index: lld/trunk/test/ELF/invalid-elf.test =================================================================== --- lld/trunk/test/ELF/invalid-elf.test +++ lld/trunk/test/ELF/invalid-elf.test @@ -2,26 +2,27 @@ # RUN: not ld.lld %t %p/Inputs/invalid-data-encoding.a -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-DATA-ENC %s -# INVALID-DATA-ENC: Invalid data encoding: test.o +# INVALID-DATA-ENC: invalid data encoding: test.o # RUN: not ld.lld %t %p/Inputs/invalid-file-class.a -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-FILE-CLASS %s -# INVALID-FILE-CLASS: Invalid file class: test.o +# INVALID-FILE-CLASS: invalid file class: test.o # RUN: not ld.lld %p/Inputs/invalid-symtab-sh_info.elf -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-SYMTAB-SHINFO %s -# INVALID-SYMTAB-SHINFO: Invalid sh_info in symbol table +# INVALID-SYMTAB-SHINFO: invalid sh_info in symbol table # RUN: not ld.lld %p/Inputs/invalid-binding.elf -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-BINDING %s # INVALID-BINDING: unexpected binding # RUN: not ld.lld %p/Inputs/invalid-section-index.elf -o %t2 2>&1 | \ -# RUN: FileCheck --check-prefix=INVALID-SECTION-INDEX %s -# INVALID-SECTION-INDEX: Invalid section index +# RUN: FileCheck --check-prefix=INVALID-SECTION-INDEX-LLD %s +# INVALID-SECTION-INDEX-LLD: invalid section index # RUN: not ld.lld %p/Inputs/invalid-shstrndx.so -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-SECTION-INDEX %s +# INVALID-SECTION-INDEX: Invalid section index # RUN: not ld.lld %p/Inputs/invalid-shentsize-zero.elf -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-SHENTSIZE-ZERO %s @@ -29,6 +30,6 @@ # RUN: not ld.lld %p/Inputs/invalid-multiple-eh-relocs.elf -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-EH-RELOCS %s -# INVALID-EH-RELOCS: Multiple relocation sections to .eh_frame are not supported +# INVALID-EH-RELOCS: multiple relocation sections to .eh_frame are not supported .long foo Index: lld/trunk/test/ELF/invalid-relocations.test =================================================================== --- lld/trunk/test/ELF/invalid-relocations.test +++ lld/trunk/test/ELF/invalid-relocations.test @@ -19,4 +19,4 @@ Global: - Name: lulz -# CHECK: Invalid relocated section index +# CHECK: invalid relocated section index Index: lld/trunk/test/ELF/libsearch.s =================================================================== --- lld/trunk/test/ELF/libsearch.s +++ lld/trunk/test/ELF/libsearch.s @@ -23,7 +23,7 @@ // Should fail if cannot find specified library (without -L switch) // RUN: not ld.lld -o %t3 %t.o -lls 2>&1 \ // RUN: | FileCheck --check-prefix=NOLIB %s -// NOLIB: Unable to find library -lls +// NOLIB: unable to find library -lls // Should use explicitly specified static library // Also ensure that we accept -L @@ -55,7 +55,7 @@ // RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=STATIC %s // RUN: not ld.lld -o %t3 %t.o -L%t.dir -Bstatic -lls2 2>&1 \ // RUN: | FileCheck --check-prefix=NOLIB2 %s -// NOLIB2: Unable to find library -lls2 +// NOLIB2: unable to find library -lls2 // -Bdynamic should restore default behaviour // RUN: ld.lld -o %t3 %t.o -L%t.dir -Bstatic -Bdynamic -lls Index: lld/trunk/test/ELF/linkerscript-sections-padding.s =================================================================== --- lld/trunk/test/ELF/linkerscript-sections-padding.s +++ lld/trunk/test/ELF/linkerscript-sections-padding.s @@ -23,13 +23,13 @@ # RUN: echo "SECTIONS { .mysec : { *(.mysec*) } =99 }" > %t.script # RUN: not ld.lld -o %t.out --script %t.script %t 2>&1 \ # RUN: | FileCheck --check-prefix=ERR %s -# ERR: Filler should be a HEX value +# ERR: filler should be a HEX value ## Filler should be a hex value (2): # RUN: echo "SECTIONS { .mysec : { *(.mysec*) } =0x99XX }" > %t.script # RUN: not ld.lld -o %t.out --script %t.script %t 2>&1 \ # RUN: | FileCheck --check-prefix=ERR2 %s -# ERR2: Not a HEX value: XX +# ERR2: not a HEX value: XX .section .mysec.1,"a" .align 16 Index: lld/trunk/test/ELF/merge-string-error.s =================================================================== --- lld/trunk/test/ELF/merge-string-error.s +++ lld/trunk/test/ELF/merge-string-error.s @@ -8,4 +8,4 @@ .text .long .rodata.str1.1 + 4 -// CHECK: Entry is past the end of the section +// CHECK: entry is past the end of the section Index: lld/trunk/test/ELF/merge-string-no-null.s =================================================================== --- lld/trunk/test/ELF/merge-string-no-null.s +++ lld/trunk/test/ELF/merge-string-no-null.s @@ -5,4 +5,4 @@ .section .rodata.str1.1,"aMS",@progbits,1 .ascii "abc" -// CHECK: String is not null terminated +// CHECK: string is not null terminated Index: lld/trunk/test/ELF/mips-gnu-hash.s =================================================================== --- lld/trunk/test/ELF/mips-gnu-hash.s +++ lld/trunk/test/ELF/mips-gnu-hash.s @@ -6,7 +6,7 @@ # RUN: llvm-mc -filetype=obj -triple=mipsel-unknown-linux %s -o %t-el.o # RUN: not ld.lld -shared -hash-style=gnu %t-el.o -o %t-el.so 2>&1 | FileCheck %s -# CHECK: The .gnu.hash section is not compatible with the MIPS target. +# CHECK: the .gnu.hash section is not compatible with the MIPS target. # REQUIRES: mips Index: lld/trunk/test/ELF/ppc64-addr16-error.s =================================================================== --- lld/trunk/test/ELF/ppc64-addr16-error.s +++ lld/trunk/test/ELF/ppc64-addr16-error.s @@ -5,4 +5,4 @@ .short sym+65539 -// CHECK: Relocation R_PPC64_ADDR16 out of range +// CHECK: relocation R_PPC64_ADDR16 out of range Index: lld/trunk/test/ELF/relocation-in-merge.s =================================================================== --- lld/trunk/test/ELF/relocation-in-merge.s +++ lld/trunk/test/ELF/relocation-in-merge.s @@ -1,7 +1,7 @@ // REQUIRES: x86 // RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux // RUN: not ld.lld %t.o -o %t 2>&1 | FileCheck %s -// CHECK: Relocations pointing to SHF_MERGE are not supported +// CHECK: relocations pointing to SHF_MERGE are not supported .section .foo,"aM",@progbits,4 .long bar Index: lld/trunk/test/ELF/relocation-past-merge-end.s =================================================================== --- lld/trunk/test/ELF/relocation-past-merge-end.s +++ lld/trunk/test/ELF/relocation-past-merge-end.s @@ -1,7 +1,7 @@ // REQUIRES: x86 // RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux // RUN: not ld.lld %t.o -o %t.so -shared 2>&1 | FileCheck %s -// CHECK: Entry is past the end of the section +// CHECK: entry is past the end of the section .long .foo + 1 .section .foo,"aM",@progbits,4 Index: lld/trunk/test/ELF/splitstacks.s =================================================================== --- lld/trunk/test/ELF/splitstacks.s +++ lld/trunk/test/ELF/splitstacks.s @@ -2,7 +2,7 @@ # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1.o # RUN: not ld.lld %t1.o -o %t 2>&1 | FileCheck %s -# CHECK: Objects using splitstacks are not supported +# CHECK: objects using splitstacks are not supported .globl _start _start: Index: lld/trunk/test/ELF/sysroot.s =================================================================== --- lld/trunk/test/ELF/sysroot.s +++ lld/trunk/test/ELF/sysroot.s @@ -14,7 +14,7 @@ // We need to be sure that there is no suitable library in the /lib directory // RUN: not ld.lld -o %t/r %t/m.o -L/lib -l:libls.a 2>&1 \ // RUN: | FileCheck --check-prefix=NOLIB %s -// NOLIB: Unable to find library -l:libls.a +// NOLIB: unable to find library -l:libls.a // Should just remove the '=' symbol if --sysroot is not specified. // Case 1: relative path Index: lld/trunk/test/ELF/writable-merge.s =================================================================== --- lld/trunk/test/ELF/writable-merge.s +++ lld/trunk/test/ELF/writable-merge.s @@ -1,6 +1,6 @@ // REQUIRES: x86 // RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux // RUN: not ld.lld %t.o -o %t 2>&1 | FileCheck %s -// CHECK: Writable SHF_MERGE sections are not supported +// CHECK: writable SHF_MERGE sections are not supported .section .foo,"awM",@progbits,4