diff options
author | George Rimar <grimar@accesssoftek.com> | 2019-03-26 18:42:15 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2019-03-26 18:42:15 +0000 |
commit | 279898b3152556c223b7773f78063b52176b9edc (patch) | |
tree | 93674cb9f05976b3de3fed78f28e98ab7287b170 /llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp | |
parent | d7aba7678308848b640551ac083c8dfee01a7ba9 (diff) | |
download | bcm5719-llvm-279898b3152556c223b7773f78063b52176b9edc.tar.gz bcm5719-llvm-279898b3152556c223b7773f78063b52176b9edc.zip |
[llvm-objcopy] - Strip sections before symbols.
This is a fix for https://bugs.llvm.org/show_bug.cgi?id=40007.
Idea is to swap the order of stripping. So that we strip sections before
symbols what allows us to strip relocation sections without emitting
the error about relative symbols.
Differential revision: https://reviews.llvm.org/D59763
llvm-svn: 357017
Diffstat (limited to 'llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp b/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp index 1ae802ff14b..0cf195de113 100644 --- a/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp +++ b/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp @@ -542,10 +542,14 @@ static Error handleArgs(const CopyConfig &Config, Object &Obj, Obj.OSABI = Config.OutputArch.getValue().OSABI; } - if (Error E = updateAndRemoveSymbols(Config, Obj)) + // It is important to remove the sections first. For example, we want to + // remove the relocation sections before removing the symbols. That allows + // us to avoid reporting the inappropriate errors about removing symbols + // named in relocations. + if (Error E = replaceAndRemoveSections(Config, Obj)) return E; - if (Error E = replaceAndRemoveSections(Config, Obj)) + if (Error E = updateAndRemoveSymbols(Config, Obj)) return E; if (!Config.SectionsToRename.empty()) { |