This is the mail archive of the mailing list for the GDB project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v3 0/4] disasm, record: fix "record instruction-history /m"

On Tue, Oct 27, 2015 at 2:54 AM, Markus Metzger
<> 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(-)


The series is approved, thanks for your patience!

There's one nit in one patch, pointed out separately.
Ok with that fixed.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]