Fixed the "frame variable -G NAME" that would print global
variables by name. It was accidentally getting all the globals
for the compile unit that contained the global variable named
NAME.
llvm-svn: 117516
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index 690d061..8b6f409 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -3709,7 +3709,12 @@
dw_tag_t tag = die->Tag();
// Check to see if we have already parsed this variable or constant?
- if (m_die_to_variable_sp[die].get() == NULL)
+ if (m_die_to_variable_sp[die])
+ {
+ if (cc_variable_list)
+ cc_variable_list->AddVariable (m_die_to_variable_sp[die]);
+ }
+ else
{
// We haven't already parsed it, lets do that now.
if ((tag == DW_TAG_variable) ||
@@ -3720,6 +3725,8 @@
if (var_sp)
{
variables->AddVariable(var_sp);
+ if (cc_variable_list)
+ cc_variable_list->AddVariable (var_sp);
++vars_added;
}
}
@@ -3729,8 +3736,7 @@
if (!skip_children && parse_children && die->HasChildren())
{
- vars_added += ParseVariables(sc, dwarf_cu, func_low_pc, die->GetFirstChild(), true, true);
- //vars_added += ParseVariables(sc, dwarf_cu, die->GetFirstChild(), parse_siblings, parse_children);
+ vars_added += ParseVariables(sc, dwarf_cu, func_low_pc, die->GetFirstChild(), true, true, cc_variable_list);
}
if (parse_siblings)
@@ -3739,11 +3745,6 @@
die = NULL;
}
- if (cc_variable_list)
- {
- cc_variable_list->AddVariables(variables.get());
- }
-
return vars_added;
}