summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/dwarf2.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index dcb5573520..ad1c2517d0 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-20 James E. Wilson <wilson@specifix.com>
+
+ * dwarf2.c (find_abstract_instance_name): Don't early exit when name
+ set. For DW_AT_name case, only set name if not already set. Handle
+ DW_AT_MIPS_linkage_name.
+
2005-09-20 Alan Modra <amodra@bigpond.net.au>
* elflink.c (_bfd_elf_merge_symbol): Simplify.
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 0a0fc12b1c..ca792f4b46 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -1568,17 +1568,22 @@ find_abstract_instance_name (struct comp_unit *unit, bfd_uint64_t die_ref)
}
else
{
- for (i = 0; i < abbrev->num_attrs && !name; ++i)
+ for (i = 0; i < abbrev->num_attrs; ++i)
{
info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr);
switch (attr.name)
{
case DW_AT_name:
- name = attr.u.str;
+ /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */
+ if (name == NULL)
+ name = attr.u.str;
break;
case DW_AT_specification:
name = find_abstract_instance_name (unit, attr.u.val);
break;
+ case DW_AT_MIPS_linkage_name:
+ name = attr.u.str;
+ break;
default:
break;
}