dbghelp: Dwarf & typedefs.
- removed lookup for name for the const modifier - hard wire dwarf-reference to our pointer types
This commit is contained in:
parent
d396ec31f9
commit
00cf2da5d6
|
@ -1137,9 +1137,8 @@ static struct symt_array* dwarf2_parse_array_type(struct module* module, dwarf2_
|
||||||
return symt;
|
return symt;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct symt_typedef* dwarf2_parse_const_type(struct module* module, dwarf2_abbrev_entry_t* entry, dwarf2_parse_context_t* ctx)
|
static struct symt* dwarf2_parse_const_type(struct module* module, dwarf2_abbrev_entry_t* entry, dwarf2_parse_context_t* ctx)
|
||||||
{
|
{
|
||||||
struct symt_typedef* symt = NULL;
|
|
||||||
struct symt* ref_type = NULL;
|
struct symt* ref_type = NULL;
|
||||||
dwarf2_abbrev_entry_attr_t* attr = NULL;
|
dwarf2_abbrev_entry_attr_t* attr = NULL;
|
||||||
unsigned long next_sibling = 0;
|
unsigned long next_sibling = 0;
|
||||||
|
@ -1159,8 +1158,6 @@ static struct symt_typedef* dwarf2_parse_const_type(struct module* module, dwarf
|
||||||
dwarf2_parse_attr(attr, ctx);
|
dwarf2_parse_attr(attr, ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FIXME("need to generate a name\n");
|
|
||||||
symt = symt_new_typedef(module, ref_type, "");
|
|
||||||
|
|
||||||
if (entry->have_child) {
|
if (entry->have_child) {
|
||||||
FIXME("Unsupported children\n");
|
FIXME("Unsupported children\n");
|
||||||
|
@ -1169,12 +1166,12 @@ static struct symt_typedef* dwarf2_parse_const_type(struct module* module, dwarf
|
||||||
/** set correct data cursor */
|
/** set correct data cursor */
|
||||||
dwarf2_check_sibling(ctx, next_sibling);
|
dwarf2_check_sibling(ctx, next_sibling);
|
||||||
|
|
||||||
return symt;
|
return ref_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct symt_typedef* dwarf2_parse_reference_type(struct module* module, dwarf2_abbrev_entry_t* entry, dwarf2_parse_context_t* ctx)
|
static struct symt* dwarf2_parse_reference_type(struct module* module, dwarf2_abbrev_entry_t* entry, dwarf2_parse_context_t* ctx)
|
||||||
{
|
{
|
||||||
struct symt_typedef* symt = NULL;
|
struct symt* symt = NULL;
|
||||||
struct symt* ref_type = NULL;
|
struct symt* ref_type = NULL;
|
||||||
dwarf2_abbrev_entry_attr_t* attr = NULL;
|
dwarf2_abbrev_entry_attr_t* attr = NULL;
|
||||||
unsigned long next_sibling = 0;
|
unsigned long next_sibling = 0;
|
||||||
|
@ -1197,8 +1194,8 @@ static struct symt_typedef* dwarf2_parse_reference_type(struct module* module, d
|
||||||
dwarf2_parse_attr(attr, ctx);
|
dwarf2_parse_attr(attr, ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FIXME("need to generate a name\n");
|
/* FIXME: for now, we hard-wire C++ references to pointers */
|
||||||
symt = symt_new_typedef(module, ref_type, "");
|
symt = &symt_new_pointer(module, ref_type)->symt;
|
||||||
|
|
||||||
if (entry->have_child) {
|
if (entry->have_child) {
|
||||||
FIXME("Unsupported children\n");
|
FIXME("Unsupported children\n");
|
||||||
|
@ -2039,14 +2036,14 @@ static void dwarf2_parse_compiland_content(struct module* module, const dwarf2_a
|
||||||
break;
|
break;
|
||||||
case DW_TAG_const_type:
|
case DW_TAG_const_type:
|
||||||
{
|
{
|
||||||
struct symt_typedef* symt = dwarf2_parse_const_type(module, entry, ctx);
|
struct symt* symt = dwarf2_parse_const_type(module, entry, ctx);
|
||||||
dwarf2_add_symt_ref(module, entry_ref, &symt->symt);
|
dwarf2_add_symt_ref(module, entry_ref, symt);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DW_TAG_reference_type:
|
case DW_TAG_reference_type:
|
||||||
{
|
{
|
||||||
struct symt_typedef* symt = dwarf2_parse_reference_type(module, entry, ctx);
|
struct symt* symt = dwarf2_parse_reference_type(module, entry, ctx);
|
||||||
dwarf2_add_symt_ref(module, entry_ref, &symt->symt);
|
dwarf2_add_symt_ref(module, entry_ref, symt);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DW_TAG_enumeration_type:
|
case DW_TAG_enumeration_type:
|
||||||
|
|
Loading…
Reference in New Issue