[Lldb-commits] [PATCH] D15576: Inspect global static const variables
Ewan Crawford via lldb-commits
lldb-commits at lists.llvm.org
Thu Dec 17 04:03:13 PST 2015
This revision was automatically updated to reflect the committed changes.
Closed by commit rL255887: Inspect DW_AT_const_value global static const variables (authored by EwanCrawford).
Changed prior to commit:
http://reviews.llvm.org/D15576?vs=43017&id=43119#toc
Repository:
rL LLVM
http://reviews.llvm.org/D15576
Files:
lldb/trunk/packages/Python/lldbsuite/test/lang/c/global_variables/TestGlobalVariables.py
lldb/trunk/packages/Python/lldbsuite/test/lang/c/global_variables/main.c
lldb/trunk/source/Core/ValueObject.cpp
lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
Index: lldb/trunk/source/Core/ValueObject.cpp
===================================================================
--- lldb/trunk/source/Core/ValueObject.cpp
+++ lldb/trunk/source/Core/ValueObject.cpp
@@ -1135,6 +1135,7 @@
if (m_data.GetByteSize())
{
data = m_data;
+ error.Clear();
return data.GetByteSize();
}
else
Index: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
===================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -4260,7 +4260,10 @@
}
else
{
- scope = eValueTypeVariableLocal;
+ if (location_is_const_value_data)
+ scope = eValueTypeVariableStatic;
+ else
+ scope = eValueTypeVariableLocal;
}
}
Index: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
===================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
@@ -815,7 +815,7 @@
bool is_declaration = false;
//bool is_artificial = false;
bool has_address = false;
- bool has_location = false;
+ bool has_location_or_const_value = false;
bool is_global_or_static_variable = false;
DWARFFormValue specification_die_form;
@@ -860,7 +860,8 @@
break;
case DW_AT_location:
- has_location = true;
+ case DW_AT_const_value:
+ has_location_or_const_value = true;
if (tag == DW_TAG_variable)
{
const DWARFDebugInfoEntry* parent_die = die.GetParent();
@@ -1035,7 +1036,7 @@
break;
case DW_TAG_variable:
- if (name && has_location && is_global_or_static_variable)
+ if (name && has_location_or_const_value && is_global_or_static_variable)
{
globals.Insert (ConstString(name), DIERef(cu_offset, die.GetOffset()));
// Be sure to include variables by their mangled and demangled
Index: lldb/trunk/packages/Python/lldbsuite/test/lang/c/global_variables/main.c
===================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/lang/c/global_variables/main.c
+++ lldb/trunk/packages/Python/lldbsuite/test/lang/c/global_variables/main.c
@@ -10,13 +10,14 @@
int g_common_1; // Not initialized on purpose to cause it to be undefined external in .o file
int g_file_global_int = 42;
+static const int g_file_static_int = 2;
const char *g_file_global_cstr = "g_file_global_cstr";
static const char *g_file_static_cstr = "g_file_static_cstr";
extern int g_a;
int main (int argc, char const *argv[])
{
- g_common_1 = g_file_global_int / 2;
+ g_common_1 = g_file_global_int / g_file_static_int;
static const char *g_func_static_cstr = "g_func_static_cstr";
printf ("%s %s\n", g_file_global_cstr, g_file_static_cstr);
return g_file_global_int + g_a + g_common_1; // Set break point at this line. //// break $source:$line; continue; var -global g_a -global g_global_int
Index: lldb/trunk/packages/Python/lldbsuite/test/lang/c/global_variables/TestGlobalVariables.py
===================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/lang/c/global_variables/TestGlobalVariables.py
+++ lldb/trunk/packages/Python/lldbsuite/test/lang/c/global_variables/TestGlobalVariables.py
@@ -52,6 +52,7 @@
# Check that GLOBAL scopes are indicated for the variables.
self.expect("frame variable --show-types --scope --show-globals --no-args", VARIABLES_DISPLAYED_CORRECTLY,
substrs = ['GLOBAL: (int) g_file_global_int = 42',
+ 'STATIC: (const int) g_file_static_int = 2',
'GLOBAL: (const char *) g_file_global_cstr',
'"g_file_global_cstr"',
'STATIC: (const char *) g_file_static_cstr',
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15576.43119.patch
Type: text/x-patch
Size: 4364 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20151217/d402b3ed/attachment-0001.bin>
More information about the lldb-commits
mailing list