From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26704 invoked by alias); 11 Sep 2014 19:26:02 -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 26694 invoked by uid 89); 11 Sep 2014 19:26:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: usevmg21.ericsson.net Received: from usevmg21.ericsson.net (HELO usevmg21.ericsson.net) (198.24.6.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Thu, 11 Sep 2014 19:26:00 +0000 Received: from EUSAAHC003.ericsson.se (Unknown_Domain [147.117.188.81]) by usevmg21.ericsson.net (Symantec Mail Security) with SMTP id F1.B9.25146.F4F91145; Thu, 11 Sep 2014 15:10:40 +0200 (CEST) Received: from [142.133.110.254] (147.117.188.8) by smtps-am.internal.ericsson.com (147.117.188.81) with Microsoft SMTP Server (TLS) id 14.3.174.1; Thu, 11 Sep 2014 15:25:58 -0400 Message-ID: <5411F745.1090502@ericsson.com> Date: Thu, 11 Sep 2014 19:26:00 -0000 From: Simon Marchi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 MIME-Version: 1.0 To: Doug Evans CC: Subject: Re: [PATCH v3] Introduce remote_target_is_gdbserver References: <1410447276-21821-1-git-send-email-simon.marchi@ericsson.com> In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2014-09/txt/msg00373.txt.bz2 On 14-09-11 11:56 AM, Doug Evans wrote: > Simon Marchi writes: >> This patch introduces a function in gdbserver-support.exp to find out >> whether the current target is GDBserver. >> >> The code was inspired from gdb.trace/qtor.exp, so it replaces the code >> there by a call to the new function. >> >> New in v3: >> - Remove useless "pass" in remote_target_is_gdbserver. >> - Coding style in qtro.exp (braces in condition). >> - Changelog entry about qtro.exp. >> >> gdb/testsuite/ChangeLog: >> >> * gdb.trace/qtro.exp: Replace gdbserver detection code by... >> * lib/gdbserver-support.exp (remote_target_is_gdbserver): New >> function. >> --- >> gdb/testsuite/gdb.trace/qtro.exp | 14 +------------- >> gdb/testsuite/lib/gdbserver-support.exp | 18 ++++++++++++++++++ >> 2 files changed, 19 insertions(+), 13 deletions(-) >> >> diff --git a/gdb/testsuite/gdb.trace/qtro.exp b/gdb/testsuite/gdb.trace/qtro.exp >> index 22b5051..700c157 100644 >> --- a/gdb/testsuite/gdb.trace/qtro.exp >> +++ b/gdb/testsuite/gdb.trace/qtro.exp >> @@ -98,19 +98,7 @@ if { $traceframe_info_supported == -1 } { >> } >> >> # Check whether we're testing with our own GDBserver. >> -set is_gdbserver -1 >> -set test "probe for GDBserver" >> -gdb_test_multiple "monitor help" $test { >> - -re "The following monitor commands are supported.*debug-hw-points.*remote-debug.*GDBserver.*$gdb_prompt $" { >> - set is_gdbserver 1 >> - pass $test >> - } >> - -re "$gdb_prompt $" { >> - set is_gdbserver 0 >> - pass $test >> - } >> -} >> -if { $is_gdbserver == -1 } { >> +if { ![remote_target_is_gdbserver] } { >> return -1 >> } >> >> diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp >> index 026a937..423c729 100644 >> --- a/gdb/testsuite/lib/gdbserver-support.exp >> +++ b/gdb/testsuite/lib/gdbserver-support.exp >> @@ -436,3 +436,21 @@ proc mi_gdbserver_start_multi { } { >> >> return [mi_gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport] >> } >> + >> +# Return true if the current remote target is an instance of gdbserver. >> + >> +proc remote_target_is_gdbserver { } { >> + global gdb_prompt >> + >> + set is_gdbserver 0 >> + set test "Probing for GDBserver" >> + >> + gdb_test_multiple "monitor help" $test { >> + -re "The following monitor commands are supported.*Quit GDBserver.*$gdb_prompt $" { >> + set is_gdbserver 1 >> + } >> + -re "$gdb_prompt $" { >> + } >> + } >> + return $is_gdbserver >> +} > > Hi. > > The original code allowed for a -1 value of is_gdbserver > to handle the case of "can't tell" (e.g. for a timeout or > whatever, IIUC). > While IWBN to not complicate the API of > remote_target_is_gdbserver by requiring the caller > to have to handle this, maybe it'd be best if the caller > did have to watch for -1 and not just assume "not gdbserver": > maybe a different test will want to handle all three cases > (can't-tell, no, or yes). > E.g., initialize is_gdbserver to -1, and watch for a -1 value > before returning. > > proc remote_target_is_gdbserver { } { > global gdb_prompt > > set is_gdbserver -1 > set test "Probing for GDBserver" > > gdb_test_multiple "monitor help" $test { > -re "The following monitor commands are supported.*Quit GDBserver.*$gdb_prompt $" { > set is_gdbserver 1 > } > -re "$gdb_prompt $" { > set is_gdbserver 0 > } > } > if { $is_gdbserver == -1 } { > verbose -log "can't tell if using gdbserver or not" # or whatever > set $is_gdbserver 0 # <<<< this part I'm not sure about > } > return $is_gdbserver I am confused. Do you want remote_target_is_gdbserver to return -1 in case of error, or not. The paragraph seems to say yes, but the code seems to say no. > Also, I see an earlier version of the patch first > did a check for [is_remote_target] before calling > target_is_gdbserver, and the new version of the > patch changes that to just calling remote_target_is_gdbserver. > Since the function remote_target_is_gdbserver can > be used regardless of whether the target is remote, > let's remove "remote_" from the name. > ie., go back to target_is_gdbserver. Indeed, if the name is target_is_gdbserver, it would be clearer that you can call it in any situation, even if you are using native. However, in that particular case, I removed the [is_remote target] check, since there is an equivalent one earlier in the test. > Hmmm, another thought. > Since this requires an exchange with the target, > IWBN to cache the result. > There's support for doing this in the harness, > grep for gdb_caching_proc. Interesting, I will check that.