This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[Patch]: bfd/dwarf2.c: ignore DW_LNE_HP_source_file_correlation
- From: Tristan Gingold <gingold at adacore dot com>
- To: binutils Development <binutils at sourceware dot org>
- Date: Fri, 20 Apr 2012 11:59:50 +0200
- Subject: [Patch]: bfd/dwarf2.c: ignore DW_LNE_HP_source_file_correlation
Hi,
HP compilers (I think only on VMS) have added a private extended opcode to LN.
Currently, the dwarf2 reader in bfd emits an error message for unknown LNE and fails.
With this patch, it will ignore this private opcode.
No regressions while cross testing for x86_64-elf.
Ok for trunk ?
Tristan.
bfd/
2012-02-06 Tristan Gingold <gingold@adacore.com>
* dwarf2.c (decode_line_info): Ignore
DW_LNE_HP_source_file_correlation.
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 66fd16f..dc71073 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -1401,6 +1401,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash)
unsigned int i, bytes_read, offset_size;
char *cur_file, *cur_dir;
unsigned char op_code, extended_op, adj_opcode;
+ unsigned int exop_len;
bfd_size_type amt;
if (! read_section (abfd, &stash->debug_sections[debug_line],
@@ -1604,8 +1605,8 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash)
else switch (op_code)
{
case DW_LNS_extended_op:
- /* Ignore length. */
- line_ptr += 1;
+ exop_len = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+ line_ptr += bytes_read;
extended_op = read_1_byte (abfd, line_ptr);
line_ptr += 1;
@@ -1658,6 +1659,9 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash)
(void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
line_ptr += bytes_read;
break;
+ case DW_LNE_HP_source_file_correlation:
+ line_ptr += exop_len - 1;
+ break;
default:
(*_bfd_error_handler) (_("Dwarf Error: mangled line number section."));
bfd_set_error (bfd_error_bad_value);