[lldb] Implement ${target.file} format variable (#123431)
Implements a format variable to print the basename and full path to the current target.
This commit is contained in:
committed by
GitHub
parent
3f0ac4653b
commit
06c54bc1a2
@@ -113,11 +113,11 @@ A complete list of currently supported format string variables is listed below:
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``module.file.basename`` | The basename of the current module (shared library or executable) |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``module.file.fullpath`` | The basename of the current module (shared library or executable) |
|
||||
| ``module.file.fullpath`` | The path of the current module (shared library or executable) |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``process.file.basename`` | The basename of the file for the process |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``process.file.fullpath`` | The fullname of the file for the process |
|
||||
| ``process.file.fullpath`` | The path of the file for the process |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``process.id`` | The process ID native to the system on which the inferior runs. |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
@@ -141,6 +141,10 @@ A complete list of currently supported format string variables is listed below:
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``target.arch`` | The architecture of the current target |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``target.file.basename`` | The basename of the current target |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``target.file.fullpath`` | The path of the current target |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``script.target:python_func`` | Use a Python function to generate a piece of textual output |
|
||||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| ``script.process:python_func`` | Use a Python function to generate a piece of textual output |
|
||||
|
||||
@@ -67,6 +67,7 @@ struct Entry {
|
||||
ScriptThread,
|
||||
ThreadInfo,
|
||||
TargetArch,
|
||||
TargetFile,
|
||||
ScriptTarget,
|
||||
ModuleFile,
|
||||
File,
|
||||
|
||||
@@ -162,7 +162,9 @@ constexpr Definition g_thread_child_entries[] = {
|
||||
Definition("completed-expression", EntryType::ThreadCompletedExpression)};
|
||||
|
||||
constexpr Definition g_target_child_entries[] = {
|
||||
Definition("arch", EntryType::TargetArch)};
|
||||
Definition("arch", EntryType::TargetArch),
|
||||
Entry::DefinitionWithChildren("file", EntryType::TargetFile,
|
||||
g_file_child_entries)};
|
||||
|
||||
#define _TO_STR2(_val) #_val
|
||||
#define _TO_STR(_val) _TO_STR2(_val)
|
||||
@@ -322,6 +324,7 @@ const char *FormatEntity::Entry::TypeToCString(Type t) {
|
||||
ENUM_TO_CSTR(ScriptThread);
|
||||
ENUM_TO_CSTR(ThreadInfo);
|
||||
ENUM_TO_CSTR(TargetArch);
|
||||
ENUM_TO_CSTR(TargetFile);
|
||||
ENUM_TO_CSTR(ScriptTarget);
|
||||
ENUM_TO_CSTR(ModuleFile);
|
||||
ENUM_TO_CSTR(File);
|
||||
@@ -1469,6 +1472,17 @@ bool FormatEntity::Format(const Entry &entry, Stream &s,
|
||||
}
|
||||
return false;
|
||||
|
||||
case Entry::Type::TargetFile:
|
||||
if (exe_ctx) {
|
||||
if (Target *target = exe_ctx->GetTargetPtr()) {
|
||||
if (Module *exe_module = target->GetExecutableModulePointer()) {
|
||||
if (DumpFile(s, exe_module->GetFileSpec(), (FileKind)entry.number))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
case Entry::Type::ScriptTarget:
|
||||
if (exe_ctx) {
|
||||
Target *target = exe_ctx->GetTargetPtr();
|
||||
|
||||
@@ -148,6 +148,9 @@ constexpr llvm::StringRef lookupStrings[] = {
|
||||
"${thread.return-value}",
|
||||
"${thread.completed-expression}",
|
||||
"${target.arch}",
|
||||
"${target.file.basename}",
|
||||
"${target.file.dirname}",
|
||||
"${target.file.fullpath}",
|
||||
"${var.dummy-var-to-test-wildcard}"};
|
||||
|
||||
TEST(FormatEntity, LookupAllEntriesInTree) {
|
||||
|
||||
Reference in New Issue
Block a user