From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 5491C3857020 for ; Mon, 5 Oct 2020 02:06:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5491C3857020 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=simark.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=simark@simark.ca Received: from [10.0.0.11] (173-246-6-90.qc.cable.ebox.net [173.246.6.90]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id C56531E58E; Sun, 4 Oct 2020 22:06:29 -0400 (EDT) Subject: Re: [PATCH 2/2] Handle Windows drives in auto-load script paths To: Hannes Domani , gdb-patches@sourceware.org References: <20200529150800.2013-1-ssbssa@yahoo.de> <20200529150800.2013-2-ssbssa@yahoo.de> From: Simon Marchi Message-ID: <1cfd024c-3ef9-8dd4-a449-c6cba35a10eb@simark.ca> Date: Sun, 4 Oct 2020 22:06:28 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20200529150800.2013-2-ssbssa@yahoo.de> Content-Type: text/plain; charset=utf-8 Content-Language: fr Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-8.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, NICE_REPLY_A, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Oct 2020 02:06:31 -0000 Hi Hannes, On 2020-05-29 11:08 a.m., Hannes Domani via Gdb-patches wrote: > Fixes this testsuite fail on Windows: > FAIL: gdb.base/auto-load.exp: print $script_loaded > > Converts the debugfile path from c:/dir/file to /c/dir/file, so it can be > appended to the auto-load path. > > gdb/ChangeLog: > > 2020-05-29 Hannes Domani > > * auto-load.c (auto_load_objfile_script_1): Convert drive part > of debugfile path on Windows. > > gdb/doc/ChangeLog: > > 2020-05-29 Hannes Domani > > * gdb.texinfo: Document Windows drive conversion of > 'set auto-load scripts-directory'. > --- > v2: > - Document Windows drive conversion of 'set auto-load scripts-directory'. > --- > gdb/auto-load.c | 7 +++++++ > gdb/doc/gdb.texinfo | 4 ++++ > 2 files changed, 11 insertions(+) > > diff --git a/gdb/auto-load.c b/gdb/auto-load.c > index 99bd96b971..88221d9f3d 100644 > --- a/gdb/auto-load.c > +++ b/gdb/auto-load.c > @@ -784,6 +784,13 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, > "scripts-directory' path \"%s\".\n"), > auto_load_dir); > > + /* Convert Windows debugfile path from c:/dir/file to /c/dir/file. */ > + if (HAS_DRIVE_SPEC (debugfile)) > + { > + debugfile_holder = STRIP_DRIVE_SPEC (debugfile); I looked at this patch a bit before realizing it is already merged. I was going to make a comment about the line above, so I made it a patch instead, WDYT? >From 602e996b26d592ecda500ed64adafac30e0e9ce7 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Sun, 4 Oct 2020 22:00:17 -0400 Subject: [PATCH] gdb: avoid unnecessary string copy in auto_load_objfile_script_1 Assigning the result of STRIP_DRIVE_SPEC to an std::string creates an unnecessary copy of the string. STRIP_DRIVE_SPEC is defined as: #define STRIP_DRIVE_SPEC(f) ((f) + 2) So if it is passed a "const char *", it returns a "const char *". We could use a "const char *" intermediary variable instead of an std::string, or (as implemented in this patch) just use it directly in the concatenation right after. gdb/ChangeLog: * auto-load.c (auto_load_objfile_script_1): Don't use debugfile_holder as temporary variable when stripping drive letter. Change-Id: If2ccc7a156b22100754d9cdf6778ac7eeb93da4c --- gdb/auto-load.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gdb/auto-load.c b/gdb/auto-load.c index 9a51d2f3dc6c..43d007ca5b03 100644 --- a/gdb/auto-load.c +++ b/gdb/auto-load.c @@ -777,10 +777,8 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, /* Convert Windows file name from c:/dir/file to /c/dir/file. */ if (HAS_DRIVE_SPEC (debugfile)) - { - debugfile_holder = STRIP_DRIVE_SPEC (debugfile); - filename = std::string("\\") + debugfile[0] + debugfile_holder; - } + filename = (std::string("\\") + debugfile[0] + + STRIP_DRIVE_SPEC (debugfile)); for (const gdb::unique_xmalloc_ptr &dir : vec) { -- 2.28.0