This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Make minimal symbol range adapter a method on objfile


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7932255de56fb99836b2e712e7dbcfdd5e1f1309

commit 7932255de56fb99836b2e712e7dbcfdd5e1f1309
Author: Tom Tromey <tom@tromey.com>
Date:   Wed Jan 16 07:18:58 2019 -0700

    Make minimal symbol range adapter a method on objfile
    
    This removes class objfile_msymbols in favor of a method on the
    objfile.
    
    2019-01-16  Tom Tromey  <tom@tromey.com>
    
    	* objfiles.h (struct minimal_symbol_iterator): Rename.  Move
    	earlier.
    	(struct objfile) <msymbols_range>: Move from top level.
    	<msymbols>: New method.
    	(class objfile_msymbols): Remove.
    	* symtab.c (default_collect_symbol_completion_matches_break_on):
    	Update.
    	* symmisc.c (dump_msymbols): Update.
    	* stabsread.c (scan_file_globals): Update.
    	* objc-lang.c (info_selectors_command, info_classes_command)
    	(find_methods): Update.
    	* minsyms.c (find_solib_trampoline_target): Update.
    	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Update.
    	* coffread.c (coff_symfile_read): Update.
    	* ada-lang.c (ada_lookup_simple_minsym)
    	(ada_collect_symbol_completion_matches): Update.

Diff:
---
 gdb/ChangeLog   |  19 ++++++++
 gdb/ada-lang.c  |   4 +-
 gdb/coffread.c  |   2 +-
 gdb/hppa-tdep.c |   2 +-
 gdb/minsyms.c   |   2 +-
 gdb/objc-lang.c |  10 ++--
 gdb/objfiles.h  | 146 ++++++++++++++++++++++++++++++--------------------------
 gdb/stabsread.c |   2 +-
 gdb/symmisc.c   |   2 +-
 gdb/symtab.c    |   6 +--
 10 files changed, 113 insertions(+), 82 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7d1ed3f..ac3cf07 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,24 @@
 2019-01-16  Tom Tromey  <tom@tromey.com>
 
