[1/3] Remove some uses of "object_files"

Message ID 20190409180945.21621-2-tom@tromey.com
State New, archived
Headers

Commit Message

Tom Tromey April 9, 2019, 6:09 p.m. UTC
  The "object_files" macro is sometimes used when iterating over
objfiles.  This patch removes a few such uses in favor of the new
range adapter.

gdb/ChangeLog
2019-04-09  Tom Tromey  <tom@tromey.com>

	* ia64-tdep.c (ia64_get_dyn_info_list): Use foreach.
	* minsyms.c (lookup_minimal_symbol): Use foreach.
	(lookup_minimal_symbol_text, lookup_minimal_symbol_by_pc_name)
	(lookup_minimal_symbol_solib_trampoline): Likewise.
	* symfile.c (reread_symbols): Use foreach.
---
 gdb/ChangeLog   |  8 ++++++++
 gdb/ia64-tdep.c |  3 +--
 gdb/minsyms.c   | 26 ++++++++++----------------
 gdb/symfile.c   |  3 +--
 4 files changed, 20 insertions(+), 20 deletions(-)
  

Comments

Simon Marchi April 10, 2019, 1:49 a.m. UTC | #1
On 2019-04-09 2:09 p.m., Tom Tromey wrote:
> The "object_files" macro is sometimes used when iterating over
> objfiles.  This patch removes a few such uses in favor of the new
> range adapter.
> 
> gdb/ChangeLog
> 2019-04-09  Tom Tromey  <tom@tromey.com>
> 
> 	* ia64-tdep.c (ia64_get_dyn_info_list): Use foreach.
> 	* minsyms.c (lookup_minimal_symbol): Use foreach.
> 	(lookup_minimal_symbol_text, lookup_minimal_symbol_by_pc_name)
> 	(lookup_minimal_symbol_solib_trampoline): Likewise.
> 	* symfile.c (reread_symbols): Use foreach.

LGTM.  I would even suggest replacing the remaining few instances of object_files
with current_program_space->objfiles_head and removing the macro completely.

Simon
  
Tom Tromey April 10, 2019, 2:25 a.m. UTC | #2
>>>>> "Simon" == Simon Marchi <simark@simark.ca> writes:

Simon> LGTM.  I would even suggest replacing the remaining few instances
Simon> of object_files with current_program_space->objfiles_head and
Simon> removing the macro completely.

Yeah, I'll do it, though I think not as part of this patch.  Some of the
remaining uses are in objfile destructor, and I was working toward
changing how objfiles are stored (using std::list rather than an
intrusive list) but I haven't finished those patches yet...

Tom
  

Patch

diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index 7b4d0a0bfa1..f46673986ba 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -2845,7 +2845,6 @@  ia64_get_dyn_info_list (unw_addr_space_t as,
 			unw_word_t *dilap, void *arg)
 {
   struct obj_section *text_sec;
-  struct objfile *objfile;
   unw_word_t ip, addr;
   unw_dyn_info_t di;
   int ret;
@@ -2853,7 +2852,7 @@  ia64_get_dyn_info_list (unw_addr_space_t as,
   if (!libunwind_is_initialized ())
     return -UNW_ENOINFO;
 
-  for (objfile = object_files; objfile; objfile = objfile->next)
+  for (objfile *objfile : current_program_space->objfiles ())
     {
       void *buf = NULL;
 
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 51b65f51421..34198d122dc 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -308,7 +308,6 @@  struct bound_minimal_symbol
 lookup_minimal_symbol (const char *name, const char *sfile,
 		       struct objfile *objf)
 {
-  struct objfile *objfile;
   found_minimal_symbols found;
 
   unsigned int mangled_hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
@@ -323,10 +322,11 @@  lookup_minimal_symbol (const char *name, const char *sfile,
 
   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
 
-  for (objfile = object_files;
-       objfile != NULL && found.external_symbol.minsym == NULL;
-       objfile = objfile->next)
+  for (objfile *objfile : current_program_space->objfiles ())
     {
+      if (found.external_symbol.minsym != NULL)
+	break;
+
       if (objf == NULL || objf == objfile
 	  || objf == objfile->separate_debug_objfile_backlink)
 	{
@@ -522,17 +522,17 @@  iterate_over_minimal_symbols
 struct bound_minimal_symbol
 lookup_minimal_symbol_text (const char *name, struct objfile *objf)
 {
-  struct objfile *objfile;
   struct minimal_symbol *msymbol;
   struct bound_minimal_symbol found_symbol = { NULL, NULL };
   struct bound_minimal_symbol found_file_symbol = { NULL, NULL };
 
   unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
 
-  for (objfile = object_files;
-       objfile != NULL && found_symbol.minsym == NULL;
-       objfile = objfile->next)
+  for (objfile *objfile : current_program_space->objfiles ())
     {
+      if (found_symbol.minsym != NULL)
+	break;
+
       if (objf == NULL || objf == objfile
 	  || objf == objfile->separate_debug_objfile_backlink)
 	{
@@ -574,14 +574,11 @@  struct minimal_symbol *
 lookup_minimal_symbol_by_pc_name (CORE_ADDR pc, const char *name,
 				  struct objfile *objf)
 {
-  struct objfile *objfile;
   struct minimal_symbol *msymbol;
 
   unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
 
-  for (objfile = object_files;
-       objfile != NULL;
-       objfile = objfile->next)
+  for (objfile *objfile : current_program_space->objfiles ())
     {
       if (objf == NULL || objf == objfile
 	  || objf == objfile->separate_debug_objfile_backlink)
@@ -606,15 +603,12 @@  struct bound_minimal_symbol
 lookup_minimal_symbol_solib_trampoline (const char *name,
 					struct objfile *objf)
 {
-  struct objfile *objfile;
   struct minimal_symbol *msymbol;
   struct bound_minimal_symbol found_symbol = { NULL, NULL };
 
   unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
 
-  for (objfile = object_files;
-       objfile != NULL;
-       objfile = objfile->next)
+  for (objfile *objfile : current_program_space->objfiles ())
     {
       if (objf == NULL || objf == objfile
 	  || objf == objfile->separate_debug_objfile_backlink)
diff --git a/gdb/symfile.c b/gdb/symfile.c
index dbfc306c521..ba82f1b83ca 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -2427,7 +2427,6 @@  remove_symbol_file_command (const char *args, int from_tty)
 void
 reread_symbols (void)
 {
-  struct objfile *objfile;
   long new_modtime;
   struct stat new_statbuf;
   int res;
@@ -2439,7 +2438,7 @@  reread_symbols (void)
      This routine should then walk down each partial symbol table
      and see if the symbol table that it originates from has been changed.  */
 
-  for (objfile = object_files; objfile; objfile = objfile->next)
+  for (objfile *objfile : current_program_space->objfiles ())
     {
       if (objfile->obfd == NULL)
 	continue;