aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objcopy/CopyConfig.cpp
diff options
context:
space:
mode:
authorYi Kong <yikong@google.com>2020-03-24 15:38:48 +0800
committerYi Kong <yikong@google.com>2020-04-21 11:30:04 +0800
commit7c65e88d0bc85ff2732a4e23c397ff842b97b828 (patch)
tree95501cdb3d90f632befd4073642d111608d354e9 /llvm/tools/llvm-objcopy/CopyConfig.cpp
parentc031378ce01b8485ba0ef486654bc9393c4ac024 (diff)
downloadllvm-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.cpp8
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,