From patchwork Tue Apr 12 18:36:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 11715 Received: (qmail 51979 invoked by alias); 12 Apr 2016 18:37:11 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 51966 invoked by uid 89); 12 Apr 2016 18:37:10 -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=160412, protect 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; Tue, 12 Apr 2016 18:36:51 +0000 Received: from EUSAAHC003.ericsson.se (Unknown_Domain [147.117.188.81]) by usplmg21.ericsson.net (Symantec Mail Security) with SMTP id 63.01.03614.9104D075; Tue, 12 Apr 2016 20:36:09 +0200 (CEST) Received: from [142.133.110.144] (147.117.188.8) by smtp-am.internal.ericsson.com (147.117.188.83) with Microsoft SMTP Server id 14.3.248.2; Tue, 12 Apr 2016 14:36:47 -0400 Subject: Re: [PATCH] gdbserver-base.exp: Copy file to standard output directory in ${board}_download To: Pedro Alves , References: <1460483287-23953-1-git-send-email-simon.marchi@ericsson.com> <570D39A7.7040001@redhat.com> CC: From: Simon Marchi Message-ID: <570D403F.5010406@ericsson.com> Date: Tue, 12 Apr 2016 14:36:47 -0400 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: <570D39A7.7040001@redhat.com> X-IsSubscribed: yes On 16-04-12 02:08 PM, Pedro Alves wrote: > On 04/12/2016 06:48 PM, Simon Marchi wrote: > >> proc ${board}_download { board host dest } { >> + file copy -force $host [standard_output_file $dest] >> return $host >> } > > I think this should be: > > set dest [standard_output_file $dest] > file copy -force $host $dest > return $dest Doh, you're right. > Don't we need to consider the case of $dest being an absolute path? I thought it wouldn't be better not, since we don't even want for tests to be able to write outside the standard output directory. I guess that if a test tries to download to /foo/bar, it will end up as outputs/gdb.blah/thetest/foo/bar. Then I would say the test would be at fault. Note that we don't do it either in gdb_remote_download. I guess we should do it at both places or at none. Updated patch: From 2101a781ec30a46c797e56d6fcc6df8e4dcb7611 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 12 Apr 2016 11:31:58 -0400 Subject: [PATCH] gdbserver-base.exp: Copy file to standard output directory in ${board}_download gdbserver-base.exp is used as the base for both native-gdbserver.exp and native-extended-gdbserver.exp. (Despite its name, it should really be considered as a "local-gdbserver-base", as it's not really appropriate to implement a remote gdbserver board.) Currently, the _download procedure is implemented as a no-op (it returns the source file path). Because of the SONAME change, The fast tracepoint tests now require the executable and the IPA (libinproctrace.so) to be located in the same directory (see [1]). When using the native-gdbserver board, because _download returns the original file path, the executable does not end up in the same directory as the library, and it fails to execute. In more general terms, with the recent changes, the testsuite now assumes that when it does ${board}_download ${board}_download where the destination paths are relative (generally just the file name), both files will end up in the same base directory. That assumption does not hold for the current implementation in gdbserver-base.exp. The proper fix would be to make native-gdbserver non-remote, so that gdb_remote_download would not call DejaGnu's remote_download (see [2]). We could then get rid of ${board}_download in gdbserver-base.exp. However, that will likely take some time to complete. In the mean time, in order to make the fast tracepoint tests pass, we can simply copy the file to the standard output directory. Basically, it just mimics what gdb_remote_download would do if the board wasn't flagged as remote. Note that I missed these failures originally because I had a libinproctrace.so in /usr/local/lib. So, even though libinproctrace.so wasn't copied to the test output directory, it did find the one in /usr/local/lib. It would be nice to find a way to protect against this, as it could easily happen again... Regtested with unix, native-gdbserver and native-extended-gdbserver, and didn't see anything notable, except the ftrace tests now passing for native-gdbserver. [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=6e774b13c3b81ac2599812adf058796948ce7e95 [2] https://sourceware.org/ml/gdb-patches/2016-04/msg00112.html gdb/testsuite/ChangeLog: * boards/gdbserver-base.exp (${board}_download): Copy source file to standard output directory. --- gdb/testsuite/boards/gdbserver-base.exp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/boards/gdbserver-base.exp b/gdb/testsuite/boards/gdbserver-base.exp index b686204..3579d25 100644 --- a/gdb/testsuite/boards/gdbserver-base.exp +++ b/gdb/testsuite/boards/gdbserver-base.exp @@ -41,7 +41,9 @@ proc ${board}_file { dest op args } { } proc ${board}_download { board host dest } { - return $host + set dest [standard_output_file $dest] + file copy -force $host $dest + return $dest } proc ${board}_upload {dest srcfile args} {