mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[llvm-objcopy] Rename --keep to --keep-section.
Summary: llvm-objcopy/strip support `--keep` (for sections) and `--keep-symbols` (for symbols). For consistency and clarity, rename `--keep` to `--keep-section`. In fact, for GNU compatability, -K is --keep-symbol, so it's weird that the alias `-K` is not the same as the short-ish `--keep`. Reviewers: jakehehrlich, jhenderson, alexshap, MaskRay, espindola Reviewed By: jakehehrlich, MaskRay Subscribers: emaste, arichardson, llvm-commits Differential Revision: https://reviews.llvm.org/D54477 llvm-svn: 346782
This commit is contained in:
parent
d4e0a98ad5
commit
16b52aa035
@ -1,6 +1,6 @@
|
||||
# RUN: yaml2obj %s > %t
|
||||
# RUN: llvm-objcopy -strip-non-alloc -keep=.test %t %t2
|
||||
# RUN: llvm-strip --strip-all -keep=.test %t -o %t3
|
||||
# RUN: llvm-objcopy -strip-non-alloc -keep-section=.test %t %t2
|
||||
# RUN: llvm-strip --strip-all -keep-section=.test %t -o %t3
|
||||
# RUN: llvm-readobj -file-headers -sections %t2 | FileCheck %s
|
||||
# RUN: cmp %t2 %t3
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RUN: yaml2obj %s > %t
|
||||
# RUN: llvm-objcopy -R=.test -keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -R=.test -keep-section=.test %t %t2
|
||||
# RUN: llvm-readobj -file-headers -sections %t2 | FileCheck %s
|
||||
|
||||
!ELF
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RUN: yaml2obj %s > %t
|
||||
# RUN: llvm-objcopy -strip-non-alloc -keep=.test -keep=.test3 %t %t2
|
||||
# RUN: llvm-objcopy -strip-non-alloc -keep-section=.test -keep-section=.test3 %t %t2
|
||||
# RUN: llvm-readobj -file-headers -sections %t2 | FileCheck %s
|
||||
|
||||
!ELF
|
||||
|
@ -1,6 +1,6 @@
|
||||
# RUN: yaml2obj %s > %t
|
||||
# RUN: llvm-objcopy -keep=.test2 -only-keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -j .test -keep=.test2 %t %t3
|
||||
# RUN: llvm-objcopy -keep-section=.test2 -only-keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -j .test -keep-section=.test2 %t %t3
|
||||
# RUN: llvm-readobj -file-headers -sections %t2 | FileCheck %s
|
||||
# RUN: diff %t2 %t3
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RUN: yaml2obj %s > %t
|
||||
# RUN: llvm-objcopy -strip-sections -keep=.shstrtab %t %t2
|
||||
# RUN: llvm-objcopy -strip-sections -keep-section=.shstrtab %t %t2
|
||||
# RUN: od -Ax -t c %t2 | FileCheck %s
|
||||
|
||||
!ELF
|
||||
|
@ -18,7 +18,7 @@
|
||||
#Build as : clang -g -O2 addr.c
|
||||
|
||||
RUN: mkdir -p %t/.debug
|
||||
RUN: llvm-objcopy --keep=.debug_info %p/Inputs/addr.exe %t/.debug/addr
|
||||
RUN: llvm-objcopy --keep-section=.debug_info %p/Inputs/addr.exe %t/.debug/addr
|
||||
RUN: llvm-objcopy --strip-debug --add-gnu-debuglink=%t/.debug/addr %p/Inputs/addr.exe %t/addr.exe
|
||||
RUN: llvm-symbolizer -print-address -obj=%t/addr.exe < %p/Inputs/addr.inp | FileCheck %s
|
||||
|
||||
|
@ -305,8 +305,8 @@ DriverConfig parseObjcopyOptions(ArrayRef<const char *> ArgsArr) {
|
||||
|
||||
for (auto Arg : InputArgs.filtered(OBJCOPY_remove_section))
|
||||
Config.ToRemove.push_back(Arg->getValue());
|
||||
for (auto Arg : InputArgs.filtered(OBJCOPY_keep))
|
||||
Config.Keep.push_back(Arg->getValue());
|
||||
for (auto Arg : InputArgs.filtered(OBJCOPY_keep_section))
|
||||
Config.KeepSection.push_back(Arg->getValue());
|
||||
for (auto Arg : InputArgs.filtered(OBJCOPY_only_keep))
|
||||
Config.OnlyKeep.push_back(Arg->getValue());
|
||||
for (auto Arg : InputArgs.filtered(OBJCOPY_add_section))
|
||||
@ -411,8 +411,8 @@ DriverConfig parseStripOptions(ArrayRef<const char *> ArgsArr) {
|
||||
!Config.StripAllGNU)
|
||||
Config.StripAll = true;
|
||||
|
||||
for (auto Arg : InputArgs.filtered(STRIP_keep))
|
||||
Config.Keep.push_back(Arg->getValue());
|
||||
for (auto Arg : InputArgs.filtered(STRIP_keep_section))
|
||||
Config.KeepSection.push_back(Arg->getValue());
|
||||
|
||||
for (auto Arg : InputArgs.filtered(STRIP_remove_section))
|
||||
Config.ToRemove.push_back(Arg->getValue());
|
||||
|
@ -57,7 +57,7 @@ struct CopyConfig {
|
||||
// Repeated options
|
||||
std::vector<StringRef> AddSection;
|
||||
std::vector<StringRef> DumpSection;
|
||||
std::vector<StringRef> Keep;
|
||||
std::vector<StringRef> KeepSection;
|
||||
std::vector<StringRef> OnlyKeep;
|
||||
std::vector<StringRef> SymbolsToGlobalize;
|
||||
std::vector<StringRef> SymbolsToKeep;
|
||||
|
@ -385,10 +385,10 @@ static void handleArgs(const CopyConfig &Config, Object &Obj,
|
||||
};
|
||||
}
|
||||
|
||||
if (!Config.Keep.empty()) {
|
||||
if (!Config.KeepSection.empty()) {
|
||||
RemovePred = [&Config, RemovePred](const SectionBase &Sec) {
|
||||
// Explicitly keep these sections regardless of previous removes.
|
||||
if (is_contained(Config.Keep, Sec.Name))
|
||||
if (is_contained(Config.KeepSection, Sec.Name))
|
||||
return false;
|
||||
// Otherwise defer to RemovePred.
|
||||
return RemovePred(Sec);
|
||||
|
@ -76,7 +76,8 @@ defm rename_section
|
||||
defm redefine_symbol
|
||||
: Eq<"redefine-sym", "Change the name of a symbol old to new">,
|
||||
MetaVarName<"old=new">;
|
||||
defm keep : Eq<"keep", "Keep <section>">, MetaVarName<"section">;
|
||||
defm keep_section : Eq<"keep-section", "Keep <section>">,
|
||||
MetaVarName<"section">;
|
||||
defm only_keep : Eq<"only-keep", "Remove all but <section>">,
|
||||
MetaVarName<"section">;
|
||||
def j : JoinedOrSeparate<["-"], "j">, Alias<only_keep>;
|
||||
|
@ -51,7 +51,8 @@ defm remove_section : Eq<"remove-section", "Remove <section>">,
|
||||
MetaVarName<"section">;
|
||||
def R : JoinedOrSeparate<["-"], "R">, Alias<remove_section>;
|
||||
|
||||
defm keep : Eq<"keep", "Keep <section>">, MetaVarName<"section">;
|
||||
defm keep_section : Eq<"keep-section", "Keep <section>">,
|
||||
MetaVarName<"section">;
|
||||
defm keep_symbol : Eq<"keep-symbol", "Do not remove symbol <symbol>">,
|
||||
MetaVarName<"symbol">;
|
||||
def K : JoinedOrSeparate<["-"], "K">, Alias<keep_symbol>;
|
||||
|
Loading…
Reference in New Issue
Block a user