diff options
-rw-r--r-- | lld/ELF/InputSection.cpp | 8 | ||||
-rw-r--r-- | lld/ELF/InputSection.h | 3 |
2 files changed, 4 insertions, 7 deletions
diff --git a/lld/ELF/InputSection.cpp b/lld/ELF/InputSection.cpp index 83fb3aa601b..9823f4adfd1 100644 --- a/lld/ELF/InputSection.cpp +++ b/lld/ELF/InputSection.cpp @@ -13,6 +13,7 @@ #include "Error.h" #include "InputFiles.h" #include "LinkerScript.h" +#include "Memory.h" #include "OutputSections.h" #include "SyntheticSections.h" #include "Target.h" @@ -167,11 +168,10 @@ template <class ELFT> void InputSectionBase<ELFT>::uncompress() { std::tie(Buf, Size) = getRawCompressedData(Data); // Uncompress Buf. - UncompressedData.reset(new uint8_t[Size]); - if (zlib::uncompress(toStringRef(Buf), (char *)UncompressedData.get(), - Size) != zlib::StatusOK) + char *OutputBuf = BAlloc.Allocate<char>(Size); + if (zlib::uncompress(toStringRef(Buf), OutputBuf, Size) != zlib::StatusOK) fatal(getName(this) + ": error while uncompressing section"); - Data = ArrayRef<uint8_t>(UncompressedData.get(), Size); + Data = ArrayRef<uint8_t>((uint8_t *)OutputBuf, Size); } template <class ELFT> diff --git a/lld/ELF/InputSection.h b/lld/ELF/InputSection.h index d39ee4c6189..0d16bd50d68 100644 --- a/lld/ELF/InputSection.h +++ b/lld/ELF/InputSection.h @@ -66,9 +66,6 @@ public: return llvm::makeArrayRef<T>((const T *)Data.data(), S / sizeof(T)); } - // If a section is compressed, this has the uncompressed section data. - std::unique_ptr<uint8_t[]> UncompressedData; - std::vector<Relocation> Relocations; }; |