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 { |