diff options
Diffstat (limited to 'llvm/tools/llvm-objcopy/ObjcopyOptions.cpp')
| -rw-r--r-- | llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | 70 |
1 files changed, 16 insertions, 54 deletions
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp index 265e4fc6073c..571290253944 100644 --- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp +++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp @@ -10,7 +10,6 @@ #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringRef.h" -#include "llvm/ADT/StringSet.h" #include "llvm/BinaryFormat/COFF.h" #include "llvm/ObjCopy/CommonConfig.h" #include "llvm/ObjCopy/ConfigManager.h" @@ -26,13 +25,12 @@ using namespace llvm; using namespace llvm::objcopy; +using namespace llvm::opt; namespace { enum ObjcopyID { OBJCOPY_INVALID = 0, // This is not an option ID. -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - OBJCOPY_##ID, +#define OPTION(...) LLVM_MAKE_OPT_ID_WITH_ID_PREFIX(OBJCOPY_, __VA_ARGS__), #include "ObjcopyOpts.inc" #undef OPTION }; @@ -46,12 +44,8 @@ namespace objcopy_opt { #undef PREFIX static constexpr 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}, +#define OPTION(...) \ + LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(OBJCOPY_, __VA_ARGS__), #include "ObjcopyOpts.inc" #undef OPTION }; @@ -66,9 +60,8 @@ public: enum InstallNameToolID { INSTALL_NAME_TOOL_INVALID = 0, // This is not an option ID. -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - INSTALL_NAME_TOOL_##ID, +#define OPTION(...) \ + LLVM_MAKE_OPT_ID_WITH_ID_PREFIX(INSTALL_NAME_TOOL_, __VA_ARGS__), #include "InstallNameToolOpts.inc" #undef OPTION }; @@ -83,20 +76,8 @@ namespace install_name_tool { #undef PREFIX static constexpr opt::OptTable::Info InstallNameToolInfoTable[] = { -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - {PREFIX, \ - NAME, \ - HELPTEXT, \ - METAVAR, \ - INSTALL_NAME_TOOL_##ID, \ - opt::Option::KIND##Class, \ - PARAM, \ - FLAGS, \ - INSTALL_NAME_TOOL_##GROUP, \ - INSTALL_NAME_TOOL_##ALIAS, \ - ALIASARGS, \ - VALUES}, +#define OPTION(...) \ + LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(INSTALL_NAME_TOOL_, __VA_ARGS__), #include "InstallNameToolOpts.inc" #undef OPTION }; @@ -110,9 +91,8 @@ public: enum BitcodeStripID { BITCODE_STRIP_INVALID = 0, // This is not an option ID. -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - BITCODE_STRIP_##ID, +#define OPTION(...) \ + LLVM_MAKE_OPT_ID_WITH_ID_PREFIX(BITCODE_STRIP_, __VA_ARGS__), #include "BitcodeStripOpts.inc" #undef OPTION }; @@ -127,20 +107,8 @@ namespace bitcode_strip { #undef PREFIX static constexpr opt::OptTable::Info BitcodeStripInfoTable[] = { -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - {PREFIX, \ - NAME, \ - HELPTEXT, \ - METAVAR, \ - BITCODE_STRIP_##ID, \ - opt::Option::KIND##Class, \ - PARAM, \ - FLAGS, \ - BITCODE_STRIP_##GROUP, \ - BITCODE_STRIP_##ALIAS, \ - ALIASARGS, \ - VALUES}, +#define OPTION(...) \ + LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(BITCODE_STRIP_, __VA_ARGS__), #include "BitcodeStripOpts.inc" #undef OPTION }; @@ -154,9 +122,7 @@ public: enum StripID { STRIP_INVALID = 0, // This is not an option ID. -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - STRIP_##ID, +#define OPTION(...) LLVM_MAKE_OPT_ID_WITH_ID_PREFIX(STRIP_, __VA_ARGS__), #include "StripOpts.inc" #undef OPTION }; @@ -170,12 +136,7 @@ namespace strip { #undef PREFIX static constexpr 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}, +#define OPTION(...) LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(STRIP_, __VA_ARGS__), #include "StripOpts.inc" #undef OPTION }; @@ -205,6 +166,7 @@ static SectionFlag parseSectionRenameFlag(StringRef SectionName) { .CaseLower("contents", SectionFlag::SecContents) .CaseLower("share", SectionFlag::SecShare) .CaseLower("exclude", SectionFlag::SecExclude) + .CaseLower("large", SectionFlag::SecLarge) .Default(SectionFlag::SecNone); } @@ -218,7 +180,7 @@ parseSectionFlagSet(ArrayRef<StringRef> SectionFlags) { errc::invalid_argument, "unrecognized section flag '%s'. Flags supported for GNU " "compatibility: alloc, load, noload, readonly, exclude, debug, " - "code, data, rom, share, contents, merge, strings", + "code, data, rom, share, contents, merge, strings, large", Flag.str().c_str()); ParsedFlags |= ParsedFlag; } |
