Index: include/llvm/Object/Decompressor.h =================================================================== --- include/llvm/Object/Decompressor.h +++ include/llvm/Object/Decompressor.h @@ -28,10 +28,6 @@ static Expected create(StringRef Name, StringRef Data, bool IsLE, bool Is64Bit); - /// @brief Resize the buffer and uncompress section data into it. - /// @param Out Destination buffer. - Error decompress(SmallString<32> &Out); - /// @brief Uncompress section data to raw buffer provided. /// @param Buffer Destination buffer. Error decompress(MutableArrayRef Buffer); Index: lib/DebugInfo/DWARF/DWARFContext.cpp =================================================================== --- lib/DebugInfo/DWARF/DWARFContext.cpp +++ lib/DebugInfo/DWARF/DWARFContext.cpp @@ -979,6 +979,7 @@ return Decompressor.takeError(); SmallString<32> Out; + Out.resize(Decompressor->getDecompressedSize()); if (auto Err = Decompressor->decompress(Out)) return Err; Index: lib/Object/Decompressor.cpp =================================================================== --- lib/Object/Decompressor.cpp +++ lib/Object/Decompressor.cpp @@ -88,11 +88,6 @@ return (Flags & ELF::SHF_COMPRESSED) || isGnuStyle(Name); } -Error Decompressor::decompress(SmallString<32> &Out) { - Out.resize(DecompressedSize); - return decompress({Out.data(), (size_t)DecompressedSize}); -} - Error Decompressor::decompress(MutableArrayRef Buffer) { size_t Size = Buffer.size(); return zlib::uncompress(SectionData, Buffer.data(), Size); Index: tools/llvm-dwp/llvm-dwp.cpp =================================================================== --- tools/llvm-dwp/llvm-dwp.cpp +++ tools/llvm-dwp/llvm-dwp.cpp @@ -373,6 +373,7 @@ return createError(Name, Dec.takeError()); UncompressedSections.emplace_back(); + UncompressedSections.back().resize(Dec->getDecompressedSize()); if (Error E = Dec->decompress(UncompressedSections.back())) return createError(Name, std::move(E));