From 7ea05a7b634a895128e87c8c71e8e611758cd4bb Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 21 May 2018 00:28:56 -0600 Subject: [PATCH] Move pending addrmap globals to buildsym_compunit This moves the pending addrmap-related globals into buildsym_compunit. gdb/ChangeLog 2018-07-20 Tom Tromey * buildsym.c (struct buildsym_compunit) : New members. (pending_addrmap, pending_addrmap_obstack) (pending_addrmap_interesting): Remove. (scoped_free_pendings, record_block_range, make_blockvector) (prepare_for_building, reset_symtab_globals, buildsym_init): Update. --- gdb/ChangeLog | 11 ++++++++++ gdb/buildsym.c | 63 ++++++++++++++++++++++++---------------------------------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ee8f75c..d70367c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,16 @@ 2018-07-20 Tom Tromey + * buildsym.c (struct buildsym_compunit) : New + members. + (pending_addrmap, pending_addrmap_obstack) + (pending_addrmap_interesting): Remove. + (scoped_free_pendings, record_block_range, make_blockvector) + (prepare_for_building, reset_symtab_globals, buildsym_init): + Update. + +2018-07-20 Tom Tromey + * xcoffread.c (process_linenos): Update. * stabsread.c (define_symbol, read_type, read_enum_type): Update. * mdebugread.c (psymtab_to_symtab_1): Update. diff --git a/gdb/buildsym.c b/gdb/buildsym.c index 620f252..2de8d99 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -216,6 +216,22 @@ struct buildsym_compunit std::vector m_context_stack; struct subfile *m_current_subfile = nullptr; + + /* The mutable address map for the compilation unit whose symbols + we're currently reading. The symtabs' shared blockvector will + point to a fixed copy of this. */ + struct addrmap *m_pending_addrmap = nullptr; + + /* The obstack on which we allocate pending_addrmap. + If pending_addrmap is NULL, this is uninitialized; otherwise, it is + initialized (and holds pending_addrmap). */ + auto_obstack m_pending_addrmap_obstack; + + /* True if we recorded any ranges in the addrmap that are different + from those in the blockvector already. We set this to false when + we start processing a symfile, and if it's still false at the + end, then we just toss the addrmap. */ + bool m_pending_addrmap_interesting = false; }; /* The work-in-progress of the compunit we are building. @@ -227,22 +243,6 @@ static struct buildsym_compunit *buildsym_compunit; static struct pending *free_pendings; -/* The mutable address map for the compilation unit whose symbols - we're currently reading. The symtabs' shared blockvector will - point to a fixed copy of this. */ -static struct addrmap *pending_addrmap; - -/* The obstack on which we allocate pending_addrmap. - If pending_addrmap is NULL, this is uninitialized; otherwise, it is - initialized (and holds pending_addrmap). */ -static struct obstack pending_addrmap_obstack; - -/* Non-zero if we recorded any ranges in the addrmap that are - different from those in the blockvector already. We set this to - zero when we start processing a symfile, and if it's still zero at - the end, then we just toss the addrmap. */ -static int pending_addrmap_interesting; - /* An obstack used for allocating pending blocks. */ static struct obstack pending_block_obstack; @@ -378,10 +378,6 @@ scoped_free_pendings::~scoped_free_pendings () } global_symbols = NULL; - if (pending_addrmap) - obstack_free (&pending_addrmap_obstack, NULL); - pending_addrmap = NULL; - free_buildsym_compunit (); } @@ -654,15 +650,14 @@ record_block_range (struct block *block, need to record this block in the addrmap. */ if (start != BLOCK_START (block) || end_inclusive + 1 != BLOCK_END (block)) - pending_addrmap_interesting = 1; + buildsym_compunit->m_pending_addrmap_interesting = true; - if (! pending_addrmap) - { - obstack_init (&pending_addrmap_obstack); - pending_addrmap = addrmap_create_mutable (&pending_addrmap_obstack); - } + if (buildsym_compunit->m_pending_addrmap == nullptr) + buildsym_compunit->m_pending_addrmap + = addrmap_create_mutable (&buildsym_compunit->m_pending_addrmap_obstack); - addrmap_set_empty (pending_addrmap, start, end_inclusive, block); + addrmap_set_empty (buildsym_compunit->m_pending_addrmap, + start, end_inclusive, block); } static struct blockvector * @@ -700,9 +695,11 @@ make_blockvector (void) /* If we needed an address map for this symtab, record it in the blockvector. */ - if (pending_addrmap && pending_addrmap_interesting) + if (buildsym_compunit->m_pending_addrmap != nullptr + && buildsym_compunit->m_pending_addrmap_interesting) BLOCKVECTOR_MAP (blockvector) - = addrmap_create_fixed (pending_addrmap, &objfile->objfile_obstack); + = addrmap_create_fixed (buildsym_compunit->m_pending_addrmap, + &objfile->objfile_obstack); else BLOCKVECTOR_MAP (blockvector) = 0; @@ -1031,7 +1028,6 @@ prepare_for_building () a symtab, or by the scoped_free_pendings destructor. */ gdb_assert (file_symbols == NULL); gdb_assert (global_symbols == NULL); - gdb_assert (pending_addrmap == NULL); gdb_assert (buildsym_compunit == nullptr); } @@ -1185,10 +1181,6 @@ reset_symtab_globals (void) file_symbols = NULL; global_symbols = NULL; - if (pending_addrmap) - obstack_free (&pending_addrmap_obstack, NULL); - pending_addrmap = NULL; - free_buildsym_compunit (); } @@ -1775,14 +1767,11 @@ get_current_subfile () void buildsym_init () { - pending_addrmap_interesting = 0; - /* Ensure the scoped_free_pendings destructor was called after the last time. */ gdb_assert (free_pendings == NULL); gdb_assert (pending_blocks == NULL); gdb_assert (file_symbols == NULL); gdb_assert (global_symbols == NULL); - gdb_assert (pending_addrmap == NULL); gdb_assert (buildsym_compunit == NULL); } -- 2.7.4