aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2022-09-07 23:53:40 -0700
committerFangrui Song <i@maskray.me>2022-09-07 23:53:40 -0700
commit5b19a1f8e88da9ec92b995bfee90043795c2c252 (patch)
tree9897ec102d95697b52ace6b4fa8f0ed166423d5f /llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
parent19dc3cff0f771bb8933136ef68e782553e920d04 (diff)
downloadllvm-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.cpp11
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);