forked from Imagelibrary/binutils-gdb
gdb/:
* disasm.c (gdb_print_insn): Return the number of branch delay slot instructions too. * disasm.h (gdb_print_insn): Update prototype. * printcmd.c (branch_delay_insns): New variable to record the number of delay slot instructions after disassembling a branch. (print_formatted): Record the number of branch delay slot instructions. (do_examine): When disassembling, if the last instruction disassembled has any branch delay slots, then bump the count so that they get disassembled too. * tui/tui-disasm.c (tui_disassemble): Update the call to gdb_print_insn(). * NEWS: Document the new behaviour. gdb/doc/: * gdb.texinfo (Examining Memory): Document the new behaviour. gdb/gdbtk/: * generic/gdbtk-cmds.c (gdbtk_load_asm): Update the call to gdb_print_insn().
This commit is contained in:
@@ -70,6 +70,10 @@ static char last_size = 'w';
|
||||
|
||||
static CORE_ADDR next_address;
|
||||
|
||||
/* Number of delay instructions following current disassembled insn. */
|
||||
|
||||
static int branch_delay_insns;
|
||||
|
||||
/* Last address examined. */
|
||||
|
||||
static CORE_ADDR last_examine_address;
|
||||
@@ -277,8 +281,9 @@ print_formatted (struct value *val, int format, int size,
|
||||
|
||||
/* We often wrap here if there are long symbolic names. */
|
||||
wrap_here (" ");
|
||||
next_address = VALUE_ADDRESS (val)
|
||||
+ gdb_print_insn (VALUE_ADDRESS (val), stream);
|
||||
next_address = (VALUE_ADDRESS (val)
|
||||
+ gdb_print_insn (VALUE_ADDRESS (val), stream,
|
||||
&branch_delay_insns));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -800,6 +805,10 @@ do_examine (struct format_data fmt, CORE_ADDR addr)
|
||||
release_value (last_examine_value);
|
||||
|
||||
print_formatted (last_examine_value, format, size, gdb_stdout);
|
||||
|
||||
/* Display any branch delay slots following the final insn. */
|
||||
if (format == 'i' && count == 1)
|
||||
count += branch_delay_insns;
|
||||
}
|
||||
printf_filtered ("\n");
|
||||
gdb_flush (gdb_stdout);
|
||||
|
||||
Reference in New Issue
Block a user