From 43294ab7fc33c09cb2c44763c0a79ea0db679408 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Wed, 27 Apr 2011 12:09:48 +0000 Subject: 2011-04-27 Tristan Gingold * dwarf.c (process_extended_line_op): Handle DW_LNE_HP_source_file_correlation. --- binutils/ChangeLog | 5 +++++ binutils/dwarf.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) 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 + + * dwarf.c (process_extended_line_op): Handle + DW_LNE_HP_source_file_correlation. + 2011-04-27 Nick Clifton * 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 -- cgit v1.1