+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
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)
for (objfile *objfile : current_program_space->objfiles ())
{
- for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+ for (minimal_symbol *msymbol : objfile->msymbols ())
{
QUIT;
if (pe_file)
{
- for (minimal_symbol *msym : objfile_msymbols (objfile))
+ for (minimal_symbol *msym : objfile->msymbols ())
{
const char *name = MSYMBOL_LINKAGE_NAME (msym);
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)
{
{
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. */
/* 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);
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);
/* 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);
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);
/* 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;
/* 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
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. */
void *cb_data, struct objfile *current_objfile);
\f
-/* 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) \
if (hash >= HASHSIZE)
return;
- for (minimal_symbol *msymbol : objfile_msymbols (resolve_objfile))
+ for (minimal_symbol *msymbol : resolve_objfile->msymbols ())
{
QUIT;
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);
{
for (objfile *objfile : current_program_space->objfiles ())
{
- for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+ for (minimal_symbol *msymbol : objfile->msymbols ())
{
QUIT;
{
for (objfile *objfile : current_program_space->objfiles ())
{
- for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+ for (minimal_symbol *msymbol : objfile->msymbols ())
{
QUIT;
{
for (objfile *objfile : current_program_space->objfiles ())
{
- for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+ for (minimal_symbol *msymbol : objfile->msymbols ())
{
QUIT;