summaryrefslogtreecommitdiff
path: root/binutils/dwarf.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-06-08 19:07:33 +0000
committerJakub Jelinek <jakub@redhat.com>2012-06-08 19:07:33 +0000
commit77ec07e03625b3782d127e68f5c492c4f7536856 (patch)
treeb5a8b5b7b93e18ec8f7fb36183d1f67ba6b2c62a /binutils/dwarf.c
parented7143bb817165377e35d13e29666289d1829ff4 (diff)
downloadbinutils-redhat-77ec07e03625b3782d127e68f5c492c4f7536856.tar.gz
* dwarf.c (read_and_display_attr_value): Handle
DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt. (display_debug_macro): Handle DW_MACRO_GNU_define_indirect_alt, DW_MACRO_GNU_undef_indirect_alt and DW_MACRO_GNU_transparent_include_alt.
Diffstat (limited to 'binutils/dwarf.c')
-rw-r--r--binutils/dwarf.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 072a1a7506..2eb9ec8298 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -1284,6 +1284,8 @@ read_and_display_attr_value (unsigned long attribute,
case DW_FORM_strp:
case DW_FORM_sec_offset:
+ case DW_FORM_GNU_ref_alt:
+ case DW_FORM_GNU_strp_alt:
uvalue = byte_get (data, offset_size);
data += offset_size;
break;
@@ -1349,6 +1351,11 @@ read_and_display_attr_value (unsigned long attribute,
printf (" <0x%s>", dwarf_vmatoa ("x",uvalue));
break;
+ case DW_FORM_GNU_ref_alt:
+ if (!do_loc)
+ printf (" <alt 0x%s>", dwarf_vmatoa ("x",uvalue));
+ break;
+
case DW_FORM_ref1:
case DW_FORM_ref2:
case DW_FORM_ref4:
@@ -1458,6 +1465,12 @@ read_and_display_attr_value (unsigned long attribute,
}
break;
+ case DW_FORM_GNU_strp_alt:
+ if (!do_loc)
+ printf (_(" (alt indirect string, offset: 0x%s)"),
+ dwarf_vmatoa ("x", uvalue));
+ break;
+
case DW_FORM_indirect:
/* Handled above. */
break;
@@ -1796,7 +1809,8 @@ read_and_display_attr_value (unsigned long attribute,
case DW_AT_import:
{
- if (form == DW_FORM_ref_sig8)
+ if (form == DW_FORM_ref_sig8
+ || form == DW_FORM_GNU_ref_alt)
break;
if (form == DW_FORM_ref1
@@ -3629,6 +3643,31 @@ display_debug_macro (struct dwarf_section *section,
(unsigned long) offset);
break;
+ case DW_MACRO_GNU_define_indirect_alt:
+ lineno = read_leb128 (curr, &bytes_read, 0);
+ curr += bytes_read;
+ offset = byte_get (curr, offset_size);
+ curr += offset_size;
+ printf (_(" DW_MACRO_GNU_define_indirect_alt - lineno : %d macro offset : 0x%lx\n"),
+ lineno, (unsigned long) offset);
+ break;
+
+ case DW_MACRO_GNU_undef_indirect_alt:
+ lineno = read_leb128 (curr, &bytes_read, 0);
+ curr += bytes_read;
+ offset = byte_get (curr, offset_size);
+ curr += offset_size;
+ printf (_(" DW_MACRO_GNU_undef_indirect_alt - lineno : %d macro offset : 0x%lx\n"),
+ lineno, (unsigned long) offset);
+ break;
+
+ case DW_MACRO_GNU_transparent_include_alt:
+ offset = byte_get (curr, offset_size);
+ curr += offset_size;
+ printf (_(" DW_MACRO_GNU_transparent_include_alt - offset : 0x%lx\n"),
+ (unsigned long) offset);
+ break;
+
default:
if (extended_ops == NULL || extended_ops[op] == NULL)
{