mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[llvm-objcopy] Change --only-keep to --only-section
I just hard core goofed when I wrote this and created a different name for no good reason. I'm failry aware of most "fresh" users of llvm-objcopy (that is, users which are not using it as a drop in replacement for GNU objcopy) and can say that only "-j" is being used by such people so this patch should strictly increase compatibility and not remove it. Differential Revision: https://reviews.llvm.org/D52180 llvm-svn: 348446
This commit is contained in:
parent
8707b0918b
commit
ed2e21ce3f
@ -1,5 +1,5 @@
|
||||
# RUN: yaml2obj %s > %t
|
||||
# RUN: llvm-objcopy -only-keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -only-section=.test %t %t2
|
||||
# RUN: llvm-objcopy -j .test %t %t3
|
||||
# RUN: llvm-readobj -file-headers -sections %t2 | FileCheck %s
|
||||
# RUN: diff %t2 %t3
|
@ -1,6 +1,6 @@
|
||||
# RUN: yaml2obj %s > %t
|
||||
# RUN: llvm-objcopy -O binary -j .text %t %t2
|
||||
# RUN: llvm-objcopy -O binary -only-keep .text %t %t3
|
||||
# RUN: llvm-objcopy -O binary -only-section .text %t %t3
|
||||
# RUN: llvm-objcopy --dump-section .text=%t4 %t %t5
|
||||
# RUN: llvm-objcopy --dump-section .foo=%t6 %t %t7
|
||||
# RUN: not llvm-objcopy --dump-section .bar=%t8 %t %t9 2>&1 | FileCheck %s --check-prefix=NOBITS
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RUN: yaml2obj %s > %t
|
||||
# RUN: llvm-objcopy -R=.test -only-keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -R=.test -only-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 -keep-section=.test2 -only-keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -keep-section=.test2 -only-section=.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 -R .symtab -R .strtab -only-keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -R .symtab -R .strtab -only-section=.test %t %t2
|
||||
# RUN: llvm-objcopy -j .test -R .strtab -R .symtab %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-non-alloc -only-keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -strip-non-alloc -only-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-sections -only-keep=.test %t %t2
|
||||
# RUN: llvm-objcopy -strip-sections -only-section=.test %t %t2
|
||||
# RUN: od -Ax -t x1 %t2 | FileCheck %s
|
||||
# RUN: od -Ax -t c %t2 | FileCheck %s -check-prefix=TEXT
|
||||
|
@ -315,8 +315,8 @@ DriverConfig parseObjcopyOptions(ArrayRef<const char *> ArgsArr) {
|
||||
Config.ToRemove.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_only_section))
|
||||
Config.OnlySection.push_back(Arg->getValue());
|
||||
for (auto Arg : InputArgs.filtered(OBJCOPY_add_section))
|
||||
Config.AddSection.push_back(Arg->getValue());
|
||||
for (auto Arg : InputArgs.filtered(OBJCOPY_dump_section))
|
||||
|
@ -61,7 +61,7 @@ struct CopyConfig {
|
||||
std::vector<StringRef> AddSection;
|
||||
std::vector<StringRef> DumpSection;
|
||||
std::vector<StringRef> KeepSection;
|
||||
std::vector<StringRef> OnlyKeep;
|
||||
std::vector<StringRef> OnlySection;
|
||||
std::vector<StringRef> SymbolsToGlobalize;
|
||||
std::vector<StringRef> SymbolsToKeep;
|
||||
std::vector<StringRef> SymbolsToLocalize;
|
||||
|
@ -415,10 +415,10 @@ static void handleArgs(const CopyConfig &Config, Object &Obj,
|
||||
};
|
||||
|
||||
// Explicit copies:
|
||||
if (!Config.OnlyKeep.empty()) {
|
||||
if (!Config.OnlySection.empty()) {
|
||||
RemovePred = [&Config, RemovePred, &Obj](const SectionBase &Sec) {
|
||||
// Explicitly keep these sections regardless of previous removes.
|
||||
if (is_contained(Config.OnlyKeep, Sec.Name))
|
||||
if (is_contained(Config.OnlySection, Sec.Name))
|
||||
return false;
|
||||
|
||||
// Allow all implicit removes.
|
||||
|
@ -78,9 +78,9 @@ defm redefine_symbol
|
||||
MetaVarName<"old=new">;
|
||||
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>;
|
||||
defm only_section : Eq<"only-section", "Remove all but <section>">,
|
||||
MetaVarName<"section">;
|
||||
def j : JoinedOrSeparate<["-"], "j">, Alias<only_section>;
|
||||
defm add_section
|
||||
: Eq<"add-section",
|
||||
"Make a section named <section> with the contents of <file>.">,
|
||||
|
Loading…
Reference in New Issue
Block a user