* dwarf2read.c (dwarf_decode_lines): Properly deal with
unknown standard opcodes.
This commit is contained in:
parent
1902c51fa6
commit
9aa1fe7eee
2 changed files with 26 additions and 9 deletions
|
@ -1,3 +1,8 @@
|
|||
2001-11-11 Geoffrey Keating <geoffk@redhat.com>
|
||||
|
||||
* dwarf2read.c (dwarf_decode_lines): Properly deal with
|
||||
unknown standard opcodes.
|
||||
|
||||
2001-11-11 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* README (alpha-dec-osf5.1): Mention -DUSE_LDR_ROUTINES.
|
||||
|
|
|
@ -3963,7 +3963,18 @@ dwarf_decode_lines (unsigned int offset, char *comp_dir, bfd *abfd,
|
|||
{
|
||||
op_code = read_1_byte (abfd, line_ptr);
|
||||
line_ptr += 1;
|
||||
switch (op_code)
|
||||
|
||||
if (op_code >= lh.opcode_base)
|
||||
{ /* Special operand. */
|
||||
adj_opcode = op_code - lh.opcode_base;
|
||||
address += (adj_opcode / lh.line_range)
|
||||
* lh.minimum_instruction_length;
|
||||
line += lh.line_base + (adj_opcode % lh.line_range);
|
||||
/* append row to matrix using current values */
|
||||
record_line (current_subfile, line, address);
|
||||
basic_block = 1;
|
||||
}
|
||||
else switch (op_code)
|
||||
{
|
||||
case DW_LNS_extended_op:
|
||||
line_ptr += 1; /* ignore length */
|
||||
|
@ -4061,14 +4072,15 @@ dwarf_decode_lines (unsigned int offset, char *comp_dir, bfd *abfd,
|
|||
address += read_2_bytes (abfd, line_ptr);
|
||||
line_ptr += 2;
|
||||
break;
|
||||
default: /* special operand */
|
||||
adj_opcode = op_code - lh.opcode_base;
|
||||
address += (adj_opcode / lh.line_range)
|
||||
* lh.minimum_instruction_length;
|
||||
line += lh.line_base + (adj_opcode % lh.line_range);
|
||||
/* append row to matrix using current values */
|
||||
record_line (current_subfile, line, address);
|
||||
basic_block = 1;
|
||||
default:
|
||||
{ /* Unknown standard opcode, ignore it. */
|
||||
int i;
|
||||
for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++)
|
||||
{
|
||||
(void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
|
||||
line_ptr += bytes_read;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue