projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git]
/
gdb
/
disasm.c
diff --git
a/gdb/disasm.c
b/gdb/disasm.c
index 7dfbd2fb472101e0243607550c3f089a56b32374..143ba2f59b9534b7f0faad25aa52c291aa4b64f7 100644
(file)
--- a/
gdb/disasm.c
+++ b/
gdb/disasm.c
@@
-376,6
+376,12
@@
do_mixed_source_and_assembly_deprecated
if (le[i].line == le[i + 1].line && le[i].pc == le[i + 1].pc)
continue; /* Ignore duplicates. */
if (le[i].line == le[i + 1].line && le[i].pc == le[i + 1].pc)
continue; /* Ignore duplicates. */
+ /* Ignore non-statement line table entries. This means we print the
+ source line at the place where GDB would insert a breakpoint for
+ that line, which seems more intuitive. */
+ if (le[i].is_stmt == 0)
+ continue;
+
/* Skip any end-of-function markers. */
if (le[i].line == 0)
continue;
/* Skip any end-of-function markers. */
if (le[i].line == 0)
continue;
@@
-781,6
+787,11
@@
gdb_disassembler::gdb_disassembler (struct gdbarch *gdbarch,
disassemble_init_for_target (&m_di);
}
disassemble_init_for_target (&m_di);
}
+gdb_disassembler::~gdb_disassembler ()
+{
+ disassemble_free_target (&m_di);
+}
+
int
gdb_disassembler::print_insn (CORE_ADDR memaddr,
int *branch_delay_insns)
int
gdb_disassembler::print_insn (CORE_ADDR memaddr,
int *branch_delay_insns)
@@
-908,7
+919,9
@@
gdb_buffered_insn_length (struct gdbarch *gdbarch,
gdb_buffered_insn_length_init_dis (gdbarch, &di, insn, max_len, addr,
&disassembler_options_holder);
gdb_buffered_insn_length_init_dis (gdbarch, &di, insn, max_len, addr,
&disassembler_options_holder);
- return gdbarch_print_insn (gdbarch, addr, &di);
+ int result = gdbarch_print_insn (gdbarch, addr, &di);
+ disassemble_free_target (&di);
+ return result;
}
char *
}
char *
This page took
0.024961 seconds
and
4
git commands to generate.