From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 124081 invoked by alias); 31 Mar 2016 18:01:29 -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 124065 invoked by uid 89); 31 Mar 2016 18:01:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=pthread_create, Hx-languages-length:2660, agent X-HELO: usplmg21.ericsson.net Received: from usplmg21.ericsson.net (HELO usplmg21.ericsson.net) (198.24.6.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Thu, 31 Mar 2016 18:01:18 +0000 Received: from EUSAAHC001.ericsson.se (Unknown_Domain [147.117.188.75]) by usplmg21.ericsson.net (Symantec Mail Security) with SMTP id 20.47.22441.7C56DF65; Thu, 31 Mar 2016 20:00:39 +0200 (CEST) Received: from [142.133.110.144] (147.117.188.8) by smtp-am.internal.ericsson.com (147.117.188.77) with Microsoft SMTP Server id 14.3.248.2; Thu, 31 Mar 2016 14:01:15 -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: <56FD65EB.4040109@ericsson.com> Date: Thu, 31 Mar 2016 18:01: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-03/txt/msg00603.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? Good question. Because the setup for testing fast tracepoints is tedious, I always use ftrace-lock.exp as a template, because it is relatively short. ftrace-lock.exp uses gdb_compile_pthreads. I think it makes sense, because the IPA starts a helper thread with pthread_create. Note that it still builds fine with gdb_compile instead of gdb_compile_pthreads, probably because libinproctrace.so has a DT_NEEDED for libpthreads.so, so it gets pulled in. But using gdb_compile_pthreads should add -pthread to the CFLAGS, which may impact compilation (e.g. choose re-entrant versions of functions). However, I just noticed that the command line includes -lpthreads instead of -pthreads: spawn gcc -Wl,--no-as-needed /home/emaisin/build/binutils-gdb/gdb/testsuite/../../../../src/binutils-gdb/gdb/testsuite/gdb.trace/ftrace-enable-disable.c \ /home/emaisin/build/binutils-gdb/gdb/testsuite/../gdbserver/libinproctrace.so -g \ -lpthread -lm -o \ /home/emaisin/build/binutils-gdb/gdb/testsuite/outputs/gdb.trace/ftrace-enable-disable/ftrace-enable-disable I think that to be more "correct", we should try -pthread before -lpthread in gdb_compile_pthreads... >> + >> +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. Same response :) >> + >> +# 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". I'll try to do that. Thanks, Simon