This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v3 0/4] disasm, record: fix "record instruction-history /m"
- From: Doug Evans <dje at google dot com>
- To: Markus Metzger <markus dot t dot metzger at intel dot com>
- Cc: gdb-patches <gdb-patches at sourceware dot org>, Pedro Alves <palves at redhat dot com>
- Date: Sun, 1 Nov 2015 13:57:40 -0800
- Subject: Re: [PATCH v3 0/4] disasm, record: fix "record instruction-history /m"
- Authentication-results: sourceware.org; auth=none
- References: <1445939653-15126-1-git-send-email-markus dot t dot metzger at intel dot com>
On Tue, Oct 27, 2015 at 2:54 AM, Markus Metzger
<markus.t.metzger@intel.com> wrote:
> Change to v2:
> - renamed gdb_print_insn_tuple to gdb_pretty_print_insn
> - added comments
>
> The /m modifier interleaves source lines with the disassembly of recorded
> instructions. This calls disasm.c's do_mixed_source_and_assembly once for
> each recorded instruction to be printed.
>
> The latter really does a source print with intermixed disassembly. To that
> purpose, it may reorder instructions to better match the source. This doesn't
> work for printing a single instruction. The output also interferes with
> "record instruction-history" specific extensions.
>
> Change record instruction-history /m to use its own simple source interleaving
> algorithm. The most important part is that instructions are printed in
> the order in which they were executed. Before each instruction, we print
> a range of source lines that are attributed to the instruction's PC. If the
> source line range has already been printed (or skipped) for the previous
> instruction, we skip it.
>
> This is a mixture of an earlier RFC that added source interleaving to the
> "record instruction-history" command and version 1 of this patch series that
> tried to modify Doug Evans new "disassembly" source interleaving algorithm and
> use it for "record instruction-history", as well.
>
> We extend disasm.c's insn tuple printing and use it for printing a single
> instruction. To also share the source interleaving algorithm, we'd need to
> change it significantly. When building a hash table of source lines of the
> memory range to disassemble and when inserting lines without source code, the
> algorithm assumes that instructions are printed in the order in which they
> appear in memory. The "record instruction-history" command needs to print
> instructions in the order in which they retired.
>
> I propose to leave the two source interleaving algorithms separate.
>
> Markus Metzger (4):
> disasm: split dump_insns
> disasm: add struct disasm_insn to describe to-be-disassembled
> instruction
> btrace: change record instruction-history /m
> btrace: add instruction-history /s and fix documentation
>
> gdb/NEWS | 3 +
> gdb/disasm.c | 199 +++++++++++++++++++++++++++++++--------------------
> gdb/disasm.h | 23 ++++++
> gdb/doc/gdb.texinfo | 14 ++++
> gdb/record-btrace.c | 200 ++++++++++++++++++++++++++++++++++++++++++++++------
> gdb/record.c | 5 +-
> 6 files changed, 345 insertions(+), 99 deletions(-)
Hi.
The series is approved, thanks for your patience!
There's one nit in one patch, pointed out separately.
Ok with that fixed.