From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 83353 invoked by alias); 21 Feb 2018 12:29:52 -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 83321 invoked by uid 89); 21 Feb 2018 12:29:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-6.5 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_1,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=disconnect X-HELO: mx1.redhat.com Received: from mx3-rdu2.redhat.com (HELO mx1.redhat.com) (66.187.233.73) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 21 Feb 2018 12:29:49 +0000 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B876E40FB633; Wed, 21 Feb 2018 12:29:47 +0000 (UTC) Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1DBF9213AEE2; Wed, 21 Feb 2018 12:29:46 +0000 (UTC) Subject: Re: [PATCH v2 2/2] Make gdbserver work with filename-only binaries To: Sergio Durigan Junior , GDB Patches References: <20180210014241.19278-3-sergiodj@redhat.com> <20180212195733.23639-1-sergiodj@redhat.com> <20180212195733.23639-3-sergiodj@redhat.com> Cc: Simon Marchi From: Pedro Alves Message-ID: <87f198c5-3963-1c54-ff16-e3dcc8c9e632@redhat.com> Date: Wed, 21 Feb 2018 12:29:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <20180212195733.23639-3-sergiodj@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2018-02/txt/msg00289.txt.bz2 Hi Sergio, A few quick comments below. > @@ -3539,6 +3564,13 @@ captured_main (int argc, char *argv[]) > const char *selftest_filter = NULL; > #endif > > + current_directory = getcwd (NULL, 0); > + if (current_directory == NULL) > + { > + warning (_("%s: error finding working directory"), > + safe_strerror (errno)); I think it's much more usual to put the strerror string at the end of the warning rather than at the beginning. I.e., something like: warning (_("Could not find working directory: %s"), safe_strerror (errno)); See $ (cd gdb; git grep -3 "warning (" *.c | grep strerr -C 3) for example. >From the ongoing discussion, it sounded like this hunk may change in the next iteration, but I thought I'd still comment as it may help with future patches. > + } > +# We only test things locally, and on native-gdbserver > +if { [is_remote target] || [is_remote host] || ![use_gdb_stub] } { > + return 0 > +} I don't see why to restrict this to "only on native-gdbserver". The test is calling gdbserver_start etc. manually, so it should work when testing with any local board, I think? I.e., when testing with native or extended-remote too. For the latter, tests will usually call "disconnect". > + > +if { [prepare_for_testing "failed to prepare" $testfile $srcfile debug] } { > + return -1 > +} > + > +set target_exec [gdbserver_download_current_prog] > +set target_execname [file tail $target_exec] > +# We temporarily copy the file to our current directory > +file copy -force $target_exec [pwd] > +set res [gdbserver_start "" $target_execname] Please remind me -- is the current directory here usually the testcase's output dir? I.e., is it guaranteed that the current directory here is not going to be the same directory of another testcase running in parallel at the same time? > + > +set gdbserver_protocol [lindex $res 0] > +set gdbserver_gdbport [lindex $res 1] > +gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport > + > +if { [runto_main] } { > + pass "load filename without absolute path" > +} else { > + fail "load filename without absolute path" > +} runto_main here looks a bit odd to me. You're manually connecting with gdb_target_cmd, bypassing whatever the current board file may want to do, but then you're using a routine that call back into the board file to do random things to prepare for running. I think you should set a breakpoint at main and continue to it without using runto_main. Note how no other test in gdb.server/ uses runto_main. Thanks, Pedro Alves