[Lldb-commits] [PATCH] D129529: [lldb] Make the g_arguments_data constexpr and fix the static assert
Jonas Devlieghere via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Jul 12 13:12:57 PDT 2022
This revision was not accepted when it landed; it landed in state "Needs Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rGb620852d2350: [lldb] Make the g_arguments_data constexpr and fix the static assert (authored by JDevlieghere).
Herald added a project: LLDB.
Changed prior to commit:
https://reviews.llvm.org/D129529?vs=443804&id=444060#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D129529/new/
https://reviews.llvm.org/D129529
Files:
lldb/include/lldb/Interpreter/CommandObject.h
lldb/source/Interpreter/CommandObject.cpp
Index: lldb/source/Interpreter/CommandObject.cpp
===================================================================
--- lldb/source/Interpreter/CommandObject.cpp
+++ lldb/source/Interpreter/CommandObject.cpp
@@ -547,7 +547,7 @@
const ArgumentTableEntry *table = GetArgumentTable();
for (int i = 0; i < eArgTypeLastArg; ++i)
if (arg_name == table[i].arg_name)
- return_type = g_arguments_data[i].arg_type;
+ return_type = GetArgumentTable()[i].arg_type;
return return_type;
}
@@ -924,14 +924,14 @@
const lldb::CommandArgumentType arg_type) {
assert(arg_type < eArgTypeLastArg &&
"Invalid argument type passed to GetArgumentTypeAsCString");
- return g_arguments_data[arg_type].arg_name;
+ return GetArgumentTable()[arg_type].arg_name;
}
const char *CommandObject::GetArgumentDescriptionAsCString(
const lldb::CommandArgumentType arg_type) {
assert(arg_type < eArgTypeLastArg &&
"Invalid argument type passed to GetArgumentDescriptionAsCString");
- return g_arguments_data[arg_type].help_text;
+ return GetArgumentTable()[arg_type].help_text;
}
Target &CommandObject::GetDummyTarget() {
@@ -1041,7 +1041,7 @@
return g_archs_help.GetString();
}
-CommandObject::ArgumentTableEntry CommandObject::g_arguments_data[] = {
+static constexpr CommandObject::ArgumentTableEntry g_arguments_data[] = {
// clang-format off
{ eArgTypeAddress, "address", CommandCompletions::eNoCompletion, { nullptr, false }, "A valid address in the target program's execution space." },
{ eArgTypeAddressOrExpression, "address-expression", CommandCompletions::eNoCompletion, { nullptr, false }, "An expression that resolves to an address." },
@@ -1134,17 +1134,18 @@
{ eArgTypeSaveCoreStyle, "corefile-style", CommandCompletions::eNoCompletion, { nullptr, false }, "The type of corefile that lldb will try to create, dependant on this target's capabilities." },
{ eArgTypeLogHandler, "log-handler", CommandCompletions::eNoCompletion, { nullptr, false }, "The log handle that will be used to write out log messages." },
{ eArgTypeSEDStylePair, "substitution-pair", CommandCompletions::eNoCompletion, { nullptr, false }, "A sed-style pattern and target pair." },
+ { eArgTypeRecognizerID, "frame-recognizer-id", CommandCompletions::eNoCompletion, { nullptr, false }, "The ID for a stack frame recognizer." },
{ eArgTypeConnectURL, "process-connect-url", CommandCompletions::eNoCompletion, { nullptr, false }, "A URL-style specification for a remote connection." },
{ eArgTypeTargetID, "target-id", CommandCompletions::eNoCompletion, { nullptr, false }, "The index ID for an lldb Target." },
{ eArgTypeStopHookID, "stop-hook-id", CommandCompletions::eNoCompletion, { nullptr, false }, "The ID you receive when you create a stop-hook." }
// clang-format on
};
+static_assert(
+ (sizeof(g_arguments_data) / sizeof(CommandObject::ArgumentTableEntry)) ==
+ eArgTypeLastArg,
+ "g_arguments_data out of sync with CommandArgumentType enumeration");
+
const CommandObject::ArgumentTableEntry *CommandObject::GetArgumentTable() {
- // If this assertion fires, then the table above is out of date with the
- // CommandArgumentType enumeration
- static_assert((sizeof(CommandObject::g_arguments_data) /
- sizeof(CommandObject::ArgumentTableEntry)) == eArgTypeLastArg,
- "");
- return CommandObject::g_arguments_data;
+ return g_arguments_data;
}
Index: lldb/include/lldb/Interpreter/CommandObject.h
===================================================================
--- lldb/include/lldb/Interpreter/CommandObject.h
+++ lldb/include/lldb/Interpreter/CommandObject.h
@@ -104,9 +104,6 @@
typedef std::vector<CommandArgumentData>
CommandArgumentEntry; // Used to build individual command argument lists
- static ArgumentTableEntry g_arguments_data
- [lldb::eArgTypeLastArg]; // Main argument information table
-
typedef std::map<std::string, lldb::CommandObjectSP> CommandMap;
CommandObject(CommandInterpreter &interpreter, llvm::StringRef name,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D129529.444060.patch
Type: text/x-patch
Size: 4114 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220712/26589cdf/attachment-0001.bin>
More information about the lldb-commits
mailing list