summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserJava.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserJava.cpp')
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserJava.cpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserJava.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserJava.cpp
index a12654996f7..1bb107966a9 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserJava.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserJava.cpp
@@ -77,7 +77,7 @@ DWARFASTParserJava::ParseArrayTypeFromDIE(const DWARFDIE &die)
dwarf->m_die_to_type[die.GetDIE()] = DIE_IS_BEING_PARSED;
ConstString linkage_name;
- lldb::user_id_t type_die_offset = DW_INVALID_OFFSET;
+ DWARFFormValue type_attr_value;
lldb::addr_t data_offset = LLDB_INVALID_ADDRESS;
DWARFExpression length_expression(die.GetCU());
@@ -95,7 +95,7 @@ DWARFASTParserJava::ParseArrayTypeFromDIE(const DWARFDIE &die)
linkage_name.SetCString(form_value.AsCString());
break;
case DW_AT_type:
- type_die_offset = form_value.Reference();
+ type_attr_value = form_value;
break;
case DW_AT_data_member_location:
data_offset = form_value.Unsigned();
@@ -140,7 +140,8 @@ DWARFASTParserJava::ParseArrayTypeFromDIE(const DWARFDIE &die)
}
}
- Type *element_type = dwarf->ResolveTypeUID(type_die_offset);
+ DIERef type_die_ref(type_attr_value);
+ Type *element_type = dwarf->ResolveTypeUID(type_die_ref);
if (!element_type)
return nullptr;
@@ -150,7 +151,7 @@ DWARFASTParserJava::ParseArrayTypeFromDIE(const DWARFDIE &die)
Declaration decl;
TypeSP type_sp(new Type(die.GetID(), dwarf, array_compiler_type.GetTypeName(), -1, nullptr,
- dwarf->MakeUserID(type_die_offset), Type::eEncodingIsUID, &decl,
+ type_die_ref.GetUID(dwarf), Type::eEncodingIsUID, &decl,
array_compiler_type, Type::eResolveStateFull));
type_sp->SetEncodingType(element_type);
return type_sp;
@@ -163,7 +164,7 @@ DWARFASTParserJava::ParseReferenceTypeFromDIE(const DWARFDIE &die)
dwarf->m_die_to_type[die.GetDIE()] = DIE_IS_BEING_PARSED;
Declaration decl;
- lldb::user_id_t type_die_offset = DW_INVALID_OFFSET;
+ DWARFFormValue type_attr_value;
DWARFAttributes attributes;
const size_t num_attributes = die.GetAttributes(attributes);
@@ -176,7 +177,7 @@ DWARFASTParserJava::ParseReferenceTypeFromDIE(const DWARFDIE &die)
switch (attr)
{
case DW_AT_type:
- type_die_offset = form_value.Reference();
+ type_attr_value = form_value;
break;
default:
assert(false && "Unsupported attribute for DW_TAG_array_type");
@@ -184,14 +185,15 @@ DWARFASTParserJava::ParseReferenceTypeFromDIE(const DWARFDIE &die)
}
}
- Type *pointee_type = dwarf->ResolveTypeUID(type_die_offset);
+ DIERef type_die_ref(type_attr_value);
+ Type *pointee_type = dwarf->ResolveTypeUID(type_die_ref);
if (!pointee_type)
return nullptr;
CompilerType pointee_compiler_type = pointee_type->GetForwardCompilerType();
CompilerType reference_compiler_type = m_ast.CreateReferenceType(pointee_compiler_type);
TypeSP type_sp(new Type(die.GetID(), dwarf, reference_compiler_type.GetTypeName(), -1, nullptr,
- dwarf->MakeUserID(type_die_offset), Type::eEncodingIsUID, &decl,
+ type_die_ref.GetUID(dwarf), Type::eEncodingIsUID, &decl,
reference_compiler_type, Type::eResolveStateFull));
type_sp->SetEncodingType(pointee_type);
return type_sp;
@@ -463,7 +465,7 @@ DWARFASTParserJava::ParseChildMembers(const DWARFDIE &parent_die, CompilerType &
case DW_TAG_member:
{
const char *name = nullptr;
- lldb::user_id_t encoding_uid = LLDB_INVALID_UID;
+ DWARFFormValue encoding_uid;
uint32_t member_byte_offset = UINT32_MAX;
DWARFExpression member_location_expression(dwarf_cu);
bool artificial = true;
@@ -481,7 +483,7 @@ DWARFASTParserJava::ParseChildMembers(const DWARFDIE &parent_die, CompilerType &
name = form_value.AsCString();
break;
case DW_AT_type:
- encoding_uid = form_value.Reference();
+ encoding_uid = form_value;
break;
case DW_AT_data_member_location:
if (form_value.BlockData())
@@ -508,7 +510,7 @@ DWARFASTParserJava::ParseChildMembers(const DWARFDIE &parent_die, CompilerType &
m_ast.SetDynamicTypeId(compiler_type, member_location_expression);
else
{
- if (Type *member_type = die.ResolveTypeUID(encoding_uid))
+ if (Type *member_type = die.ResolveTypeUID(DIERef(encoding_uid)))
m_ast.AddMemberToObject(compiler_type, ConstString(name), member_type->GetFullCompilerType(),
member_byte_offset);
}
@@ -516,7 +518,7 @@ DWARFASTParserJava::ParseChildMembers(const DWARFDIE &parent_die, CompilerType &
}
case DW_TAG_inheritance:
{
- lldb::user_id_t encoding_uid = LLDB_INVALID_UID;
+ DWARFFormValue encoding_uid;
uint32_t member_byte_offset = UINT32_MAX;
DWARFAttributes attributes;
@@ -529,7 +531,7 @@ DWARFASTParserJava::ParseChildMembers(const DWARFDIE &parent_die, CompilerType &
switch (attributes.AttributeAtIndex(i))
{
case DW_AT_type:
- encoding_uid = form_value.Reference();
+ encoding_uid = form_value;
break;
case DW_AT_data_member_location:
member_byte_offset = form_value.Unsigned();
@@ -543,7 +545,7 @@ DWARFASTParserJava::ParseChildMembers(const DWARFDIE &parent_die, CompilerType &
}
}
}
- if (Type *base_type = die.ResolveTypeUID(encoding_uid))
+ if (Type *base_type = die.ResolveTypeUID(DIERef(encoding_uid)))
m_ast.AddBaseClassToObject(compiler_type, base_type->GetFullCompilerType(), member_byte_offset);
break;
}
OpenPOWER on IntegriCloud