aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objdump/llvm-objdump.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r--llvm/tools/llvm-objdump/llvm-objdump.cpp39
1 files changed, 22 insertions, 17 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 246d5cf..1e74cb8 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -99,10 +99,11 @@ namespace {
class CommonOptTable : public opt::GenericOptTable {
public:
- CommonOptTable(ArrayRef<Info> OptionInfos, const char *Usage,
+ CommonOptTable(const char *StrTable, ArrayRef<unsigned> PrefixesTable,
+ ArrayRef<Info> OptionInfos, const char *Usage,
const char *Description)
- : opt::GenericOptTable(OptionInfos), Usage(Usage),
- Description(Description) {
+ : opt::GenericOptTable(StrTable, PrefixesTable, OptionInfos),
+ Usage(Usage), Description(Description) {
setGroupedShortOptions(true);
}
@@ -121,12 +122,13 @@ private:
// ObjdumpOptID is in ObjdumpOptID.h
namespace objdump_opt {
-#define PREFIX(NAME, VALUE) \
- static constexpr StringLiteral NAME##_init[] = VALUE; \
- static constexpr ArrayRef<StringLiteral> NAME(NAME##_init, \
- std::size(NAME##_init) - 1);
+#define OPTTABLE_STR_TABLE_CODE
#include "ObjdumpOpts.inc"
-#undef PREFIX
+#undef OPTTABLE_STR_TABLE_CODE
+
+#define OPTTABLE_PREFIXES_TABLE_CODE
+#include "ObjdumpOpts.inc"
+#undef OPTTABLE_PREFIXES_TABLE_CODE
static constexpr opt::OptTable::Info ObjdumpInfoTable[] = {
#define OPTION(...) \
@@ -139,9 +141,10 @@ static constexpr opt::OptTable::Info ObjdumpInfoTable[] = {
class ObjdumpOptTable : public CommonOptTable {
public:
ObjdumpOptTable()
- : CommonOptTable(objdump_opt::ObjdumpInfoTable,
- " [options] <input object files>",
- "llvm object file dumper") {}
+ : CommonOptTable(
+ objdump_opt::OptionStrTable, objdump_opt::OptionPrefixesTable,
+ objdump_opt::ObjdumpInfoTable, " [options] <input object files>",
+ "llvm object file dumper") {}
};
enum OtoolOptID {
@@ -152,12 +155,13 @@ enum OtoolOptID {
};
namespace otool {
-#define PREFIX(NAME, VALUE) \
- static constexpr StringLiteral NAME##_init[] = VALUE; \
- static constexpr ArrayRef<StringLiteral> NAME(NAME##_init, \
- std::size(NAME##_init) - 1);
+#define OPTTABLE_STR_TABLE_CODE
+#include "OtoolOpts.inc"
+#undef OPTTABLE_STR_TABLE_CODE
+
+#define OPTTABLE_PREFIXES_TABLE_CODE
#include "OtoolOpts.inc"
-#undef PREFIX
+#undef OPTTABLE_PREFIXES_TABLE_CODE
static constexpr opt::OptTable::Info OtoolInfoTable[] = {
#define OPTION(...) LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(OTOOL_, __VA_ARGS__),
@@ -169,7 +173,8 @@ static constexpr opt::OptTable::Info OtoolInfoTable[] = {
class OtoolOptTable : public CommonOptTable {
public:
OtoolOptTable()
- : CommonOptTable(otool::OtoolInfoTable, " [option...] [file...]",
+ : CommonOptTable(otool::OptionStrTable, otool::OptionPrefixesTable,
+ otool::OtoolInfoTable, " [option...] [file...]",
"Mach-O object file displaying tool") {}
};