diff options
author | Alexander Shaposhnikov <shal1t712@gmail.com> | 2018-05-23 20:39:52 +0000 |
---|---|---|
committer | Alexander Shaposhnikov <shal1t712@gmail.com> | 2018-05-23 20:39:52 +0000 |
commit | c7277e6e2be75a2bab92ce36d37fd018b2e19725 (patch) | |
tree | 3de93bb1c8a7445abbd8a7bdf4e8ec35194647db /llvm/tools/llvm-objcopy/llvm-objcopy.cpp | |
parent | 28fe54fac8da3085a0890006afb10429179f6e96 (diff) | |
download | bcm5719-llvm-c7277e6e2be75a2bab92ce36d37fd018b2e19725.tar.gz bcm5719-llvm-c7277e6e2be75a2bab92ce36d37fd018b2e19725.zip |
[llvm-strip] Minor fix of the usage of TableGen
This is a small follow-up to the revisions r333117 and r331663.
1. Avoid the name conflicts of the generated variables for prefixes.
2. Apply clang-format -i -style=llvm to llvm-objcopy.cpp once again.
3. Add a test for the flag with double dash.
Test plan: make check-all
llvm-svn: 333120
Diffstat (limited to 'llvm/tools/llvm-objcopy/llvm-objcopy.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/llvm-objcopy.cpp | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp index 6aac11af1bb..2c2c9926447 100644 --- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp +++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp @@ -55,17 +55,25 @@ enum ObjcopyID { #undef OPTION }; -#define PREFIX(NAME, VALUE) const char *const NAME[] = VALUE; +#define PREFIX(NAME, VALUE) const char *const OBJCOPY_##NAME[] = VALUE; #include "ObjcopyOpts.inc" #undef PREFIX static const opt::OptTable::Info ObjcopyInfoTable[] = { #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ HELPTEXT, METAVAR, VALUES) \ - {PREFIX, NAME, HELPTEXT, \ - METAVAR, OBJCOPY_##ID, opt::Option::KIND##Class, \ - PARAM, FLAGS, OBJCOPY_##GROUP, \ - OBJCOPY_##ALIAS, ALIASARGS, VALUES}, + {OBJCOPY_##PREFIX, \ + NAME, \ + HELPTEXT, \ + METAVAR, \ + OBJCOPY_##ID, \ + opt::Option::KIND##Class, \ + PARAM, \ + FLAGS, \ + OBJCOPY_##GROUP, \ + OBJCOPY_##ALIAS, \ + ALIASARGS, \ + VALUES}, #include "ObjcopyOpts.inc" #undef OPTION }; @@ -84,13 +92,17 @@ enum StripID { #undef OPTION }; +#define PREFIX(NAME, VALUE) const char *const STRIP_##NAME[] = VALUE; +#include "StripOpts.inc" +#undef PREFIX + static const opt::OptTable::Info StripInfoTable[] = { #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ HELPTEXT, METAVAR, VALUES) \ - {PREFIX, NAME, HELPTEXT, \ - METAVAR, STRIP_##ID, opt::Option::KIND##Class, \ - PARAM, FLAGS, STRIP_##GROUP, \ - STRIP_##ALIAS, ALIASARGS, VALUES}, + {STRIP_##PREFIX, NAME, HELPTEXT, \ + METAVAR, STRIP_##ID, opt::Option::KIND##Class, \ + PARAM, FLAGS, STRIP_##GROUP, \ + STRIP_##ALIAS, ALIASARGS, VALUES}, #include "StripOpts.inc" #undef OPTION }; @@ -222,8 +234,9 @@ void HandleArgs(const CopyConfig &Config, Object &Obj, const Reader &Reader, if (!Config.SplitDWO.empty()) { SplitDWOToFile(Config, Reader, Config.SplitDWO, OutputElfType); } - - // TODO: update or remove symbols only if there is an option that affects them. + + // TODO: update or remove symbols only if there is an option that affects + // them. if (Obj.SymbolTable) { Obj.SymbolTable->updateSymbols([&](Symbol &Sym) { if ((Config.LocalizeHidden && @@ -378,7 +391,7 @@ void HandleArgs(const CopyConfig &Config, Object &Obj, const Reader &Reader, // This has to be the last predicate assignment. // If the option --keep-symbol has been specified - // and at least one of those symbols is present + // and at least one of those symbols is present // (equivalently, the updated symbol table is not empty) // the symbol table and the string table should not be removed. if (!Config.SymbolsToKeep.empty() && !Obj.SymbolTable->empty()) { @@ -557,7 +570,7 @@ CopyConfig ParseStripOptions(ArrayRef<const char *> ArgsArr) { for (auto Arg : InputArgs.filtered(STRIP_remove_section)) Config.ToRemove.push_back(Arg->getValue()); - + for (auto Arg : InputArgs.filtered(STRIP_keep_symbol)) Config.SymbolsToKeep.push_back(Arg->getValue()); |