aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/dwarf2.c13
2 files changed, 16 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 241924c..74ae25f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-21 Fred Fish <fnf@specifixinc.com>
+
+ * dwarf2.c (find_abstract_instance_name): Call recursively
+ to handle a DW_AT_specification.
+
2005-02-21 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
* elfxx-mips.c (ecoff_swap_rpdr_out, mips_elf_output_extsym,
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index be8ba38..fb5cf9f 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -1291,8 +1291,17 @@ find_abstract_instance_name (struct comp_unit *unit, bfd_uint64_t die_ref)
for (i = 0; i < abbrev->num_attrs && !name; ++i)
{
info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr);
- if (attr.name == DW_AT_name)
- name = attr.u.str;
+ switch (attr.name)
+ {
+ case DW_AT_name:
+ name = attr.u.str;
+ break;
+ case DW_AT_specification:
+ name = find_abstract_instance_name (unit, attr.u.val);
+ break;
+ default:
+ break;
+ }
}
}
}