diff options
author | Yi Kong <yikong@google.com> | 2020-03-24 15:38:48 +0800 |
---|---|---|
committer | Yi Kong <yikong@google.com> | 2020-04-21 11:30:04 +0800 |
commit | 7c65e88d0bc85ff2732a4e23c397ff842b97b828 (patch) | |
tree | 95501cdb3d90f632befd4073642d111608d354e9 /llvm/tools/llvm-objcopy/CopyConfig.cpp | |
parent | c031378ce01b8485ba0ef486654bc9393c4ac024 (diff) | |
download | llvm-7c65e88d0bc85ff2732a4e23c397ff842b97b828.zip llvm-7c65e88d0bc85ff2732a4e23c397ff842b97b828.tar.gz llvm-7c65e88d0bc85ff2732a4e23c397ff842b97b828.tar.bz2 |
[llvm-objcopy] Match GNU behaviour regarding file symbols
GNU objcopy removes STT_FILE symbols for strip-debug operations, and
keeps them for --discard-all operation. Match their behaviour for
llvm-objcopy.
Bug: https://github.com/android/ndk/issues/1212
Differential Revision: https://reviews.llvm.org/D76675
Diffstat (limited to 'llvm/tools/llvm-objcopy/CopyConfig.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/CopyConfig.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objcopy/CopyConfig.cpp b/llvm/tools/llvm-objcopy/CopyConfig.cpp index df2fbbb..ff12e4b 100644 --- a/llvm/tools/llvm-objcopy/CopyConfig.cpp +++ b/llvm/tools/llvm-objcopy/CopyConfig.cpp @@ -667,8 +667,10 @@ parseObjcopyOptions(ArrayRef<const char *> ArgsArr, Config.KeepFileSymbols = InputArgs.hasArg(OBJCOPY_keep_file_symbols); Config.DecompressDebugSections = InputArgs.hasArg(OBJCOPY_decompress_debug_sections); - if (Config.DiscardMode == DiscardType::All) + if (Config.DiscardMode == DiscardType::All) { Config.StripDebug = true; + Config.KeepFileSymbols = true; + } for (auto Arg : InputArgs.filtered(OBJCOPY_localize_symbol)) if (Error E = Config.SymbolsToLocalize.addMatcher(NameOrPattern::create( Arg->getValue(), SymbolMatchStyle, ErrorCallback))) @@ -938,8 +940,10 @@ parseStripOptions(ArrayRef<const char *> ArgsArr, !Config.StripAllGNU && Config.SymbolsToRemove.empty()) Config.StripAll = true; - if (Config.DiscardMode == DiscardType::All) + if (Config.DiscardMode == DiscardType::All) { Config.StripDebug = true; + Config.KeepFileSymbols = true; + } Config.DeterministicArchives = InputArgs.hasFlag(STRIP_enable_deterministic_archives, |