[DWARF] If linkages names are missing, use decl context to get qualified names.
Summary:
This commit adds this alternate route only when parsing variable dies
corresponding to global or static variables. The motivation for this is that GCC
does not emit linkage names for functions and variables declared/defined in
anonymous namespaces. Having this alternate route fixes one part of
TestNamespace which fails when the test case is compiled with GCC.
An alternate route to get fully qualified names of functions whose linkage names
are missing will be added with a followup change. With that, the other failing
part of TestNamespace will also be fixed.
Test Plan: dotest.py -C gcc -p TestNamespace
Reviewers: clayborg
Reviewed By: clayborg
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D8569
llvm-svn: 233098
diff --git a/lldb/source/Symbol/Variable.cpp b/lldb/source/Symbol/Variable.cpp
index 3a734a1..5665e47 100644
--- a/lldb/source/Symbol/Variable.cpp
+++ b/lldb/source/Symbol/Variable.cpp
@@ -36,7 +36,7 @@
(
lldb::user_id_t uid,
const char *name,
- const char *mangled, // The mangled variable name for variables in namespaces
+ const char *mangled, // The mangled or fully qualified name of the variable.
const lldb::SymbolFileTypeSP &symfile_type_sp,
ValueType scope,
SymbolContextScope *context,
@@ -47,7 +47,7 @@
) :
UserID(uid),
m_name(name),
- m_mangled (ConstString(mangled), true),
+ m_mangled (ConstString(mangled)),
m_symfile_type_sp(symfile_type_sp),
m_scope(scope),
m_owner_scope(context),
@@ -69,8 +69,9 @@
const ConstString&
Variable::GetName() const
{
- if (m_mangled)
- return m_mangled.GetName();
+ const ConstString &name = m_mangled.GetName();
+ if (name)
+ return name;
return m_name;
}