diff options
Diffstat (limited to 'lld/COFF/InputFiles.cpp')
-rw-r--r-- | lld/COFF/InputFiles.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp index faec3ba160a5..d884201ba31b 100644 --- a/lld/COFF/InputFiles.cpp +++ b/lld/COFF/InputFiles.cpp @@ -13,6 +13,7 @@ #include "Driver.h" #include "SymbolTable.h" #include "Symbols.h" +#include "lld/Common/DWARF.h" #include "lld/Common/ErrorHandler.h" #include "lld/Common/Memory.h" #include "llvm-c/lto.h" @@ -24,6 +25,7 @@ #include "llvm/DebugInfo/CodeView/SymbolDeserializer.h" #include "llvm/DebugInfo/CodeView/SymbolRecord.h" #include "llvm/DebugInfo/CodeView/TypeDeserializer.h" +#include "llvm/LTO/LTO.h" #include "llvm/Object/Binary.h" #include "llvm/Object/COFF.h" #include "llvm/Support/Casting.h" @@ -122,10 +124,7 @@ void ArchiveFile::addMember(const Archive::Symbol &sym) { std::vector<MemoryBufferRef> getArchiveMembers(Archive *file) { std::vector<MemoryBufferRef> v; Error err = Error::success(); - for (const ErrorOr<Archive::Child> &cOrErr : file->children(err)) { - Archive::Child c = - CHECK(cOrErr, - file->getFileName() + ": could not get the child of the archive"); + for (const Archive::Child &c : file->children(err)) { MemoryBufferRef mbref = CHECK(c.getMemoryBufferRef(), file->getFileName() + @@ -765,7 +764,8 @@ void ObjFile::initializeDependencies() { if (firstType == types.end()) return; - debugTypes.emplace(types); + // Remember the .debug$T or .debug$P section. + debugTypes = data; if (isPCH) { debugTypesObj = makePrecompSource(this); @@ -877,6 +877,10 @@ void ImportFile::parse() { } BitcodeFile::BitcodeFile(MemoryBufferRef mb, StringRef archiveName, + uint64_t offsetInArchive) + : BitcodeFile(mb, archiveName, offsetInArchive, {}) {} + +BitcodeFile::BitcodeFile(MemoryBufferRef mb, StringRef archiveName, uint64_t offsetInArchive, std::vector<Symbol *> &&symbols) : InputFile(BitcodeKind, mb), symbols(std::move(symbols)) { @@ -898,6 +902,8 @@ BitcodeFile::BitcodeFile(MemoryBufferRef mb, StringRef archiveName, obj = check(lto::InputFile::create(mbref)); } +BitcodeFile::~BitcodeFile() = default; + void BitcodeFile::parse() { std::vector<std::pair<Symbol *, bool>> comdat(obj->getComdatTable().size()); for (size_t i = 0; i != obj->getComdatTable().size(); ++i) |