+	* objfiles.h (struct minimal_symbol_iterator): Rename.  Move
+	earlier.
+	(struct objfile) <msymbols_range>: Move from top level.
+	<msymbols>: New method.
+	(class objfile_msymbols): Remove.
+	* symtab.c (default_collect_symbol_completion_matches_break_on):
+	Update.
+	* symmisc.c (dump_msymbols): Update.
+	* stabsread.c (scan_file_globals): Update.
+	* objc-lang.c (info_selectors_command, info_classes_command)
+	(find_methods): Update.
+	* minsyms.c (find_solib_trampoline_target): Update.
+	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Update.
+	* coffread.c (coff_symfile_read): Update.
+	* ada-lang.c (ada_lookup_simple_minsym)
+	(ada_collect_symbol_completion_matches): Update.
+
+2019-01-16  Tom Tromey  <tom@tromey.com>
+
 	* objfiles.h (class objfile_msymbols) <iterator>: Change argument
 	type.  Remove no-argument constructor.
 	<iterator::operator++>: Simplify.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 7d99754..944a729 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -4924,7 +4924,7 @@ ada_lookup_simple_minsym (const char *name)
 
   for (objfile *objfile : current_program_space->objfiles ())
     {
-      for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+      for (minimal_symbol *msymbol : objfile->msymbols ())
 	{
 	  if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
 	      && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
@@ -6411,7 +6411,7 @@ ada_collect_symbol_completion_matches (completion_tracker &tracker,
 
   for (objfile *objfile : current_program_space->objfiles ())
     {
-      for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+      for (minimal_symbol *msymbol : objfile->msymbols ())
 	{
 	  QUIT;
 
diff --git a/gdb/coffread.c b/gdb/coffread.c
index 2b75d81..6381cd3 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -661,7 +661,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
 
   if (pe_file)
     {
-      for (minimal_symbol *msym : objfile_msymbols (objfile))
+      for (minimal_symbol *msym : objfile->msymbols ())
 	{
 	  const char *name = MSYMBOL_LINKAGE_NAME (msym);
 
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 46deeac..866e6cf 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -2544,7 +2544,7 @@ hppa_lookup_stub_minimal_symbol (const char *name,
 
   for (objfile *objfile : current_program_space->objfiles ())
     {
-      for (minimal_symbol *msym : objfile_msymbols (objfile))
+      for (minimal_symbol *msym : objfile->msymbols ())
 	{
 	  if (strcmp (MSYMBOL_LINKAGE_NAME (msym), name) == 0)
 	    {
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 053c93e..7cd7ba9 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -1494,7 +1494,7 @@ find_solib_trampoline_target (struct frame_info *frame, CORE_ADDR pc)
     {
       for (objfile *objfile : current_program_space->objfiles ())
 	{
-	  for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+	  for (minimal_symbol *msymbol : objfile->msymbols ())
 	    {
 	      /* Also handle minimal symbols pointing to function
 		 descriptors.  */
diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
index accd378..ceef482 100644
--- a/gdb/objc-lang.c
+++ b/gdb/objc-lang.c
@@ -607,7 +607,7 @@ info_selectors_command (const char *regexp, int from_tty)
   /* First time thru is JUST to get max length and count.  */
   for (objfile *objfile : current_program_space->objfiles ())
     {
-      for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+      for (minimal_symbol *msymbol : objfile->msymbols ())
 	{
 	  QUIT;
 	  name = MSYMBOL_NATURAL_NAME (msymbol);
@@ -647,7 +647,7 @@ info_selectors_command (const char *regexp, int from_tty)
       matches = 0;
       for (objfile *objfile : current_program_space->objfiles ())
 	{
-	  for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+	  for (minimal_symbol *msymbol : objfile->msymbols ())
 	    {
 	      QUIT;
 	      name = MSYMBOL_NATURAL_NAME (msymbol);
@@ -761,7 +761,7 @@ info_classes_command (const char *regexp, int from_tty)
   /* First time thru is JUST to get max length and count.  */
   for (objfile *objfile : current_program_space->objfiles ())
     {
-      for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+      for (minimal_symbol *msymbol : objfile->msymbols ())
 	{
 	  QUIT;
 	  name = MSYMBOL_NATURAL_NAME (msymbol);
@@ -788,7 +788,7 @@ info_classes_command (const char *regexp, int from_tty)
       matches = 0;
       for (objfile *objfile : current_program_space->objfiles ())
 	{
-	  for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+	  for (minimal_symbol *msymbol : objfile->msymbols ())
 	    {
 	      QUIT;
 	      name = MSYMBOL_NATURAL_NAME (msymbol);
@@ -1008,7 +1008,7 @@ find_methods (char type, const char *theclass, const char *category,
 	/* There are no ObjC symbols in this objfile.  Skip it entirely.  */
 	continue;
 
-      for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+      for (minimal_symbol *msymbol : objfile->msymbols ())
 	{
 	  QUIT;
 
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 2e0fad6..5f106d9 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -182,6 +182,47 @@ extern void print_symbol_bcache_statistics (void);
 /* Number of entries in the minimal symbol hash table.  */
 #define MINIMAL_SYMBOL_HASH_SIZE 2039
 
+/* An iterator for minimal symbols.  */
+
+struct minimal_symbol_iterator
+{
+  typedef minimal_symbol_iterator self_type;
+  typedef struct minimal_symbol *value_type;
+  typedef struct minimal_symbol *&reference;
+  typedef struct minimal_symbol **pointer;
+  typedef std::forward_iterator_tag iterator_category;
+  typedef int difference_type;
+
+  explicit minimal_symbol_iterator (struct minimal_symbol *msym)
+    : m_msym (msym)
+  {
+  }
+
+  value_type operator* () const
+  {
+    return m_msym;
+  }
+
+  bool operator== (const self_type &other) const
+  {
+    return m_msym == other.m_msym;
+  }
+
+  bool operator!= (const self_type &other) const
+  {
+    return m_msym != other.m_msym;
+  }
+
+  self_type &operator++ ()
+  {
+    ++m_msym;
+    return *this;
+  }
+
+private:
+  struct minimal_symbol *m_msym;
+};
+
 /* Some objfile data is hung off the BFD.  This enables sharing of the
    data across all objfiles using the BFD.  The data is stored in an
    instance of this structure, and associated with the BFD using the
@@ -319,6 +360,44 @@ struct objfile
     return compunits_range (compunit_symtabs);
   }
 
+  /* A range adapter that makes it possible to iterate over all
+     minimal symbols of an objfile.  */
+
+  class msymbols_range
+  {
+  public:
+
+    explicit msymbols_range (struct objfile *objfile)
+      : m_objfile (objfile)
+    {
+    }
+
+    minimal_symbol_iterator begin () const
+    {
+      return minimal_symbol_iterator (m_objfile->per_bfd->msymbols);
+    }
+
+    minimal_symbol_iterator end () const
+    {
+      return minimal_symbol_iterator
+	(m_objfile->per_bfd->msymbols
+	 + m_objfile->per_bfd->minimal_symbol_count);
+    }
+
+  private:
+
+    struct objfile *m_objfile;
+  };
+
+  /* Return a range adapter for iterating over all minimal
+     symbols.  */
+
+  msymbols_range msymbols ()
+  {
+    return msymbols_range (this);
+  }
+
+
   /* All struct objfile's are chained together by their next pointers.
      The program space field "objfiles"  (frequently referenced via
      the macro "object_files") points to the first link in this chain.  */
@@ -570,73 +649,6 @@ extern void default_iterate_over_objfiles_in_search_order
    void *cb_data, struct objfile *current_objfile);
 
 
-/* A range adapter that makes it possible to iterate over all
-   minimal symbols of an objfile.  */
-
-class objfile_msymbols
-{
-public:
-
-  explicit objfile_msymbols (struct objfile *objfile)
-    : m_objfile (objfile)
-  {
-  }
-
-  struct iterator
-  {
-    typedef iterator self_type;
-    typedef struct minimal_symbol *value_type;
-    typedef struct minimal_symbol *&reference;
-    typedef struct minimal_symbol **pointer;
-    typedef std::forward_iterator_tag iterator_category;
-    typedef int difference_type;
-
-    explicit iterator (struct minimal_symbol *msym)
-      : m_msym (msym)
-    {
-    }
-
-    value_type operator* () const
-    {
-      return m_msym;
-    }
-
-    bool operator== (const self_type &other) const
-    {
-      return m_msym == other.m_msym;
-    }
-
-    bool operator!= (const self_type &other) const
-    {
-      return m_msym != other.m_msym;
-    }
-
-    self_type &operator++ ()
-    {
-      ++m_msym;
-      return *this;
-    }
-
-  private:
-    struct minimal_symbol *m_msym;
-  };
-
-  iterator begin () const
-  {
-    return iterator (m_objfile->per_bfd->msymbols);
-  }
-
-  iterator end () const
-  {
-    return iterator (m_objfile->per_bfd->msymbols
-		     + m_objfile->per_bfd->minimal_symbol_count);
-  }
-
-private:
-
-  struct objfile *m_objfile;
-};
-
 #define ALL_OBJFILE_OSECTIONS(objfile, osect)	\
   for (osect = objfile->sections; osect < objfile->sections_end; osect++) \
     if (osect->the_bfd_section == NULL)					\
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index daba7cb..fc41c8f 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -4598,7 +4598,7 @@ scan_file_globals (struct objfile *objfile)
       if (hash >= HASHSIZE)
 	return;
 
-      for (minimal_symbol *msymbol : objfile_msymbols (resolve_objfile))
+      for (minimal_symbol *msymbol : resolve_objfile->msymbols ())
 	{
 	  QUIT;
 
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index ac5c392..bb4fdfd 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -197,7 +197,7 @@ dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
       return;
     }
   index = 0;
-  for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+  for (minimal_symbol *msymbol : objfile->msymbols ())
     {
       struct obj_section *section = MSYMBOL_OBJ_SECTION (objfile, msymbol);
 
diff --git a/gdb/symtab.c b/gdb/symtab.c
index b8ebbc2..a2bd4dd 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4455,7 +4455,7 @@ search_symbols (const char *regexp, enum search_domain kind,
     {
       for (objfile *objfile : current_program_space->objfiles ())
 	{
-	  for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+	  for (minimal_symbol *msymbol : objfile->msymbols ())
 	    {
 	      QUIT;
 
@@ -4558,7 +4558,7 @@ search_symbols (const char *regexp, enum search_domain kind,
     {
       for (objfile *objfile : current_program_space->objfiles ())
 	{
-	  for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+	  for (minimal_symbol *msymbol : objfile->msymbols ())
 	    {
 	      QUIT;
 
@@ -5274,7 +5274,7 @@ default_collect_symbol_completion_matches_break_on
     {
       for (objfile *objfile : current_program_space->objfiles ())
 	{
-	  for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+	  for (minimal_symbol *msymbol : objfile->msymbols ())
 	    {
 	      QUIT;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]