Fix a bug displaying the interpretation of a CFA block that just contains DW_CFA_NOP instructions.
* dwarf.c (display_debug_frames): Do not display any interpretation if the block consists solely of DW__CFA_NOPs.
This commit is contained in:
parent
5b677558bc
commit
5b6312fd20
2 changed files with 14 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
2016-06-02 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* dwarf.c (display_debug_frames): Do not display any
|
||||
interpretation if the block consists solely of DW__CFA_NOPs.
|
||||
|
||||
2016-05-31 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* objcopy.c: Formatting, whitespace throughout.
|
||||
|
|
|
@ -5780,6 +5780,7 @@ display_debug_frames (struct dwarf_section *section,
|
|||
unsigned int encoded_ptr_size = saved_eh_addr_size;
|
||||
unsigned int offset_size;
|
||||
unsigned int initial_length_size;
|
||||
bfd_boolean all_nops;
|
||||
|
||||
saved_start = start;
|
||||
|
||||
|
@ -6213,6 +6214,8 @@ display_debug_frames (struct dwarf_section *section,
|
|||
start = tmp;
|
||||
}
|
||||
|
||||
all_nops = TRUE;
|
||||
|
||||
/* Now we know what registers are used, make a second pass over
|
||||
the chunk, this time actually printing out the info. */
|
||||
|
||||
|
@ -6231,6 +6234,10 @@ display_debug_frames (struct dwarf_section *section,
|
|||
if (op & 0xc0)
|
||||
op &= 0xc0;
|
||||
|
||||
/* Make a note if something other than DW_CFA_nop happens. */
|
||||
if (op != DW_CFA_nop)
|
||||
all_nops = FALSE;
|
||||
|
||||
/* Warning: if you add any more cases to this switch, be
|
||||
sure to add them to the corresponding switch above. */
|
||||
switch (op)
|
||||
|
@ -6661,7 +6668,8 @@ display_debug_frames (struct dwarf_section *section,
|
|||
}
|
||||
}
|
||||
|
||||
if (do_debug_frames_interp)
|
||||
/* Interpret the CFA - as long as it is not completely full of NOPs. */
|
||||
if (do_debug_frames_interp && ! all_nops)
|
||||
frame_display_row (fc, &need_col_headers, &max_regs);
|
||||
|
||||
start = block_end;
|
||||
|
|
Loading…
Reference in a new issue