Use ALL_PRIMARY_SYMTABS instead of ALL_SYMTABS.

Message ID m3ioizbi5l.fsf@seba.sebabeach.org
State New, archived
Headers

Commit Message

Doug Evans Nov. 1, 2014, 5:32 a.m. UTC
  Hi.

I noticed a couple of users of ALL_SYMTABS when what they really
want to use is ALL_PRIMARY_SYMTABS.  Non-primary symtabs share the
blockvector of their primary symtab.

2014-10-31  Doug Evans  <xdje42@gmail.com>

	* ada-lang.c (ada_make_symbol_completion_list): Use
	ALL_PRIMARY_SYMTABS instead of ALL_SYMTABS.
	* symtab.c (lookup_objfile_from_block): Ditto.
  

Comments

Doug Evans Nov. 7, 2014, 1:30 a.m. UTC | #1
Doug Evans <xdje42@gmail.com> writes:
> Hi.
>
> I noticed a couple of users of ALL_SYMTABS when what they really
> want to use is ALL_PRIMARY_SYMTABS.  Non-primary symtabs share the
> blockvector of their primary symtab.
>
> 2014-10-31  Doug Evans  <xdje42@gmail.com>
>
> 	* ada-lang.c (ada_make_symbol_completion_list): Use
> 	ALL_PRIMARY_SYMTABS instead of ALL_SYMTABS.
> 	* symtab.c (lookup_objfile_from_block): Ditto.

Committed.
  

Patch

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 5793cd2..4320eec 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -6212,9 +6212,11 @@  ada_make_symbol_completion_list (const char *text0, const char *word,
     }
 
   /* Go through the symtabs and check the externs and statics for
-     symbols which match.  */
+     symbols which match.
+     Non-primary symtabs share the block vector with their primary symtabs
+     so we use ALL_PRIMARY_SYMTABS here instead of ALL_SYMTABS.  */
 
-  ALL_SYMTABS (objfile, s)
+  ALL_PRIMARY_SYMTABS (objfile, s)
   {
     QUIT;
     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
@@ -6226,7 +6228,7 @@  ada_make_symbol_completion_list (const char *text0, const char *word,
     }
   }
 
-  ALL_SYMTABS (objfile, s)
+  ALL_PRIMARY_SYMTABS (objfile, s)
   {
     QUIT;
     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
diff --git a/gdb/symtab.c b/gdb/symtab.c
index ed164f7..6dd4910 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1549,8 +1549,10 @@  lookup_objfile_from_block (const struct block *block)
     return NULL;
 
   block = block_global_block (block);
-  /* Go through SYMTABS.  */
-  ALL_SYMTABS (obj, s)
+  /* Go through SYMTABS.
+     Non-primary symtabs share the block vector with their primary symtabs
+     so we use ALL_PRIMARY_SYMTABS here instead of ALL_SYMTABS.  */
+  ALL_PRIMARY_SYMTABS (obj, s)
     if (block == BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK))
       {
 	if (obj->separate_debug_objfile_backlink)