diff options
Diffstat (limited to 'llvm/tools/llvm-objcopy/COFF/Object.h')
| -rw-r--r-- | llvm/tools/llvm-objcopy/COFF/Object.h | 26 | 
1 files changed, 25 insertions, 1 deletions
| diff --git a/llvm/tools/llvm-objcopy/COFF/Object.h b/llvm/tools/llvm-objcopy/COFF/Object.h index 0630f9c5ff8..afa272286ef 100644 --- a/llvm/tools/llvm-objcopy/COFF/Object.h +++ b/llvm/tools/llvm-objcopy/COFF/Object.h @@ -35,11 +35,35 @@ struct Relocation {  struct Section {    object::coff_section Header; -  ArrayRef<uint8_t> Contents;    std::vector<Relocation> Relocs;    StringRef Name;    ssize_t UniqueId;    size_t Index; + +  ArrayRef<uint8_t> getContents() const { +    if (!OwnedContents.empty()) +      return OwnedContents; +    return ContentsRef; +  } + +  void setContentsRef(ArrayRef<uint8_t> Data) { +    OwnedContents.clear(); +    ContentsRef = Data; +  } + +  void setOwnedContents(std::vector<uint8_t> &&Data) { +    ContentsRef = ArrayRef<uint8_t>(); +    OwnedContents = std::move(Data); +  } + +  void clearContents() { +    ContentsRef = ArrayRef<uint8_t>(); +    OwnedContents.clear(); +  } + +private: +  ArrayRef<uint8_t> ContentsRef; +  std::vector<uint8_t> OwnedContents;  };  struct Symbol { | 

