diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-06-08 19:07:33 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2012-06-08 19:07:33 +0000 |
commit | a081f3cd858e5d5ffb846228dcfd00b30c5fb9bb (patch) | |
tree | b355a824a5712ccb6b3e0e0d2fb6bd2826f09c28 | |
parent | 9761def5776d9cd260a6e32bddbc8cc5ad6e0329 (diff) | |
download | fsf-binutils-gdb-a081f3cd858e5d5ffb846228dcfd00b30c5fb9bb.zip fsf-binutils-gdb-a081f3cd858e5d5ffb846228dcfd00b30c5fb9bb.tar.gz fsf-binutils-gdb-a081f3cd858e5d5ffb846228dcfd00b30c5fb9bb.tar.bz2 |
* 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.
-rw-r--r-- | binutils/ChangeLog | 8 | ||||
-rw-r--r-- | binutils/dwarf.c | 41 |
2 files changed, 48 insertions, 1 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 14d720f..32ca87c 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,11 @@ +2012-06-08 Jakub Jelinek <jakub@redhat.com> + + * 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. + 2012-06-01 Alan Modra <amodra@gmail.com> * addr2line.c (translate_addresses): Truncate input addresses to diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 072a1a7..2eb9ec8 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) { |