From patchwork Wed May 23 04:58:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 27432 Received: (qmail 114311 invoked by alias); 23 May 2018 04:59:15 -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 113575 invoked by uid 89); 23 May 2018 04:59:08 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: gateway30.websitewelcome.com Received: from gateway30.websitewelcome.com (HELO gateway30.websitewelcome.com) (192.185.198.26) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 23 May 2018 04:59:05 +0000 Received: from cm15.websitewelcome.com (cm15.websitewelcome.com [100.42.49.9]) by gateway30.websitewelcome.com (Postfix) with ESMTP id 094804B76 for ; Tue, 22 May 2018 23:59:04 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id LLrcfGDKEbXuJLLrcfXsV2; Tue, 22 May 2018 23:59:04 -0500 X-Authority-Reason: nr=8 Received: from 174-29-44-154.hlrn.qwest.net ([174.29.44.154]:56108 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89_1) (envelope-from ) id 1fLLrb-003S5D-QD; Tue, 22 May 2018 23:59:03 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 17/42] Move the subfile stack to buildsym_compunit Date: Tue, 22 May 2018 22:58:26 -0600 Message-Id: <20180523045851.11660-18-tom@tromey.com> In-Reply-To: <20180523045851.11660-1-tom@tromey.com> References: <20180523045851.11660-1-tom@tromey.com> X-BWhitelist: no X-Source-L: No X-Exim-ID: 1fLLrb-003S5D-QD X-Source-Sender: 174-29-44-154.hlrn.qwest.net (bapiya.Home) [174.29.44.154]:56108 X-Source-Auth: tom+tromey.com X-Email-Count: 18 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes This moves the global subfile_stack to be a member of buildsym_compunit. It also change this to be a std::vector, which simplifies the code. gdb/ChangeLog 2018-05-22 Tom Tromey * buildsym.h (push_subfile, pop_subfile): Update declarations. * buildsym.c (struct buildsym_compunit) : New member. (struct subfile_stack): Remove. (subfile_stack): Remove. (push_subfile, pop_subfile, buildsym_init): Update. --- gdb/ChangeLog | 9 +++++++++ gdb/buildsym.c | 39 +++++++++++++-------------------------- gdb/buildsym.h | 4 ++-- 3 files changed, 24 insertions(+), 28 deletions(-) diff --git a/gdb/buildsym.c b/gdb/buildsym.c index 4823fb383d..f828fceb72 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -202,6 +202,9 @@ struct buildsym_compunit comes from the N_SO symbol. For Dwarf it typically comes from the DW_AT_low_pc attribute of a DW_TAG_compile_unit DIE. */ CORE_ADDR m_last_source_start_addr; + + /* Stack of subfile names. */ + std::vector m_subfile_stack; }; /* The work-in-progress of the compunit we are building. @@ -249,14 +252,6 @@ struct pending_block static struct pending_block *pending_blocks; -struct subfile_stack - { - struct subfile_stack *next; - char *name; - }; - -static struct subfile_stack *subfile_stack; - /* Currently allocated size of context stack. */ static int context_stack_size; @@ -890,27 +885,21 @@ patch_subfile_names (struct subfile *subfile, const char *name) order. */ void -push_subfile (void) +push_subfile () { - struct subfile_stack *tem = XNEW (struct subfile_stack); - - tem->next = subfile_stack; - subfile_stack = tem; + gdb_assert (buildsym_compunit != nullptr); gdb_assert (! (current_subfile == NULL || current_subfile->name == NULL)); - tem->name = current_subfile->name; + buildsym_compunit->m_subfile_stack.push_back (current_subfile->name); } -char * -pop_subfile (void) +const char * +pop_subfile () { - char *name; - struct subfile_stack *link = subfile_stack; - - gdb_assert (link != NULL); - name = link->name; - subfile_stack = link->next; - xfree ((void *) link); - return (name); + gdb_assert (buildsym_compunit != nullptr); + gdb_assert (!buildsym_compunit->m_subfile_stack.empty ()); + const char *name = buildsym_compunit->m_subfile_stack.back (); + buildsym_compunit->m_subfile_stack.pop_back (); + return name; } /* Add a linetable entry for line number LINE and address PC to the @@ -1726,8 +1715,6 @@ get_last_source_start_addr () void buildsym_init () { - subfile_stack = NULL; - pending_addrmap_interesting = 0; /* Context stack is initially empty. Allocate first one with room diff --git a/gdb/buildsym.h b/gdb/buildsym.h index d0943456cd..b5ea63d3f4 100644 --- a/gdb/buildsym.h +++ b/gdb/buildsym.h @@ -186,9 +186,9 @@ extern void start_subfile (const char *name); extern void patch_subfile_names (struct subfile *subfile, const char *name); -extern void push_subfile (void); +extern void push_subfile (); -extern char *pop_subfile (void); +extern const char *pop_subfile (); extern struct block *end_symtab_get_static_block (CORE_ADDR end_addr, int expandable,