This is the mail archive of the gdb-patches@sourceware.org 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]

[PATCH 0/8] [AArch64] Support fast tracepoints


Hi all,

This series of patches add support for fast tracepoints on aarch64-linux.
They are on top of
https://sourceware.org/ml/gdb-patches/2015-09/msg00239.html.

With this implementation, a tracepoint can only be placed in a +/- 128MB
range of the jump pad.  This is due to the unconditional branch instruction
being limited to a (26 bit << 2) offset from the current PC.

Patches #1 to #3 are AArch64 specific preparations.  The idea
is that some architecture specific code can be shared between GDB and
GDBserver.  Specifically, the decoding of some instructions is needed in GDB
when scanning the prologue and in GDBserver when relocating a PC relative
instruction.

The implementation of fast tracepoints is in patch #4 and patch #5 implements
native compilation of agent expressions.

Finally, the last patches enables some tests and add new ones.

The patches were tested on aarch64-linux in a remote configuration.  All
fast tracepoint tests are now enabled with no new failures.  The new test
cases were also tested on x86_64 and i386 with native-gdbserver.

Thanks,
Pierre

Pierre Langlois (8):
  [AArch64] Use debug_printf instead of fprintf_unfiltered
  [AArch64] Move instruction decoding into new arch/ directory
  [AArch64] Make aarch64_decode_adrp handle both ADR and ADRP
    instructions
  [GDBserver][AArch64] Add support for fast tracepoints
  [GDBserver][AArch64] Implement target_emit_ops
  [testsuite][AArch64] Enable fast tracepoint tests
  [testsuite] Add a gdb.trace test for instruction relocation
  [testsuite] Add a test case for fast tracepoints' locking mechanism

 gdb/Makefile.in                               |   13 +-
 gdb/aarch64-tdep.c                            |  394 +---
 gdb/arch/aarch64-insn.c                       |  227 +++
 gdb/arch/aarch64-insn.h                       |   39 +
 gdb/configure.tgt                             |    4 +-
 gdb/gdbserver/Makefile.in                     |   12 +
 gdb/gdbserver/configure.srv                   |    3 +-
 gdb/gdbserver/linux-aarch64-ipa.c             |  141 ++
 gdb/gdbserver/linux-aarch64-low.c             | 2667 ++++++++++++++++++++++++-
 gdb/testsuite/gdb.trace/change-loc.h          |    2 +
 gdb/testsuite/gdb.trace/ftrace-insn-reloc.c   |  508 +++++
 gdb/testsuite/gdb.trace/ftrace-insn-reloc.exp |  114 ++
 gdb/testsuite/gdb.trace/ftrace-lock.c         |  106 +
 gdb/testsuite/gdb.trace/ftrace-lock.exp       |   95 +
 gdb/testsuite/gdb.trace/ftrace.c              |    2 +
 gdb/testsuite/gdb.trace/ftrace.exp            |    2 +-
 gdb/testsuite/gdb.trace/pendshr1.c            |    2 +
 gdb/testsuite/gdb.trace/pendshr2.c            |    2 +
 gdb/testsuite/gdb.trace/range-stepping.c      |    2 +
 gdb/testsuite/gdb.trace/trace-break.c         |    4 +
 gdb/testsuite/gdb.trace/trace-condition.c     |    2 +
 gdb/testsuite/gdb.trace/trace-condition.exp   |    2 +
 gdb/testsuite/gdb.trace/trace-mt.c            |    2 +
 23 files changed, 4048 insertions(+), 297 deletions(-)
 create mode 100644 gdb/arch/aarch64-insn.c
 create mode 100644 gdb/arch/aarch64-insn.h
 create mode 100644 gdb/gdbserver/linux-aarch64-ipa.c
 create mode 100644 gdb/testsuite/gdb.trace/ftrace-insn-reloc.c
 create mode 100644 gdb/testsuite/gdb.trace/ftrace-insn-reloc.exp
 create mode 100644 gdb/testsuite/gdb.trace/ftrace-lock.c
 create mode 100644 gdb/testsuite/gdb.trace/ftrace-lock.exp

-- 
2.4.6


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