From patchwork Wed Oct 23 07:34:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Simon Marchi (Code Review)" X-Patchwork-Id: 35242 Received: (qmail 111468 invoked by alias); 23 Oct 2019 07:34:13 -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 111403 invoked by uid 89); 23 Oct 2019 07:34:13 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-20.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: mx1.osci.io Received: from polly.osci.io (HELO mx1.osci.io) (8.43.85.229) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 23 Oct 2019 07:34:11 +0000 Received: by mx1.osci.io (Postfix, from userid 994) id 1734020468; Wed, 23 Oct 2019 03:34:10 -0400 (EDT) Received: from gnutoolchain-gerrit.osci.io (gnutoolchain-gerrit.osci.io [8.43.85.239]) by mx1.osci.io (Postfix) with ESMTP id C4BC320307; Wed, 23 Oct 2019 03:34:04 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by gnutoolchain-gerrit.osci.io (Postfix) with ESMTP id 71D7E23814; Wed, 23 Oct 2019 03:34:04 -0400 (EDT) X-Gerrit-PatchSet: 2 Date: Wed, 23 Oct 2019 03:34:04 -0400 From: "Sourceware to Gerrit sync (Code Review)" To: Tom de Vries , gdb-patches@sourceware.org Cc: Tom Tromey Auto-Submitted: auto-generated X-Gerrit-MessageType: merged Subject: [pushed] [gdb/breakpoints] Fix fullname.exp when run from symlink dir X-Gerrit-Change-Id: I1ace62a234458781e958980f3b425edf1490df27 X-Gerrit-Change-Number: 82 X-Gerrit-ChangeURL: X-Gerrit-Commit: 7e785608ce2afae4b3f611f0e4d46cb9633ef937 In-Reply-To: References: Reply-To: noreply@gnutoolchain-gerrit.osci.io, tdevries@suse.de, tromey@sourceware.org, gdb-patches@sourceware.org MIME-Version: 1.0 Content-Disposition: inline User-Agent: Gerrit/3.0.3 Message-Id: <20191023073404.71D7E23814@gnutoolchain-gerrit.osci.io> Sourceware to Gerrit sync has submitted this change. Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/82 ...................................................................... [gdb/breakpoints] Fix fullname.exp when run from symlink dir I run into this error with gdb.base/fullname.exp: ... (gdb) file /data/gdb_versions/devel/build/gdb/testsuite/outputs/\ gdb.base/fullname/fullname Reading symbols from /data/gdb_versions/devel/build/gdb/testsuite/outputs/\ gdb.base/fullname/fullname... (gdb) break /data/gdb_versions/devel/build/gdb/testsuite/\ outputs/gdb.base/fullname/tmp-fullname.c:21 No source file named /data/gdb_versions/devel/build/gdb/testsuite/outputs/\ gdb.base/fullname/tmp-fullname.c. Make breakpoint pending on future shared library load? (y or [n]) n (gdb) FAIL: gdb.base/fullname.exp: set breakpoint by full path before loading symbols - built relative ... The FAIL is due to this comparison in iterate_over_some_symtabs failing: ... 481 if (FILENAME_CMP (real_path, fullname) == 0) (gdb) p real_path $2 = 0x1a201f0 "/data/gdb_versions/devel/build/gdb/testsuite/outputs/\ gdb.base/fullname/tmp-fullname.c" (gdb) p fullname $3 = 0x1a1de80 "/home/vries/gdb_versions/devel/build/gdb/testsuite/outputs/\ gdb.base/fullname/tmp-fullname.c" ... The difference in pathnames is due to having a symlink dir: ... $ ls -la /home/vries/gdb_versions lrwxrwxrwx 1 vries users 18 26 jun 2018 /home/vries/gdb_versions -> /data/gdb_versions ... and the test passses when eliminating it: ... $ ( cd $(pwd -P); make check RUNTESTFLAGS=gdb.base/fullname.exp ) ... The FAIL is a regression from commit a0c1ffedcf1 "Only compute realpath when basenames_may_differ is set". Before, find_and_open_source was returning a real-path, resulting in variable 'fullname' being the same as varible 'real_path' in the comparison listed above. But after, that's no longer the case. Fix the FAIL by applying gdb_realpath on the fullname variable before the comparison. Tested on x86_64-linux. I wasn't able to write a test-case. The FAIL starts at: ... $ cd build/gdb $ mv testsuite testsuite.bla $ ln -s testsuite.bla testsuite ... but already this doesn't trigger it anymore: ... $ cd build/gdb/outputs $ mv outputs outputs.bla $ ln -s outputs.bla outputs ... gdb/ChangeLog: 2019-10-23 Tom de Vries PR breakpoints/24687 * symtab.c (iterate_over_some_symtabs): Apply gdb_realpath on fullname. Change-Id: I1ace62a234458781e958980f3b425edf1490df27 --- M gdb/ChangeLog M gdb/symtab.c 2 files changed, 8 insertions(+), 0 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9cd38a3..253c74f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-10-23 Tom de Vries + + PR breakpoints/24687 + * symtab.c (iterate_over_some_symtabs): Apply gdb_realpath on fullname. + 2019-10-22 Christian Biesinger * symtab.c (struct demangled_name_entry) : Change from diff --git a/gdb/symtab.c b/gdb/symtab.c index 0a87fec..160a4c0 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -480,6 +480,9 @@ gdb_assert (IS_ABSOLUTE_PATH (real_path)); gdb_assert (IS_ABSOLUTE_PATH (name)); + gdb::unique_xmalloc_ptr fullname_real_path + = gdb_realpath (fullname); + fullname = fullname_real_path.get (); if (FILENAME_CMP (real_path, fullname) == 0) { if (callback (s))