diff options
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/dwarf.c | 47 |
2 files changed, 52 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 8862fb9..ddfe2b9 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2011-04-27 Tristan Gingold <gingold@adacore.com> + + * dwarf.c (process_extended_line_op): Handle + DW_LNE_HP_source_file_correlation. + 2011-04-27 Nick Clifton <nickc@redhat.com> * po/da.po: Updated Danish translation. diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 8846e87..cc85525 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -324,6 +324,53 @@ process_extended_line_op (unsigned char *data, int is_stmt) case DW_LNE_HP_define_proc: printf ("DW_LNE_HP_define_proc\n"); break; + case DW_LNE_HP_source_file_correlation: + { + unsigned char *edata = data + len - bytes_read - 1; + + printf ("DW_LNE_HP_source_file_correlation\n"); + + while (data < edata) + { + unsigned int opc; + + opc = read_leb128 (data, & bytes_read, 0); + data += bytes_read; + + switch (opc) + { + case DW_LNE_HP_SFC_formfeed: + printf (" DW_LNE_HP_SFC_formfeed\n"); + break; + case DW_LNE_HP_SFC_set_listing_line: + printf (" DW_LNE_HP_SFC_set_listing_line (%s)\n", + dwarf_vmatoa ("u", + read_leb128 (data, & bytes_read, 0))); + data += bytes_read; + break; + case DW_LNE_HP_SFC_associate: + printf (" DW_LNE_HP_SFC_associate "); + printf (_("(%s"), + dwarf_vmatoa ("u", + read_leb128 (data, & bytes_read, 0))); + data += bytes_read; + printf (_(",%s"), + dwarf_vmatoa ("u", + read_leb128 (data, & bytes_read, 0))); + data += bytes_read; + printf (_(",%s)\n"), + dwarf_vmatoa ("u", + read_leb128 (data, & bytes_read, 0))); + data += bytes_read; + break; + default: + printf (" UNKNOW DW_LNE_HP_SFC opcode (%u)\n", opc); + data = edata; + break; + } + } + } + break; default: if (op_code >= DW_LNE_lo_user |