From patchwork Fri Feb 21 13:02:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 38267 Received: (qmail 41888 invoked by alias); 21 Feb 2020 13:02:44 -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 41873 invoked by uid 89); 21 Feb 2020 13:02:43 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.1 spammy=boards X-HELO: mx2.suse.de Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 21 Feb 2020 13:02:42 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 14F8AADA3; Fri, 21 Feb 2020 13:02:40 +0000 (UTC) Subject: Re: [PATCH][gdb] Fix cc-with-dwz regression To: Tom Tromey Cc: gdb-patches@sourceware.org References: <20200220142547.GA16577@delia> <87lfoxnr9t.fsf@tromey.com> From: Tom de Vries Message-ID: <77ef6dfc-97a9-19a7-81be-bf179c358627@suse.de> Date: Fri, 21 Feb 2020 14:02:39 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: <87lfoxnr9t.fsf@tromey.com> X-IsSubscribed: yes On 20-02-2020 17:43, Tom Tromey wrote: >>>>>> "Tom" == Tom de Vries writes: > > Tom> Hi, > Tom> I noticed a regression with board cc-with-dwz: > Tom> ... > Tom> FAIL: gdb.cp/m-static.exp: static const int initialized elsewhere > Tom> FAIL: gdb.cp/m-static.exp: info variable everywhere > Tom> ... > > Tom> The problem started with commit 0494dbecdf "Consolidate partial symtab > Tom> dependency reading". > > Thank you for doing this. > > Tom> The commit replaces the dwarf2_psymtab::expand_psymtab specific reading of > Tom> dependencies, which contains a "dependencies[i]->user == NULL" test, with a > Tom> generic partial_symtab::read_dependencies call, which does not test the user > Tom> field. > > Can we simply add this to the base class? > I think only the DWARF reader ever sets the "user" field anyway. Ack, updated. OK like this? Thanks, - Tom [gdb] Fix cc-with-dwz regression I noticed a regression with board cc-with-dwz: ... FAIL: gdb.cp/m-static.exp: static const int initialized elsewhere FAIL: gdb.cp/m-static.exp: info variable everywhere ... The problem started with commit 0494dbecdf "Consolidate partial symtab dependency reading". The commit replaces the dwarf2_psymtab::expand_psymtab specific reading of dependencies, which contains a "dependencies[i]->user == NULL" test, with a generic partial_symtab::read_dependencies call, which does not test the user field. This patch fixes the regression by adding back the test, in the generic partial_symtab::read_dependencies. Build and reg-tested on x86_64-linux. Tested natively, as well as with boards cc-with-dwz and cc-with-dwz-m. The patch fixes all 33 regressions with cc-with-dwz, and all 2929 regression with cc-with-dwz-m. gdb/ChangeLog: 2020-02-21 Tom de Vries PR gdb/25534 * psymtab.c (partial_symtab::read_dependencies): Don't read dependency if dependencies[i]->user != NULL. --- gdb/psymtab.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gdb/psymtab.c b/gdb/psymtab.c index 56576b3bce..fd7fc8feff 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -1688,7 +1688,8 @@ partial_symtab::read_dependencies (struct objfile *objfile) { for (int i = 0; i < number_of_dependencies; ++i) { - if (!dependencies[i]->readin_p ()) + if (!dependencies[i]->readin_p () + && dependencies[i]->user == NULL) { /* Inform about additional files to be read in. */ if (info_verbose)