From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 80436 invoked by alias); 28 Apr 2016 15:30:30 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 80273 invoked by uid 89); 28 Apr 2016 15:30:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY autolearn=no version=3.3.2 spammy=2015-2016, agent X-HELO: usplmg20.ericsson.net Received: from usplmg20.ericsson.net (HELO usplmg20.ericsson.net) (198.24.6.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Thu, 28 Apr 2016 15:30:20 +0000 Received: from EUSAAHC006.ericsson.se (Unknown_Domain [147.117.188.90]) by usplmg20.ericsson.net (Symantec Mail Security) with SMTP id 03.3A.09012.34522275; Thu, 28 Apr 2016 16:59:15 +0200 (CEST) Received: from [142.133.110.144] (147.117.188.8) by smtp-am.internal.ericsson.com (147.117.188.92) with Microsoft SMTP Server id 14.3.248.2; Thu, 28 Apr 2016 11:30:17 -0400 Subject: Re: [PATCH 2/2] Add test for fast tracepoint enable/disable To: Yao Qi References: <1459351018-23718-1-git-send-email-simon.marchi@ericsson.com> <1459351018-23718-2-git-send-email-simon.marchi@ericsson.com> <86k2kirk18.fsf@gmail.com> CC: From: Simon Marchi Message-ID: <57222C88.9010706@ericsson.com> Date: Thu, 28 Apr 2016 15:30:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <86k2kirk18.fsf@gmail.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2016-04/txt/msg00638.txt.bz2 On 16-03-31 06:58 AM, Yao Qi wrote: > Simon Marchi writes: > >> +# Check that the target supports trace. >> +if { [gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } { >> + untested "Couldn't compile test program" >> + return -1 >> +} > > Why do you compile program with pthread? > >> + >> +clean_restart ${testfile} >> + >> +if ![runto_main] { >> + fail "Can't run to main to check for trace support" >> + return -1 >> +} >> + >> +if ![gdb_target_supports_trace] { >> + unsupported "target does not support trace" >> + return -1 >> +} >> + >> +# Compile the test case with the in-process agent library. >> +set libipa [get_in_proc_agent] >> +gdb_load_shlibs $libipa >> + >> +lappend options shlib=$libipa >> + >> +if { [gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } { >> + untested "Couldn't compile test program with in-process agent library" >> + return -1 >> +} > > Likewise. > >> + >> +# This test makes sure that disabling and enabling fast tracepoints works >> +# correctly. >> + >> +proc test_ftrace_enable_disable { } { > > Can you extend the test to cover normal tracepoint as well? It > shouldn't be hard. You can just pass argument "type" to "proc > test_trace_enable_disable" like, > > proc test_trace_enable_disable { type } { > > and the type can be "trace" and "ftrace". > Hi Yao, Here's the v2. Changes: * gdb_compile instead of gdb_compile_pthreads. * Test with both trace and ftrace commands. >From 991319e45356adcdb85c5db1e377e72fcd978f07 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Wed, 30 Mar 2016 10:24:05 -0400 Subject: [PATCH] Add test for tracepoint enable/disable This patch adds a test for tracepoints enabling/disabling, which didn't work properly for fast tracepoints on big endian systems. gdb/testsuite/ChangeLog: * gdb.trace/trace-enable-disable.exp: New file. * gdb.trace/trace-enable-disable.c: New file. --- gdb/testsuite/gdb.trace/trace-enable-disable.c | 38 +++++++ gdb/testsuite/gdb.trace/trace-enable-disable.exp | 128 +++++++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 gdb/testsuite/gdb.trace/trace-enable-disable.c create mode 100644 gdb/testsuite/gdb.trace/trace-enable-disable.exp diff --git a/gdb/testsuite/gdb.trace/trace-enable-disable.c b/gdb/testsuite/gdb.trace/trace-enable-disable.c new file mode 100644 index 0000000..23453db --- /dev/null +++ b/gdb/testsuite/gdb.trace/trace-enable-disable.c @@ -0,0 +1,38 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2016 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include "trace-common.h" + +static void +break_here (void) +{ +} + +int +main (void) +{ + int i; + + for (i = 0; i < 100; i++) + { + FAST_TRACEPOINT_LABEL(point_a); + FAST_TRACEPOINT_LABEL(point_b); + break_here (); + } + + return 0; +} diff --git a/gdb/testsuite/gdb.trace/trace-enable-disable.exp b/gdb/testsuite/gdb.trace/trace-enable-disable.exp new file mode 100644 index 0000000..0c35c92 --- /dev/null +++ b/gdb/testsuite/gdb.trace/trace-enable-disable.exp @@ -0,0 +1,128 @@ +# Copyright 2015-2016 Free Software Foundation, Inc. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +load_lib "trace-support.exp" + +standard_testfile +set executable $testfile +set expfile $testfile.exp + +# Some targets have leading underscores on assembly symbols. +set options [list debug [gdb_target_symbol_prefix_flags]] + +# Check that the target supports trace. +if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } { + untested "Couldn't compile test program" + return -1 +} + +clean_restart ${testfile} + +if ![runto_main] { + fail "Can't run to main to check for trace support" + return -1 +} + +if ![gdb_target_supports_trace] { + unsupported "target does not support trace" + return -1 +} + +# Compile the test case with the in-process agent library. +set libipa [get_in_proc_agent] +gdb_load_shlib $libipa + +lappend options shlib=$libipa + +if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } { + untested "Couldn't compile test program with in-process agent library" + return -1 +} + +# This test makes sure that disabling and enabling tracepoints works +# correctly. TRACEPOINT_CMD is the command used to set tracepoints +# (e.g. trace or ftrace). + +proc test_tracepoint_enable_disable { tracepoint_cmd } { + with_test_prefix "test_tracepoint_enable_disable $tracepoint_cmd" { + global executable + clean_restart ${executable} + + set expected 0 + + if ![runto_main] { + fail "Can't run to main." + return -1 + } + + gdb_test "$tracepoint_cmd point_a" "(Tracepoint|Fast tracepoint) 2.*" + gdb_test "$tracepoint_cmd point_b" "(Tracepoint|Fast tracepoint) 3.*" + gdb_breakpoint "break_here" + gdb_test_no_output "tstart" + + # Test that tracepoints start enabled + with_test_prefix "start" { + gdb_continue "break_here" + incr expected 2 + gdb_test "tstatus" "Collected $expected trace frames.*" + } + + # Test that disabling works + with_test_prefix "disable #1" { + gdb_test_no_output "disable 2" + gdb_continue "break_here" + incr expected 1 + gdb_test "tstatus" "Collected $expected trace frames.*" + } + + with_test_prefix "disable #2" { + gdb_test_no_output "disable 3" + gdb_continue "break_here" + gdb_test "tstatus" "Collected $expected trace frames.*" + } + + # Test that disabling an already disabled tracepoint works + with_test_prefix "disable #3" { + gdb_test_no_output "disable 2" + gdb_continue "break_here" + gdb_test "tstatus" "Collected $expected trace frames.*" + } + + # Test that enabling works + with_test_prefix "enable #1" { + gdb_test_no_output "enable 2" + gdb_continue "break_here" + incr expected 1 + gdb_test "tstatus" "Collected $expected trace frames.*" + } + + with_test_prefix "enable #2" { + gdb_test_no_output "enable 3" + gdb_continue "break_here" + incr expected 2 + gdb_test "tstatus" "Collected $expected trace frames.*" + } + + # Test that enabling an already enabled tracepoint works + with_test_prefix "enable #3" { + gdb_test_no_output "enable 3" + gdb_continue "break_here" + incr expected 2 + gdb_test "tstatus" "Collected $expected trace frames.*" + } + } +} + +test_tracepoint_enable_disable trace +test_tracepoint_enable_disable ftrace -- 2.8.1