From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 38054 invoked by alias); 6 Jul 2018 19:16:12 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 35052 invoked by uid 89); 6 Jul 2018 19:15:28 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 06 Jul 2018 19:15:27 +0000 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 60BDC81101; Fri, 6 Jul 2018 19:15:17 +0000 (UTC) Received: from theo.uglyboxes.com (ovpn04.gateway.prod.ext.phx2.redhat.com [10.5.9.4]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 22C275B681; Fri, 6 Jul 2018 19:15:17 +0000 (UTC) Subject: Re: [RFA 34/42] Add many methods to buildsym_compunit To: Tom Tromey , gdb-patches@sourceware.org References: <20180523045851.11660-1-tom@tromey.com> <20180523045851.11660-35-tom@tromey.com> From: Keith Seitz Message-ID: Date: Fri, 06 Jul 2018 19:16:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <20180523045851.11660-35-tom@tromey.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2018-07/txt/msg00152.txt.bz2 [Note: this patch requires rebasing (re: symfile_complaints)] On 05/22/2018 09:58 PM, Tom Tromey wrote: > diff --git a/gdb/buildsym.c b/gdb/buildsym.c > index c965776d82..b9be6dd61a 100644 > --- a/gdb/buildsym.c > +++ b/gdb/buildsym.c > @@ -143,6 +169,11 @@ struct buildsym_compunit > m_last_source_file.reset (new_name); > } > > + const char *get_last_source_file () > + { > + return m_last_source_file.get (); > + } > + > struct macro_table *get_macro_table () > { > if (m_pending_macros == nullptr) > @@ -167,6 +198,136 @@ struct buildsym_compunit > m_pending_blocks = nullptr; > } > > + struct block *finish_block (struct symbol *symbol, > + struct pending_block *old_blocks, > + const struct dynamic_prop *static_link, > + CORE_ADDR start, CORE_ADDR end); > + > + void record_block_range (struct block *block, > + CORE_ADDR start, CORE_ADDR end_inclusive); > + > + void start_subfile (const char *name); > + > + void patch_subfile_names (struct subfile *subfile, const char *name); > + > + void push_subfile (); > + > + const char *pop_subfile (); > + > + void record_line (struct subfile *subfile, int line, CORE_ADDR pc); > + > + struct compunit_symtab *get_compunit_symtab () > + { > + return compunit_symtab; > + } > + > + void set_last_source_start_addr (CORE_ADDR addr) > + { > + m_last_source_start_addr = addr; > + } > + > + CORE_ADDR get_last_source_start_addr () > + { > + return m_last_source_start_addr; > + } > + > + struct using_direct **get_local_using_directives () > + { > + return &m_local_using_directives; > + } > + > + void set_local_using_directives (struct using_direct *new_local) > + { > + m_local_using_directives = new_local; > + } > + > + struct using_direct **get_global_using_directives () > + { > + return &m_global_using_directives; > + } > + > + bool outermost_context_p () const > + { > + return m_context_stack.empty (); > + } > + > + struct context_stack *get_current_context_stack () > + { > + if (m_context_stack.empty ()) > + return nullptr; > + return &m_context_stack.back (); > + } > + > + int get_context_stack_depth () const > + { > + return m_context_stack.size (); > + } > + > + struct subfile *get_current_subfile () > + { > + return m_current_subfile; > + } > + > + struct pending **get_local_symbols () > + { > + return &m_local_symbols; > + } > + > + struct pending **get_file_symbols () > + { > + return &m_file_symbols; > + } > + > + struct pending **get_global_symbols () > + { > + return &m_global_symbols; > + } > + > + void record_debugformat (const char *format) > + { > + debugformat = format; > + } > + > + void record_producer (const char *producer) > + { > + this->producer = producer; > + } > + > + struct context_stack *push_context (int desc, CORE_ADDR valu); > + > + struct context_stack *pop_context (); > + > + struct block *end_symtab_get_static_block (CORE_ADDR end_addr, > + int expandable, int required); > + > + struct compunit_symtab *end_symtab_from_static_block > + (struct block *static_block, int section, int expandable); > + > + struct compunit_symtab *end_symtab (CORE_ADDR end_addr, int section); > + > + struct compunit_symtab *end_expandable_symtab (CORE_ADDR end_addr, > + int section); > + > + void augment_type_symtab (); > + > +private: > + > + void record_pending_block (struct block *block, struct pending_block *opblock); > + > + struct block *finish_block_internal (struct symbol *symbol, > + struct pending **listhead, > + struct pending_block *old_blocks, > + const struct dynamic_prop *static_link, > + CORE_ADDR start, CORE_ADDR end, > + int is_global, int expandable); > + > + struct blockvector *make_blockvector (); > + > + void watch_main_source_file_lossage (); > + > + struct compunit_symtab *end_symtab_with_blockvector > + (struct block *static_block, int section, int expandable); > + > /* The objfile we're reading debug info from. */ > struct objfile *objfile; [snip] > @@ -1733,5 +1852,120 @@ struct pending ** > get_global_symbols () > { > gdb_assert (buildsym_compunit != nullptr); > - return &buildsym_compunit->m_global_symbols; > + return buildsym_compunit->get_global_symbols (); > +} > + > +void > +start_subfile (const char *name) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + buildsym_compunit->start_subfile (name); > +} > + > +void > +patch_subfile_names (struct subfile *subfile, const char *name) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + buildsym_compunit->patch_subfile_names (subfile, name); > +} > + > +void > +push_subfile () > +{ > + gdb_assert (buildsym_compunit != nullptr); > + buildsym_compunit->push_subfile (); > +} > + > +const char * > +pop_subfile () > +{ > + gdb_assert (buildsym_compunit != nullptr); > + return buildsym_compunit->pop_subfile (); > +} > + > +struct block * > +end_symtab_get_static_block (CORE_ADDR end_addr, int expandable, int required) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + return buildsym_compunit->end_symtab_get_static_block (end_addr, expandable, > + required); > +} > + > +struct compunit_symtab * > +end_symtab_from_static_block (struct block *static_block, > + int section, int expandable) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + struct compunit_symtab *result > + = buildsym_compunit->end_symtab_from_static_block (static_block, > + section, expandable); > + reset_symtab_globals (); > + return result; > +} > + > +struct compunit_symtab * > +end_symtab (CORE_ADDR end_addr, int section) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + struct compunit_symtab *result > + = buildsym_compunit->end_symtab (end_addr, section); > + reset_symtab_globals (); > + return result; > +} > + > +struct compunit_symtab * > +end_expandable_symtab (CORE_ADDR end_addr, int section) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + struct compunit_symtab *result > + = buildsym_compunit->end_expandable_symtab (end_addr, section); > + reset_symtab_globals (); > + return result; > +} > + > +void > +augment_type_symtab () > +{ > + gdb_assert (buildsym_compunit != nullptr); > + buildsym_compunit->augment_type_symtab (); > + reset_symtab_globals (); > +} > + > +struct context_stack * > +push_context (int desc, CORE_ADDR valu) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + return buildsym_compunit->push_context (desc, valu); > +} > + > +struct context_stack * > +pop_context () > +{ > + gdb_assert (buildsym_compunit != nullptr); > + return buildsym_compunit->pop_context (); > +} > + > +struct block * > +finish_block (struct symbol *symbol, struct pending_block *old_blocks, > + const struct dynamic_prop *static_link, > + CORE_ADDR start, CORE_ADDR end) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + return buildsym_compunit->finish_block (symbol, old_blocks, static_link, > + start, end); > +} > + > +void > +record_block_range (struct block *block, CORE_ADDR start, > + CORE_ADDR end_inclusive) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + buildsym_compunit->record_block_range (block, start, end_inclusive); > +} > + > +void > +record_line (struct subfile *subfile, int line, CORE_ADDR pc) > +{ > + gdb_assert (buildsym_compunit != nullptr); > + buildsym_compunit->record_line (subfile, line, pc); > } > Yikes. Did we really have that many undocumented functions? Keith