X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FObject%2FArchive.h;h=e5d59d832e31b13cac567a2f0bf611a2fb1c4915;hb=00552e3875ee5f382db6c98286a241a7d0efe1b8;hp=e461564ace8e092b9a5edd9fed9d9b1af1555ecd;hpb=6e9f427cb2916cebfac98fc8e0da1dab7f095556;p=oota-llvm.git diff --git a/include/llvm/Object/Archive.h b/include/llvm/Object/Archive.h index e461564ace8..e5d59d832e3 100644 --- a/include/llvm/Object/Archive.h +++ b/include/llvm/Object/Archive.h @@ -74,6 +74,7 @@ public: return Data.begin() < other.Data.begin(); } + const Archive *getParent() const { return Parent; } Child getNext() const; ErrorOr getName() const; @@ -94,9 +95,7 @@ public: /// \return the size in the archive header for this member. uint64_t getRawSize() const; - StringRef getBuffer() const { - return StringRef(Data.data() + StartOfFile, getSize()); - } + ErrorOr getBuffer() const; uint64_t getChildOffset() const; ErrorOr getMemoryBufferRef() const; @@ -208,7 +207,11 @@ public: bool hasSymbolTable() const; child_iterator getSymbolTableChild() const { return SymbolTable; } - StringRef getSymbolTable() const { return SymbolTable->getBuffer(); } + StringRef getSymbolTable() const { + // We know that the symbol table is not an external file, + // so we just assert there is no error. + return *SymbolTable->getBuffer(); + } uint32_t getNumberOfSymbols() const; private: @@ -217,6 +220,7 @@ private: child_iterator FirstRegular; unsigned Format : 2; unsigned IsThin : 1; + mutable std::vector> ThinBuffers; }; }