Commit 00cf2da5 authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

dbghelp: Dwarf & typedefs.

- removed lookup for name for the const modifier - hard wire dwarf-reference to our pointer types
parent d396ec31
...@@ -1137,9 +1137,8 @@ static struct symt_array* dwarf2_parse_array_type(struct module* module, dwarf2_ ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment