diff options
Diffstat (limited to 'include/llvm/Object/Archive.h')
| -rw-r--r-- | include/llvm/Object/Archive.h | 11 | 
1 files changed, 8 insertions, 3 deletions
| diff --git a/include/llvm/Object/Archive.h b/include/llvm/Object/Archive.h index 8da6919a4655..597f0d48c118 100644 --- a/include/llvm/Object/Archive.h +++ b/include/llvm/Object/Archive.h @@ -94,9 +94,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<StringRef> getBuffer() const;      uint64_t getChildOffset() const;      ErrorOr<MemoryBufferRef> getMemoryBufferRef() const; @@ -183,6 +181,7 @@ public:    };    Kind kind() const { return (Kind)Format; } +  bool isThin() const { return IsThin; }    child_iterator child_begin(bool SkipInternal = true) const;    child_iterator child_end() const; @@ -207,6 +206,11 @@ public:    bool hasSymbolTable() const;    child_iterator getSymbolTableChild() const { return SymbolTable; } +  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: @@ -215,6 +219,7 @@ private:    child_iterator FirstRegular;    unsigned Format : 2;    unsigned IsThin : 1; +  mutable std::vector<std::unique_ptr<MemoryBuffer>> ThinBuffers;  };  } | 
