From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5888 invoked by alias); 28 Oct 2014 13:44:19 -0000 Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org Received: (qmail 5821 invoked by uid 89); 28 Oct 2014 13:44:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00,LIKELY_SPAM_BODY,RP_MATCHES_RCVD,SPF_PASS,UNPARSEABLE_RELAY autolearn=no version=3.3.2 X-HELO: aserp1040.oracle.com Received: from aserp1040.oracle.com (HELO aserp1040.oracle.com) (141.146.126.69) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Tue, 28 Oct 2014 13:44:09 +0000 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s9SDi7Sm012392 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 28 Oct 2014 13:44:07 GMT Received: from aserz7022.oracle.com (aserz7022.oracle.com [141.146.126.231]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s9SDi6nq020384 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Tue, 28 Oct 2014 13:44:06 GMT Received: from abhmp0020.oracle.com (abhmp0020.oracle.com [141.146.116.26]) by aserz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s9SDi60Z020372 for ; Tue, 28 Oct 2014 13:44:06 GMT Received: from localhost.localdomain (/10.175.175.133) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 28 Oct 2014 06:44:06 -0700 From: "Jose E. Marchesi" To: gdb@sourceware.org Subject: [PATCH V3 0/9] Add support for DTrace USDT probes to gdb Date: Tue, 28 Oct 2014 13:44:00 -0000 Message-Id: <1414504151-31155-1-git-send-email-jose.marchesi@oracle.com> X-IsSubscribed: yes X-SW-Source: 2014-10/txt/msg00103.txt.bz2 [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