[PATCH] D128667: [WIP] Add Zstd ELF support
Fangrui Song via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 27 10:41:55 PDT 2022
MaskRay added a comment.
The lld/ change should be separate. And it needs tests. We should have several tests like mixed zlib and zstd input. OutputSections should not have a new member. I can handle the lld/ELF part.
> Context not available.
See https://llvm.org/docs/Phabricator.html#requesting-a-review-via-the-web-interface "To make reviews easier, please always include as much context as possible with your diff!"
================
Comment at: llvm/include/llvm/BinaryFormat/ELF.h:1772
ELFCOMPRESS_ZLIB = 1, // ZLIB/DEFLATE algorithm.
+ ELFCOMPRESS_ZSTD = 2, // ZLIB/DEFLATE algorithm.
ELFCOMPRESS_LOOS = 0x60000000, // Start of OS-specific.
----------------
Zstandard algorithm
================
Comment at: llvm/lib/MC/ELFObjectWriter.cpp:149
SmallVectorImpl<char> &CompressedContents,
- bool ZLibStyle, unsigned Alignment);
+ bool ZLibStyle, bool ZstdStyle, unsigned Alignment);
----------------
Having two variables is ugly. Just pass `MAI->compressDebugSections()` as an argument.
================
Comment at: llvm/lib/MC/ELFObjectWriter.cpp:884
+ bool ZstdStyle = MAI->compressDebugSections() == DebugCompressionType::Zstd;
+ if(ZstdStyle){
+ compression::zstd::compress(StringRef(UncompressedData.data(), UncompressedData.size()),
----------------
`if (ZstdStyle)`
================
Comment at: llvm/lib/ObjCopy/ELF/ELFObject.cpp:565
+ CompressedData);
+ }else{
+ compression::zlib::compress(
----------------
clang-format
================
Comment at: llvm/lib/Object/Decompressor.cpp:24
+ DebugCompressionType CType = DebugCompressionType::Z;
+ if(isGnuStyle(Name)){
+ CType = DebugCompressionType::GNU;
----------------
clang-format
Please check the prevailing style first.
================
Comment at: llvm/tools/llvm-objcopy/ObjcopyOptions.cpp:744
}
- if (!compression::elf::isAvailable())
- return createStringError(
- errc::invalid_argument,
- "LLVM was not compiled with LLVM_ENABLE_ZLIB: can not compress");
+ if(Config.CompressionType == DebugCompressionType::Zstd) {
+ if (!compression::zstd::isAvailable())
----------------
clang-format
================
Comment at: llvm/tools/llvm-objcopy/ObjcopyOptions.cpp:1014
"LLVM was not compiled with LLVM_ENABLE_ZLIB: cannot decompress");
+}else{
+ if (Config.DecompressDebugSections && !compression::zstd::isAvailable())
----------------
clang-format
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128667/new/
https://reviews.llvm.org/D128667
More information about the cfe-commits
mailing list