diff options
author | Fangrui Song <i@maskray.me> | 2022-09-07 23:53:40 -0700 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2022-09-07 23:53:40 -0700 |
commit | 5b19a1f8e88da9ec92b995bfee90043795c2c252 (patch) | |
tree | 9897ec102d95697b52ace6b4fa8f0ed166423d5f /llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | |
parent | 19dc3cff0f771bb8933136ef68e782553e920d04 (diff) | |
download | llvm-5b19a1f8e88da9ec92b995bfee90043795c2c252.zip llvm-5b19a1f8e88da9ec92b995bfee90043795c2c252.tar.gz llvm-5b19a1f8e88da9ec92b995bfee90043795c2c252.tar.bz2 |
[llvm-objcopy] Support --{,de}compress-debug-sections for zstd
Also, add ELFCOMPRESS_ZSTD (2) from the approved generic-abi proposal:
https://groups.google.com/g/generic-abi/c/satyPkuMisk
("Add new ch_type value: ELFCOMPRESS_ZSTD")
Link: https://discourse.llvm.org/t/rfc-zstandard-as-a-second-compression-method-to-llvm/63399
("[RFC] Zstandard as a second compression method to LLVM")
Reviewed By: jhenderson, dblaikie
Differential Revision: https://reviews.llvm.org/D130458
Diffstat (limited to 'llvm/tools/llvm-objcopy/ObjcopyOptions.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp index a1dfbcb..3bdd007 100644 --- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp +++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp @@ -721,16 +721,17 @@ objcopy::parseObjcopyOptions(ArrayRef<const char *> RawArgsArr, if (const auto *A = InputArgs.getLastArg(OBJCOPY_compress_debug_sections)) { Config.CompressionType = StringSwitch<DebugCompressionType>(A->getValue()) .Case("zlib", DebugCompressionType::Z) + .Case("zstd", DebugCompressionType::Zstd) .Default(DebugCompressionType::None); - if (Config.CompressionType == DebugCompressionType::None) + if (Config.CompressionType == DebugCompressionType::None) { return createStringError( errc::invalid_argument, "invalid or unsupported --compress-debug-sections format: %s", A->getValue()); - if (!compression::zlib::isAvailable()) - return createStringError( - errc::invalid_argument, - "LLVM was not compiled with LLVM_ENABLE_ZLIB: can not compress"); + } + if (const char *Reason = compression::getReasonIfUnsupported( + compression::formatFor(Config.CompressionType))) + return createStringError(errc::invalid_argument, Reason); } Config.AddGnuDebugLink = InputArgs.getLastArgValue(OBJCOPY_add_gnu_debuglink); |