Added the address of operator for the "frame variable" command.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@119100 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Commands/CommandObjectFrame.cpp b/source/Commands/CommandObjectFrame.cpp
index 37cfbfa..1fecc88 100644
--- a/source/Commands/CommandObjectFrame.cpp
+++ b/source/Commands/CommandObjectFrame.cpp
@@ -586,12 +586,18 @@
}
else
{
+ bool address_of = false;
// If first character is a '*', then show pointer contents
if (name_cstr[0] == '*')
{
++ptr_depth;
name_cstr++; // Skip the '*'
}
+ else if (name_cstr[0] == '&')
+ {
+ address_of = true;
+ name_cstr++; // Skip the '&'
+ }
std::string var_path (name_cstr);
size_t separator_idx = var_path.find_first_of(".-[");
@@ -724,18 +730,25 @@
}
- ValueObject::DumpValueObject (result.GetOutputStream(),
- exe_ctx.frame,
- valobj_sp.get(),
- valobj_sp->GetParent() ? name_cstr : NULL,
- ptr_depth,
- 0,
- m_options.max_depth,
- m_options.show_types,
- m_options.show_location,
- m_options.use_objc,
- false,
- m_options.flat_output);
+ if (address_of)
+ {
+ s.Printf("&%s = %s\n", name_cstr, valobj_sp->GetLocationAsCString (exe_ctx.frame));
+ }
+ else
+ {
+ ValueObject::DumpValueObject (result.GetOutputStream(),
+ exe_ctx.frame,
+ valobj_sp.get(),
+ valobj_sp->GetParent() ? name_cstr : NULL,
+ ptr_depth,
+ 0,
+ m_options.max_depth,
+ m_options.show_types,
+ m_options.show_location,
+ m_options.use_objc,
+ false,
+ m_options.flat_output);
+ }
}
}
else