}
Archive::Archive(MemoryBufferRef Source, std::error_code &ec)
- : Binary(Binary::ID_Archive, Source), SymbolTable(child_end()),
- FirstRegular(child_end()) {
+ : Binary(Binary::ID_Archive, Source), FirstRegular(child_end()) {
StringRef Buffer = Data.getBuffer();
// Check for sufficient magic.
if (Buffer.startswith(ThinMagic)) {
if (Name == "__.SYMDEF") {
Format = K_BSD;
- SymbolTable = i;
+ // We know that the symbol table is not an external file, so we just assert
+ // there is no error.
+ SymbolTable = *i->getBuffer();
++i;
FirstRegular = i;
ec = std::error_code();
return;
Name = NameOrErr.get();
if (Name == "__.SYMDEF SORTED" || Name == "__.SYMDEF") {
- SymbolTable = i;
+ // We know that the symbol table is not an external file, so we just
+ // assert there is no error.
+ SymbolTable = *i->getBuffer();
++i;
}
FirstRegular = i;
bool has64SymTable = false;
if (Name == "/" || Name == "/SYM64/") {
- SymbolTable = i;
+ // We know that the symbol table is not an external file, so we just assert
+ // there is no error.
+ SymbolTable = *i->getBuffer();
if (Name == "/SYM64/")
has64SymTable = true;
}
Format = K_COFF;
- SymbolTable = i;
+ // We know that the symbol table is not an external file, so we just assert
+ // there is no error.
+ SymbolTable = *i->getBuffer();
++i;
if (i == e) {
return child_end();
}
-bool Archive::hasSymbolTable() const {
- return SymbolTable != child_end();
-}
+bool Archive::hasSymbolTable() const { return !SymbolTable.empty(); }