[PATCH V3 0/9] Add support for DTrace USDT probes to gdb

Jose E. Marchesi jose.marchesi@oracle.com
Tue Oct 28 13:44:00 GMT 2014


[Changes from V2:
- (this time for real) simplified the phrasing in the
  documentation about that systemtap probes do not support "the notion
  of" disabling or enabling a probe.  Now it just says that stap
  probes cannot be disabled.
- Some other typos and improvements in the docs spotted by Eli.
- Fixed two implicit comparisons in gdb/probe.c.
- The args_expr_built field of the struct dtrace_probe is now an
  unsigned integer.
- Comments documenting enum entries and struct fields relocated to
  be on top of each item.
- Added a new column to the output of `info probes' that says the
  type of the probe: either stap or dtrace.
- Use read_code instead of read_memory when reading code to avoid
  bypassing the code cache.
- Avoid duplication of instruction sequences in amd64-linux-tdep.c.
- Make the amd64_dtrace_* functions in amd64-linux-tdep.c static,
  since they are not used anywhere else.
- dtrace-probe.c does not implement dummy versions of the
  set_semaphore and clear_semaphore anymore, as per the recent patch
  from Sergio.
- The DOF reader in dtrace-probe.c now checks that the encoding mark
  in the DOF header has a valid value.
- Use remote_exec instead of an "exec ..." to invoke tools on the host
  in the testcases.
- Do not generate files in the ${srcdir} in the testcases.
- The generation of programs with DTrace static probes has been
  factorized out in a new function in testsuite/lib/dtrace.exp:
  dtrace_build_usdt_test_program.
- A script called `pdtrace' has been added to the patch series.  It is
  a test tool that implements a subset of the functionality provided
  by the proprietary dtrace command: the generation of an ELF file
  containing an embedded dtrace program (equivalent to dtrace -G) and
  the generation of a header file with definitions for static probes
  (equivalent to dtrace -h).  This allows to generate DTrace static
  probes without having to use the user-level DTrace components.  The
  generated objects are 100% compatible with DTrace and can be traced
  by the dtrace kernel module like if they were generated by dtrace.
  dtrace_build_usdt_test_program will first try to use the real dtrace
  program and, if it is not found in the host system, will use pdtrace
  instead.]

This patch series introduces support in GDB for a new type of probe:
DTrace USDT probes.

The first three patches do some changes to the existing probe.[ch]
code, fixing some minor problems associated to support several probe
types, having several probes of different types defined in the same
object and supporting the notion of enabling and disabling probes.

The rest of the patches are the implementation of the new probe type,
including target support for x86_64 targets, a testsuite and
documentation.

Tested on x86_64-*-linux-gnu.
No visible regressions.


Jose E. Marchesi (9):
  Adapt `info probes' to support printing probes of different types.
  Move `compute_probe_arg' and `compile_probe_arg' to probe.c
  New commands `enable probe' and `disable probe'.
  New gdbarch functions: dtrace_parse_probe_argument,
    dtrace_probe_is_enabled, dtrace_enable_probe, dtrace_disable_probe.
  New probe type: DTrace USDT probes.
  Support for DTrace USDT probes in x86_64 targets.
  Simple testsuite for DTrace USDT probes.
  Documentation for DTrace USDT probes.
  Announce the DTrace USDT probes support in NEWS.

 gdb/ChangeLog                           |  112 ++++
 gdb/Makefile.in                         |    3 +-
 gdb/NEWS                                |    3 +
 gdb/amd64-linux-tdep.c                  |  148 +++++
 gdb/breakpoint.c                        |    3 +-
 gdb/configure                           |    2 +-
 gdb/configure.ac                        |    2 +-
 gdb/doc/ChangeLog                       |   13 +
 gdb/doc/gdb.texinfo                     |   85 ++-
 gdb/dtrace-probe.c                      |  909 +++++++++++++++++++++++++++
 gdb/gdbarch.c                           |  128 ++++
 gdb/gdbarch.h                           |   36 ++
 gdb/gdbarch.sh                          |   16 +
 gdb/probe.c                             |  338 +++++++++-
 gdb/probe.h                             |   20 +-
 gdb/stap-probe.c                        |  123 +---
 gdb/testsuite/ChangeLog                 |   14 +
 gdb/testsuite/gdb.base/dtrace-probe.c   |   38 ++
 gdb/testsuite/gdb.base/dtrace-probe.d   |   21 +
 gdb/testsuite/gdb.base/dtrace-probe.exp |  106 ++++
 gdb/testsuite/gdb.base/stap-probe.exp   |    2 +-
 gdb/testsuite/lib/dtrace.exp            |   71 +++
 gdb/testsuite/lib/pdtrace               | 1017 +++++++++++++++++++++++++++++++
 23 files changed, 3051 insertions(+), 159 deletions(-)
 create mode 100644 gdb/dtrace-probe.c
 create mode 100644 gdb/testsuite/gdb.base/dtrace-probe.c
 create mode 100644 gdb/testsuite/gdb.base/dtrace-probe.d
 create mode 100644 gdb/testsuite/gdb.base/dtrace-probe.exp
 create mode 100644 gdb/testsuite/lib/dtrace.exp
 create mode 100755 gdb/testsuite/lib/pdtrace

-- 
1.7.10.4



More information about the Gdb mailing list