1 /* Symbol table definitions for GDB.
2 
3    Copyright (C) 1986-2021 Free Software Foundation, Inc.
4 
5    This file is part of GDB.
6 
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 #if !defined (SYMTAB_H)
21 #define SYMTAB_H 1
22 
23 #include <array>
24 #include <vector>
25 #include <string>
26 #include <set>
27 #include "gdbsupport/gdb_vecs.h"
28 #include "gdbtypes.h"
29 #include "gdb_obstack.h"
30 #include "gdb_regex.h"
31 #include "gdbsupport/enum-flags.h"
32 #include "gdbsupport/function-view.h"
33 #include "gdbsupport/gdb_optional.h"
34 #include "gdbsupport/gdb_string_view.h"
35 #include "gdbsupport/next-iterator.h"
36 #include "completer.h"
37 #include "gdb-demangle.h"
38 
39 /* Opaque declarations.  */
40 struct ui_file;
41 struct frame_info;
42 struct symbol;
43 struct obstack;
44 struct objfile;
45 struct block;
46 struct blockvector;
47 struct axs_value;
48 struct agent_expr;
49 struct program_space;
50 struct language_defn;
51 struct common_block;
52 struct obj_section;
53 struct cmd_list_element;
54 class probe;
55 struct lookup_name_info;
56 
57 /* How to match a lookup name against a symbol search name.  */
58 enum class symbol_name_match_type
59 {
60   /* Wild matching.  Matches unqualified symbol names in all
61      namespace/module/packages, etc.  */
62   WILD,
63 
64   /* Full matching.  The lookup name indicates a fully-qualified name,
65      and only matches symbol search names in the specified
66      namespace/module/package.  */
67   FULL,
68 
69   /* Search name matching.  This is like FULL, but the search name did
70      not come from the user; instead it is already a search name
71      retrieved from a search_name () call.
72      For Ada, this avoids re-encoding an already-encoded search name
73      (which would potentially incorrectly lowercase letters in the
74      linkage/search name that should remain uppercase).  For C++, it
75      avoids trying to demangle a name we already know is
76      demangled.  */
77   SEARCH_NAME,
78 
79   /* Expression matching.  The same as FULL matching in most
80      languages.  The same as WILD matching in Ada.  */
81   EXPRESSION,
82 };
83 
84 /* Hash the given symbol search name according to LANGUAGE's
85    rules.  */
86 extern unsigned int search_name_hash (enum language language,
87 				      const char *search_name);
88 
89 /* Ada-specific bits of a lookup_name_info object.  This is lazily
90    constructed on demand.  */
91 
92 class ada_lookup_name_info final
93 {
94  public:
95   /* Construct.  */
96   explicit ada_lookup_name_info (const lookup_name_info &lookup_name);
97 
98   /* Compare SYMBOL_SEARCH_NAME with our lookup name, using MATCH_TYPE
99      as name match type.  Returns true if there's a match, false
100      otherwise.  If non-NULL, store the matching results in MATCH.  */
101   bool matches (const char *symbol_search_name,
102 		symbol_name_match_type match_type,
103 		completion_match_result *comp_match_res) const;
104 
105   /* The Ada-encoded lookup name.  */
lookup_name()106   const std::string &lookup_name () const
107   { return m_encoded_name; }
108 
109   /* Return true if we're supposed to be doing a wild match look
110      up.  */
wild_match_p()111   bool wild_match_p () const
112   { return m_wild_match_p; }
113 
114   /* Return true if we're looking up a name inside package
115      Standard.  */
standard_p()116   bool standard_p () const
117   { return m_standard_p; }
118 
119   /* Return true if doing a verbatim match.  */
verbatim_p()120   bool verbatim_p () const
121   { return m_verbatim_p; }
122 
123 private:
124   /* The Ada-encoded lookup name.  */
125   std::string m_encoded_name;
126 
127   /* Whether the user-provided lookup name was Ada encoded.  If so,
128      then return encoded names in the 'matches' method's 'completion
129      match result' output.  */
130   bool m_encoded_p : 1;
131 
132   /* True if really doing wild matching.  Even if the user requests
133      wild matching, some cases require full matching.  */
134   bool m_wild_match_p : 1;
135 
136   /* True if doing a verbatim match.  This is true if the decoded
137      version of the symbol name is wrapped in '<'/'>'.  This is an
138      escape hatch users can use to look up symbols the Ada encoding
139      does not understand.  */
140   bool m_verbatim_p : 1;
141 
142    /* True if the user specified a symbol name that is inside package
143       Standard.  Symbol names inside package Standard are handled
144       specially.  We always do a non-wild match of the symbol name
145       without the "standard__" prefix, and only search static and
146       global symbols.  This was primarily introduced in order to allow
147       the user to specifically access the standard exceptions using,
148       for instance, Standard.Constraint_Error when Constraint_Error is
149       ambiguous (due to the user defining its own Constraint_Error
150       entity inside its program).  */
151   bool m_standard_p : 1;
152 };
153 
154 /* Language-specific bits of a lookup_name_info object, for languages
155    that do name searching using demangled names (C++/D/Go).  This is
156    lazily constructed on demand.  */
157 
158 struct demangle_for_lookup_info final
159 {
160 public:
161   demangle_for_lookup_info (const lookup_name_info &lookup_name,
162 			    language lang);
163 
164   /* The demangled lookup name.  */
lookup_namefinal165   const std::string &lookup_name () const
166   { return m_demangled_name; }
167 
168 private:
169   /* The demangled lookup name.  */
170   std::string m_demangled_name;
171 };
172 
173 /* Object that aggregates all information related to a symbol lookup
174    name.  I.e., the name that is matched against the symbol's search
175    name.  Caches per-language information so that it doesn't require
176    recomputing it for every symbol comparison, like for example the
177    Ada encoded name and the symbol's name hash for a given language.
178    The object is conceptually immutable once constructed, and thus has
179    no setters.  This is to prevent some code path from tweaking some
180    property of the lookup name for some local reason and accidentally
181    altering the results of any continuing search(es).
182    lookup_name_info objects are generally passed around as a const
183    reference to reinforce that.  (They're not passed around by value
184    because they're not small.)  */
185 class lookup_name_info final
186 {
187  public:
188   /* We delete this overload so that the callers are required to
189      explicitly handle the lifetime of the name.  */
190   lookup_name_info (std::string &&name,
191 		    symbol_name_match_type match_type,
192 		    bool completion_mode = false,
193 		    bool ignore_parameters = false) = delete;
194 
195   /* This overload requires that NAME have a lifetime at least as long
196      as the lifetime of this object.  */
197   lookup_name_info (const std::string &name,
198 		    symbol_name_match_type match_type,
199 		    bool completion_mode = false,
200 		    bool ignore_parameters = false)
m_match_type(match_type)201     : m_match_type (match_type),
202       m_completion_mode (completion_mode),
203       m_ignore_parameters (ignore_parameters),
204       m_name (name)
205   {}
206 
207   /* This overload requires that NAME have a lifetime at least as long
208      as the lifetime of this object.  */
209   lookup_name_info (const char *name,
210 		    symbol_name_match_type match_type,
211 		    bool completion_mode = false,
212 		    bool ignore_parameters = false)
m_match_type(match_type)213     : m_match_type (match_type),
214       m_completion_mode (completion_mode),
215       m_ignore_parameters (ignore_parameters),
216       m_name (name)
217   {}
218 
219   /* Getters.  See description of each corresponding field.  */
match_type()220   symbol_name_match_type match_type () const { return m_match_type; }
completion_mode()221   bool completion_mode () const { return m_completion_mode; }
name()222   gdb::string_view name () const { return m_name; }
ignore_parameters()223   const bool ignore_parameters () const { return m_ignore_parameters; }
224 
225   /* Like the "name" method but guarantees that the returned string is
226      \0-terminated.  */
c_str()227   const char *c_str () const
228   {
229     /* Actually this is always guaranteed due to how the class is
230        constructed.  */
231     return m_name.data ();
232   }
233 
234   /* Return a version of this lookup name that is usable with
235      comparisons against symbols have no parameter info, such as
236      psymbols and GDB index symbols.  */
make_ignore_params()237   lookup_name_info make_ignore_params () const
238   {
239     return lookup_name_info (c_str (), m_match_type, m_completion_mode,
240 			     true /* ignore params */);
241   }
242 
243   /* Get the search name hash for searches in language LANG.  */
search_name_hash(language lang)244   unsigned int search_name_hash (language lang) const
245   {
246     /* Only compute each language's hash once.  */
247     if (!m_demangled_hashes_p[lang])
248       {
249 	m_demangled_hashes[lang]
250 	  = ::search_name_hash (lang, language_lookup_name (lang));
251 	m_demangled_hashes_p[lang] = true;
252       }
253     return m_demangled_hashes[lang];
254   }
255 
256   /* Get the search name for searches in language LANG.  */
language_lookup_name(language lang)257   const char *language_lookup_name (language lang) const
258   {
259     switch (lang)
260       {
261       case language_ada:
262 	return ada ().lookup_name ().c_str ();
263       case language_cplus:
264 	return cplus ().lookup_name ().c_str ();
265       case language_d:
266 	return d ().lookup_name ().c_str ();
267       case language_go:
268 	return go ().lookup_name ().c_str ();
269       default:
270 	return m_name.data ();
271       }
272   }
273 
274   /* Get the Ada-specific lookup info.  */
ada()275   const ada_lookup_name_info &ada () const
276   {
277     maybe_init (m_ada);
278     return *m_ada;
279   }
280 
281   /* Get the C++-specific lookup info.  */
cplus()282   const demangle_for_lookup_info &cplus () const
283   {
284     maybe_init (m_cplus, language_cplus);
285     return *m_cplus;
286   }
287 
288   /* Get the D-specific lookup info.  */
d()289   const demangle_for_lookup_info &d () const
290   {
291     maybe_init (m_d, language_d);
292     return *m_d;
293   }
294 
295   /* Get the Go-specific lookup info.  */
go()296   const demangle_for_lookup_info &go () const
297   {
298     maybe_init (m_go, language_go);
299     return *m_go;
300   }
301 
302   /* Get a reference to a lookup_name_info object that matches any
303      symbol name.  */
304   static const lookup_name_info &match_any ();
305 
306 private:
307   /* Initialize FIELD, if not initialized yet.  */
308   template<typename Field, typename... Args>
maybe_init(Field & field,Args &&...args)309   void maybe_init (Field &field, Args&&... args) const
310   {
311     if (!field)
312       field.emplace (*this, std::forward<Args> (args)...);
313   }
314 
315   /* The lookup info as passed to the ctor.  */
316   symbol_name_match_type m_match_type;
317   bool m_completion_mode;
318   bool m_ignore_parameters;
319   gdb::string_view m_name;
320 
321   /* Language-specific info.  These fields are filled lazily the first
322      time a lookup is done in the corresponding language.  They're
323      mutable because lookup_name_info objects are typically passed
324      around by const reference (see intro), and they're conceptually
325      "cache" that can always be reconstructed from the non-mutable
326      fields.  */
327   mutable gdb::optional<ada_lookup_name_info> m_ada;
328   mutable gdb::optional<demangle_for_lookup_info> m_cplus;
329   mutable gdb::optional<demangle_for_lookup_info> m_d;
330   mutable gdb::optional<demangle_for_lookup_info> m_go;
331 
332   /* The demangled hashes.  Stored in an array with one entry for each
333      possible language.  The second array records whether we've
334      already computed the each language's hash.  (These are separate
335      arrays instead of a single array of optional<unsigned> to avoid
336      alignment padding).  */
337   mutable std::array<unsigned int, nr_languages> m_demangled_hashes;
338   mutable std::array<bool, nr_languages> m_demangled_hashes_p {};
339 };
340 
341 /* Comparison function for completion symbol lookup.
342 
343    Returns true if the symbol name matches against LOOKUP_NAME.
344 
345    SYMBOL_SEARCH_NAME should be a symbol's "search" name.
346 
347    On success and if non-NULL, COMP_MATCH_RES->match is set to point
348    to the symbol name as should be presented to the user as a
349    completion match list element.  In most languages, this is the same
350    as the symbol's search name, but in some, like Ada, the display
351    name is dynamically computed within the comparison routine.
352 
353    Also, on success and if non-NULL, COMP_MATCH_RES->match_for_lcd
354    points the part of SYMBOL_SEARCH_NAME that was considered to match
355    LOOKUP_NAME.  E.g., in C++, in linespec/wild mode, if the symbol is
356    "foo::function()" and LOOKUP_NAME is "function(", MATCH_FOR_LCD
357    points to "function()" inside SYMBOL_SEARCH_NAME.  */
358 typedef bool (symbol_name_matcher_ftype)
359   (const char *symbol_search_name,
360    const lookup_name_info &lookup_name,
361    completion_match_result *comp_match_res);
362 
363 /* Some of the structures in this file are space critical.
364    The space-critical structures are:
365 
366      struct general_symbol_info
367      struct symbol
368      struct partial_symbol
369 
370    These structures are laid out to encourage good packing.
371    They use ENUM_BITFIELD and short int fields, and they order the
372    structure members so that fields less than a word are next
373    to each other so they can be packed together.  */
374 
375 /* Rearranged: used ENUM_BITFIELD and rearranged field order in
376    all the space critical structures (plus struct minimal_symbol).
377    Memory usage dropped from 99360768 bytes to 90001408 bytes.
378    I measured this with before-and-after tests of
379    "HEAD-old-gdb -readnow HEAD-old-gdb" and
380    "HEAD-new-gdb -readnow HEAD-old-gdb" on native i686-pc-linux-gnu,
381    red hat linux 8, with LD_LIBRARY_PATH=/usr/lib/debug,
382    typing "maint space 1" at the first command prompt.
383 
384    Here is another measurement (from andrew c):
385      # no /usr/lib/debug, just plain glibc, like a normal user
386      gdb HEAD-old-gdb
387      (gdb) break internal_error
388      (gdb) run
389      (gdb) maint internal-error
390      (gdb) backtrace
391      (gdb) maint space 1
392 
393    gdb gdb_6_0_branch  2003-08-19  space used: 8896512
394    gdb HEAD            2003-08-19  space used: 8904704
395    gdb HEAD            2003-08-21  space used: 8396800 (+symtab.h)
396    gdb HEAD            2003-08-21  space used: 8265728 (+gdbtypes.h)
397 
398    The third line shows the savings from the optimizations in symtab.h.
399    The fourth line shows the savings from the optimizations in
400    gdbtypes.h.  Both optimizations are in gdb HEAD now.
401 
402    --chastain 2003-08-21  */
403 
404 /* Define a structure for the information that is common to all symbol types,
405    including minimal symbols, partial symbols, and full symbols.  In a
406    multilanguage environment, some language specific information may need to
407    be recorded along with each symbol.  */
408 
409 /* This structure is space critical.  See space comments at the top.  */
410 
411 struct general_symbol_info
412 {
413   /* Short version as to when to use which name accessor:
414      Use natural_name () to refer to the name of the symbol in the original
415      source code.  Use linkage_name () if you want to know what the linker
416      thinks the symbol's name is.  Use print_name () for output.  Use
417      demangled_name () if you specifically need to know whether natural_name ()
418      and linkage_name () are different.  */
419 
linkage_namegeneral_symbol_info420   const char *linkage_name () const
421   { return m_name; }
422 
423   /* Return SYMBOL's "natural" name, i.e. the name that it was called in
424      the original source code.  In languages like C++ where symbols may
425      be mangled for ease of manipulation by the linker, this is the
426      demangled name.  */
427   const char *natural_name () const;
428 
429   /* Returns a version of the name of a symbol that is
430      suitable for output.  In C++ this is the "demangled" form of the
431      name if demangle is on and the "mangled" form of the name if
432      demangle is off.  In other languages this is just the symbol name.
433      The result should never be NULL.  Don't use this for internal
434      purposes (e.g. storing in a hashtable): it's only suitable for output.  */
print_namegeneral_symbol_info435   const char *print_name () const
436   { return demangle ? natural_name () : linkage_name (); }
437 
438   /* Return the demangled name for a symbol based on the language for
439      that symbol.  If no demangled name exists, return NULL.  */
440   const char *demangled_name () const;
441 
442   /* Returns the name to be used when sorting and searching symbols.
443      In C++, we search for the demangled form of a name,
444      and so sort symbols accordingly.  In Ada, however, we search by mangled
445      name.  If there is no distinct demangled name, then this
446      returns the same value (same pointer) as linkage_name ().  */
447   const char *search_name () const;
448 
449   /* Set just the linkage name of a symbol; do not try to demangle
450      it.  Used for constructs which do not have a mangled name,
451      e.g. struct tags.  Unlike compute_and_set_names, linkage_name must
452      be terminated and either already on the objfile's obstack or
453      permanently allocated.  */
set_linkage_namegeneral_symbol_info454   void set_linkage_name (const char *linkage_name)
455   { m_name = linkage_name; }
456 
457   /* Set the demangled name of this symbol to NAME.  NAME must be
458      already correctly allocated.  If the symbol's language is Ada,
459      then the name is ignored and the obstack is set.  */
460   void set_demangled_name (const char *name, struct obstack *obstack);
461 
languagegeneral_symbol_info462   enum language language () const
463   { return m_language; }
464 
465   /* Initializes the language dependent portion of a symbol
466      depending upon the language for the symbol.  */
467   void set_language (enum language language, struct obstack *obstack);
468 
469   /* Set the linkage and natural names of a symbol, by demangling
470      the linkage name.  If linkage_name may not be nullterminated,
471      copy_name must be set to true.  */
472   void compute_and_set_names (gdb::string_view linkage_name, bool copy_name,
473 			      struct objfile_per_bfd_storage *per_bfd,
474 			      gdb::optional<hashval_t> hash
475 				= gdb::optional<hashval_t> ());
476 
477   /* Name of the symbol.  This is a required field.  Storage for the
478      name is allocated on the objfile_obstack for the associated
479      objfile.  For languages like C++ that make a distinction between
480      the mangled name and demangled name, this is the mangled
481      name.  */
482 
483   const char *m_name;
484 
485   /* Value of the symbol.  Which member of this union to use, and what
486      it means, depends on what kind of symbol this is and its
487      SYMBOL_CLASS.  See comments there for more details.  All of these
488      are in host byte order (though what they point to might be in
489      target byte order, e.g. LOC_CONST_BYTES).  */
490 
491   union
492   {
493     LONGEST ivalue;
494 
495     const struct block *block;
496 
497     const gdb_byte *bytes;
498 
499     CORE_ADDR address;
500 
501     /* A common block.  Used with LOC_COMMON_BLOCK.  */
502 
503     const struct common_block *common_block;
504 
505     /* For opaque typedef struct chain.  */
506 
507     struct symbol *chain;
508   }
509   value;
510 
511   /* Since one and only one language can apply, wrap the language specific
512      information inside a union.  */
513 
514   union
515   {
516     /* A pointer to an obstack that can be used for storage associated
517        with this symbol.  This is only used by Ada, and only when the
518        'ada_mangled' field is zero.  */
519     struct obstack *obstack;
520 
521     /* This is used by languages which wish to store a demangled name.
522        currently used by Ada, C++, and Objective C.  */
523     const char *demangled_name;
524   }
525   language_specific;
526 
527   /* Record the source code language that applies to this symbol.
528      This is used to select one of the fields from the language specific
529      union above.  */
530 
531   ENUM_BITFIELD(language) m_language : LANGUAGE_BITS;
532 
533   /* This is only used by Ada.  If set, then the 'demangled_name' field
534      of language_specific is valid.  Otherwise, the 'obstack' field is
535      valid.  */
536   unsigned int ada_mangled : 1;
537 
538   /* Which section is this symbol in?  This is an index into
539      section_offsets for this objfile.  Negative means that the symbol
540      does not get relocated relative to a section.  */
541 
542   short m_section;
543 
544   /* Set the index into the obj_section list (within the containing
545      objfile) for the section that contains this symbol.  See M_SECTION
546      for more details.  */
547 
set_section_indexgeneral_symbol_info548   void set_section_index (short idx)
549   { m_section = idx; }
550 
551   /* Return the index into the obj_section list (within the containing
552      objfile) for the section that contains this symbol.  See M_SECTION
553      for more details.  */
554 
section_indexgeneral_symbol_info555   short section_index () const
556   { return m_section; }
557 
558   /* Return the obj_section from OBJFILE for this symbol.  The symbol
559      returned is based on the SECTION member variable, and can be nullptr
560      if SECTION is negative.  */
561 
562   struct obj_section *obj_section (const struct objfile *objfile) const;
563 };
564 
565 extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *);
566 
567 /* Return the address of SYM.  The MAYBE_COPIED flag must be set on
568    SYM.  If SYM appears in the main program's minimal symbols, then
569    that minsym's address is returned; otherwise, SYM's address is
570    returned.  This should generally only be used via the
571    SYMBOL_VALUE_ADDRESS macro.  */
572 
573 extern CORE_ADDR get_symbol_address (const struct symbol *sym);
574 
575 /* Note that these macros only work with symbol, not partial_symbol.  */
576 
577 #define SYMBOL_VALUE(symbol)		(symbol)->value.ivalue
578 #define SYMBOL_VALUE_ADDRESS(symbol)			      \
579   (((symbol)->maybe_copied) ? get_symbol_address (symbol)     \
580    : ((symbol)->value.address))
581 #define SET_SYMBOL_VALUE_ADDRESS(symbol, new_value)	\
582   ((symbol)->value.address = (new_value))
583 #define SYMBOL_VALUE_BYTES(symbol)	(symbol)->value.bytes
584 #define SYMBOL_VALUE_COMMON_BLOCK(symbol) (symbol)->value.common_block
585 #define SYMBOL_BLOCK_VALUE(symbol)	(symbol)->value.block
586 #define SYMBOL_VALUE_CHAIN(symbol)	(symbol)->value.chain
587 
588 /* Try to determine the demangled name for a symbol, based on the
589    language of that symbol.  If the language is set to language_auto,
590    it will attempt to find any demangling algorithm that works and
591    then set the language appropriately.  The returned name is allocated
592    by the demangler and should be xfree'd.  */
593 
594 extern char *symbol_find_demangled_name (struct general_symbol_info *gsymbol,
595 					 const char *mangled);
596 
597 /* Return true if NAME matches the "search" name of SYMBOL, according
598    to the symbol's language.  */
599 #define SYMBOL_MATCHES_SEARCH_NAME(symbol, name)                       \
600   symbol_matches_search_name ((symbol), (name))
601 
602 /* Helper for SYMBOL_MATCHES_SEARCH_NAME that works with both symbols
603    and psymbols.  */
604 extern bool symbol_matches_search_name
605   (const struct general_symbol_info *gsymbol,
606    const lookup_name_info &name);
607 
608 /* Compute the hash of the given symbol search name of a symbol of
609    language LANGUAGE.  */
610 extern unsigned int search_name_hash (enum language language,
611 				      const char *search_name);
612 
613 /* Classification types for a minimal symbol.  These should be taken as
614    "advisory only", since if gdb can't easily figure out a
615    classification it simply selects mst_unknown.  It may also have to
616    guess when it can't figure out which is a better match between two
617    types (mst_data versus mst_bss) for example.  Since the minimal
618    symbol info is sometimes derived from the BFD library's view of a
619    file, we need to live with what information bfd supplies.  */
620 
621 enum minimal_symbol_type
622 {
623   mst_unknown = 0,		/* Unknown type, the default */
624   mst_text,			/* Generally executable instructions */
625 
626   /* A GNU ifunc symbol, in the .text section.  GDB uses to know
627      whether the user is setting a breakpoint on a GNU ifunc function,
628      and thus GDB needs to actually set the breakpoint on the target
629      function.  It is also used to know whether the program stepped
630      into an ifunc resolver -- the resolver may get a separate
631      symbol/alias under a different name, but it'll have the same
632      address as the ifunc symbol.  */
633   mst_text_gnu_ifunc,           /* Executable code returning address
634 				   of executable code */
635 
636   /* A GNU ifunc function descriptor symbol, in a data section
637      (typically ".opd").  Seen on architectures that use function
638      descriptors, like PPC64/ELFv1.  In this case, this symbol's value
639      is the address of the descriptor.  There'll be a corresponding
640      mst_text_gnu_ifunc synthetic symbol for the text/entry
641      address.  */
642   mst_data_gnu_ifunc,		/* Executable code returning address
643 				   of executable code */
644 
645   mst_slot_got_plt,		/* GOT entries for .plt sections */
646   mst_data,			/* Generally initialized data */
647   mst_bss,			/* Generally uninitialized data */
648   mst_abs,			/* Generally absolute (nonrelocatable) */
649   /* GDB uses mst_solib_trampoline for the start address of a shared
650      library trampoline entry.  Breakpoints for shared library functions
651      are put there if the shared library is not yet loaded.
652      After the shared library is loaded, lookup_minimal_symbol will
653      prefer the minimal symbol from the shared library (usually
654      a mst_text symbol) over the mst_solib_trampoline symbol, and the
655      breakpoints will be moved to their true address in the shared
656      library via breakpoint_re_set.  */
657   mst_solib_trampoline,		/* Shared library trampoline code */
658   /* For the mst_file* types, the names are only guaranteed to be unique
659      within a given .o file.  */
660   mst_file_text,		/* Static version of mst_text */
661   mst_file_data,		/* Static version of mst_data */
662   mst_file_bss,			/* Static version of mst_bss */
663   nr_minsym_types
664 };
665 
666 /* The number of enum minimal_symbol_type values, with some padding for
667    reasonable growth.  */
668 #define MINSYM_TYPE_BITS 4
669 gdb_static_assert (nr_minsym_types <= (1 << MINSYM_TYPE_BITS));
670 
671 /* Define a simple structure used to hold some very basic information about
672    all defined global symbols (text, data, bss, abs, etc).  The only required
673    information is the general_symbol_info.
674 
675    In many cases, even if a file was compiled with no special options for
676    debugging at all, as long as was not stripped it will contain sufficient
677    information to build a useful minimal symbol table using this structure.
678    Even when a file contains enough debugging information to build a full
679    symbol table, these minimal symbols are still useful for quickly mapping
680    between names and addresses, and vice versa.  They are also sometimes
681    used to figure out what full symbol table entries need to be read in.  */
682 
683 struct minimal_symbol : public general_symbol_info
684 {
685   /* Size of this symbol.  dbx_end_psymtab in dbxread.c uses this
686      information to calculate the end of the partial symtab based on the
687      address of the last symbol plus the size of the last symbol.  */
688 
689   unsigned long size;
690 
691   /* Which source file is this symbol in?  Only relevant for mst_file_*.  */
692   const char *filename;
693 
694   /* Classification type for this minimal symbol.  */
695 
696   ENUM_BITFIELD(minimal_symbol_type) type : MINSYM_TYPE_BITS;
697 
698   /* Non-zero if this symbol was created by gdb.
699      Such symbols do not appear in the output of "info var|fun".  */
700   unsigned int created_by_gdb : 1;
701 
702   /* Two flag bits provided for the use of the target.  */
703   unsigned int target_flag_1 : 1;
704   unsigned int target_flag_2 : 1;
705 
706   /* Nonzero iff the size of the minimal symbol has been set.
707      Symbol size information can sometimes not be determined, because
708      the object file format may not carry that piece of information.  */
709   unsigned int has_size : 1;
710 
711   /* For data symbols only, if this is set, then the symbol might be
712      subject to copy relocation.  In this case, a minimal symbol
713      matching the symbol's linkage name is first looked for in the
714      main objfile.  If found, then that address is used; otherwise the
715      address in this symbol is used.  */
716 
717   unsigned maybe_copied : 1;
718 
719   /* Non-zero if this symbol ever had its demangled name set (even if
720      it was set to NULL).  */
721   unsigned int name_set : 1;
722 
723   /* Minimal symbols with the same hash key are kept on a linked
724      list.  This is the link.  */
725 
726   struct minimal_symbol *hash_next;
727 
728   /* Minimal symbols are stored in two different hash tables.  This is
729      the `next' pointer for the demangled hash table.  */
730 
731   struct minimal_symbol *demangled_hash_next;
732 
733   /* True if this symbol is of some data type.  */
734 
735   bool data_p () const;
736 
737   /* True if MSYMBOL is of some text type.  */
738 
739   bool text_p () const;
740 };
741 
742 /* Return the address of MINSYM, which comes from OBJF.  The
743    MAYBE_COPIED flag must be set on MINSYM.  If MINSYM appears in the
744    main program's minimal symbols, then that minsym's address is
745    returned; otherwise, MINSYM's address is returned.  This should
746    generally only be used via the MSYMBOL_VALUE_ADDRESS macro.  */
747 
748 extern CORE_ADDR get_msymbol_address (struct objfile *objf,
749 				      const struct minimal_symbol *minsym);
750 
751 #define MSYMBOL_TARGET_FLAG_1(msymbol)  (msymbol)->target_flag_1
752 #define MSYMBOL_TARGET_FLAG_2(msymbol)  (msymbol)->target_flag_2
753 #define MSYMBOL_SIZE(msymbol)		((msymbol)->size + 0)
754 #define SET_MSYMBOL_SIZE(msymbol, sz)		\
755   do						\
756     {						\
757       (msymbol)->size = sz;			\
758       (msymbol)->has_size = 1;			\
759     } while (0)
760 #define MSYMBOL_HAS_SIZE(msymbol)	((msymbol)->has_size + 0)
761 #define MSYMBOL_TYPE(msymbol)		(msymbol)->type
762 
763 #define MSYMBOL_VALUE(symbol)		(symbol)->value.ivalue
764 /* The unrelocated address of the minimal symbol.  */
765 #define MSYMBOL_VALUE_RAW_ADDRESS(symbol) ((symbol)->value.address + 0)
766 /* The relocated address of the minimal symbol, using the section
767    offsets from OBJFILE.  */
768 #define MSYMBOL_VALUE_ADDRESS(objfile, symbol)				\
769   (((symbol)->maybe_copied) ? get_msymbol_address (objfile, symbol)	\
770    : ((symbol)->value.address						\
771       + (objfile)->section_offsets[(symbol)->section_index ()]))
772 /* For a bound minsym, we can easily compute the address directly.  */
773 #define BMSYMBOL_VALUE_ADDRESS(symbol) \
774   MSYMBOL_VALUE_ADDRESS ((symbol).objfile, (symbol).minsym)
775 #define SET_MSYMBOL_VALUE_ADDRESS(symbol, new_value)	\
776   ((symbol)->value.address = (new_value))
777 #define MSYMBOL_VALUE_BYTES(symbol)	(symbol)->value.bytes
778 #define MSYMBOL_BLOCK_VALUE(symbol)	(symbol)->value.block
779 #define MSYMBOL_VALUE_CHAIN(symbol)	(symbol)->value.chain
780 
781 #include "minsyms.h"
782 
783 
784 
785 /* Represent one symbol name; a variable, constant, function or typedef.  */
786 
787 /* Different name domains for symbols.  Looking up a symbol specifies a
788    domain and ignores symbol definitions in other name domains.  */
789 
790 typedef enum domain_enum_tag
791 {
792   /* UNDEF_DOMAIN is used when a domain has not been discovered or
793      none of the following apply.  This usually indicates an error either
794      in the symbol information or in gdb's handling of symbols.  */
795 
796   UNDEF_DOMAIN,
797 
798   /* VAR_DOMAIN is the usual domain.  In C, this contains variables,
799      function names, typedef names and enum type values.  */
800 
801   VAR_DOMAIN,
802 
803   /* STRUCT_DOMAIN is used in C to hold struct, union and enum type names.
804      Thus, if `struct foo' is used in a C program, it produces a symbol named
805      `foo' in the STRUCT_DOMAIN.  */
806 
807   STRUCT_DOMAIN,
808 
809   /* MODULE_DOMAIN is used in Fortran to hold module type names.  */
810 
811   MODULE_DOMAIN,
812 
813   /* LABEL_DOMAIN may be used for names of labels (for gotos).  */
814 
815   LABEL_DOMAIN,
816 
817   /* Fortran common blocks.  Their naming must be separate from VAR_DOMAIN.
818      They also always use LOC_COMMON_BLOCK.  */
819   COMMON_BLOCK_DOMAIN,
820 
821   /* This must remain last.  */
822   NR_DOMAINS
823 } domain_enum;
824 
825 /* The number of bits in a symbol used to represent the domain.  */
826 
827 #define SYMBOL_DOMAIN_BITS 3
828 gdb_static_assert (NR_DOMAINS <= (1 << SYMBOL_DOMAIN_BITS));
829 
830 extern const char *domain_name (domain_enum);
831 
832 /* Searching domains, used when searching for symbols.  Element numbers are
833    hardcoded in GDB, check all enum uses before changing it.  */
834 
835 enum search_domain
836 {
837   /* Everything in VAR_DOMAIN minus FUNCTIONS_DOMAIN and
838      TYPES_DOMAIN.  */
839   VARIABLES_DOMAIN = 0,
840 
841   /* All functions -- for some reason not methods, though.  */
842   FUNCTIONS_DOMAIN = 1,
843 
844   /* All defined types */
845   TYPES_DOMAIN = 2,
846 
847   /* All modules.  */
848   MODULES_DOMAIN = 3,
849 
850   /* Any type.  */
851   ALL_DOMAIN = 4
852 };
853 
854 extern const char *search_domain_name (enum search_domain);
855 
856 /* An address-class says where to find the value of a symbol.  */
857 
858 enum address_class
859 {
860   /* Not used; catches errors.  */
861 
862   LOC_UNDEF,
863 
864   /* Value is constant int SYMBOL_VALUE, host byteorder.  */
865 
866   LOC_CONST,
867 
868   /* Value is at fixed address SYMBOL_VALUE_ADDRESS.  */
869 
870   LOC_STATIC,
871 
872   /* Value is in register.  SYMBOL_VALUE is the register number
873      in the original debug format.  SYMBOL_REGISTER_OPS holds a
874      function that can be called to transform this into the
875      actual register number this represents in a specific target
876      architecture (gdbarch).
877 
878      For some symbol formats (stabs, for some compilers at least),
879      the compiler generates two symbols, an argument and a register.
880      In some cases we combine them to a single LOC_REGISTER in symbol
881      reading, but currently not for all cases (e.g. it's passed on the
882      stack and then loaded into a register).  */
883 
884   LOC_REGISTER,
885 
886   /* It's an argument; the value is at SYMBOL_VALUE offset in arglist.  */
887 
888   LOC_ARG,
889 
890   /* Value address is at SYMBOL_VALUE offset in arglist.  */
891 
892   LOC_REF_ARG,
893 
894   /* Value is in specified register.  Just like LOC_REGISTER except the
895      register holds the address of the argument instead of the argument
896      itself.  This is currently used for the passing of structs and unions
897      on sparc and hppa.  It is also used for call by reference where the
898      address is in a register, at least by mipsread.c.  */
899 
900   LOC_REGPARM_ADDR,
901 
902   /* Value is a local variable at SYMBOL_VALUE offset in stack frame.  */
903 
904   LOC_LOCAL,
905 
906   /* Value not used; definition in SYMBOL_TYPE.  Symbols in the domain
907      STRUCT_DOMAIN all have this class.  */
908 
909   LOC_TYPEDEF,
910 
911   /* Value is address SYMBOL_VALUE_ADDRESS in the code.  */
912 
913   LOC_LABEL,
914 
915   /* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
916      In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
917      of the block.  Function names have this class.  */
918 
919   LOC_BLOCK,
920 
921   /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_BYTES, in
922      target byte order.  */
923 
924   LOC_CONST_BYTES,
925 
926   /* Value is at fixed address, but the address of the variable has
927      to be determined from the minimal symbol table whenever the
928      variable is referenced.
929      This happens if debugging information for a global symbol is
930      emitted and the corresponding minimal symbol is defined
931      in another object file or runtime common storage.
932      The linker might even remove the minimal symbol if the global
933      symbol is never referenced, in which case the symbol remains
934      unresolved.
935 
936      GDB would normally find the symbol in the minimal symbol table if it will
937      not find it in the full symbol table.  But a reference to an external
938      symbol in a local block shadowing other definition requires full symbol
939      without possibly having its address available for LOC_STATIC.  Testcase
940      is provided as `gdb.dwarf2/dw2-unresolved.exp'.
941 
942      This is also used for thread local storage (TLS) variables.  In this case,
943      the address of the TLS variable must be determined when the variable is
944      referenced, from the MSYMBOL_VALUE_RAW_ADDRESS, which is the offset
945      of the TLS variable in the thread local storage of the shared
946      library/object.  */
947 
948   LOC_UNRESOLVED,
949 
950   /* The variable does not actually exist in the program.
951      The value is ignored.  */
952 
953   LOC_OPTIMIZED_OUT,
954 
955   /* The variable's address is computed by a set of location
956      functions (see "struct symbol_computed_ops" below).  */
957   LOC_COMPUTED,
958 
959   /* The variable uses general_symbol_info->value->common_block field.
960      It also always uses COMMON_BLOCK_DOMAIN.  */
961   LOC_COMMON_BLOCK,
962 
963   /* Not used, just notes the boundary of the enum.  */
964   LOC_FINAL_VALUE
965 };
966 
967 /* The number of bits needed for values in enum address_class, with some
968    padding for reasonable growth, and room for run-time registered address
969    classes. See symtab.c:MAX_SYMBOL_IMPLS.
970    This is a #define so that we can have a assertion elsewhere to
971    verify that we have reserved enough space for synthetic address
972    classes.  */
973 #define SYMBOL_ACLASS_BITS 5
974 gdb_static_assert (LOC_FINAL_VALUE <= (1 << SYMBOL_ACLASS_BITS));
975 
976 /* The methods needed to implement LOC_COMPUTED.  These methods can
977    use the symbol's .aux_value for additional per-symbol information.
978 
979    At present this is only used to implement location expressions.  */
980 
981 struct symbol_computed_ops
982 {
983 
984   /* Return the value of the variable SYMBOL, relative to the stack
985      frame FRAME.  If the variable has been optimized out, return
986      zero.
987 
988      Iff `read_needs_frame (SYMBOL)' is not SYMBOL_NEEDS_FRAME, then
989      FRAME may be zero.  */
990 
991   struct value *(*read_variable) (struct symbol * symbol,
992 				  struct frame_info * frame);
993 
994   /* Read variable SYMBOL like read_variable at (callee) FRAME's function
995      entry.  SYMBOL should be a function parameter, otherwise
996      NO_ENTRY_VALUE_ERROR will be thrown.  */
997   struct value *(*read_variable_at_entry) (struct symbol *symbol,
998 					   struct frame_info *frame);
999 
1000   /* Find the "symbol_needs_kind" value for the given symbol.  This
1001      value determines whether reading the symbol needs memory (e.g., a
1002      global variable), just registers (a thread-local), or a frame (a
1003      local variable).  */
1004   enum symbol_needs_kind (*get_symbol_read_needs) (struct symbol * symbol);
1005 
1006   /* Write to STREAM a natural-language description of the location of
1007      SYMBOL, in the context of ADDR.  */
1008   void (*describe_location) (struct symbol * symbol, CORE_ADDR addr,
1009 			     struct ui_file * stream);
1010 
1011   /* Non-zero if this symbol's address computation is dependent on PC.  */
1012   unsigned char location_has_loclist;
1013 
1014   /* Tracepoint support.  Append bytecodes to the tracepoint agent
1015      expression AX that push the address of the object SYMBOL.  Set
1016      VALUE appropriately.  Note --- for objects in registers, this
1017      needn't emit any code; as long as it sets VALUE properly, then
1018      the caller will generate the right code in the process of
1019      treating this as an lvalue or rvalue.  */
1020 
1021   void (*tracepoint_var_ref) (struct symbol *symbol, struct agent_expr *ax,
1022 			      struct axs_value *value);
1023 
1024   /* Generate C code to compute the location of SYMBOL.  The C code is
1025      emitted to STREAM.  GDBARCH is the current architecture and PC is
1026      the PC at which SYMBOL's location should be evaluated.
1027      REGISTERS_USED is a vector indexed by register number; the
1028      generator function should set an element in this vector if the
1029      corresponding register is needed by the location computation.
1030      The generated C code must assign the location to a local
1031      variable; this variable's name is RESULT_NAME.  */
1032 
1033   void (*generate_c_location) (struct symbol *symbol, string_file *stream,
1034 			       struct gdbarch *gdbarch,
1035 			       std::vector<bool> &registers_used,
1036 			       CORE_ADDR pc, const char *result_name);
1037 
1038 };
1039 
1040 /* The methods needed to implement LOC_BLOCK for inferior functions.
1041    These methods can use the symbol's .aux_value for additional
1042    per-symbol information.  */
1043 
1044 struct symbol_block_ops
1045 {
1046   /* Fill in *START and *LENGTH with DWARF block data of function
1047      FRAMEFUNC valid for inferior context address PC.  Set *LENGTH to
1048      zero if such location is not valid for PC; *START is left
1049      uninitialized in such case.  */
1050   void (*find_frame_base_location) (struct symbol *framefunc, CORE_ADDR pc,
1051 				    const gdb_byte **start, size_t *length);
1052 
1053   /* Return the frame base address.  FRAME is the frame for which we want to
1054      compute the base address while FRAMEFUNC is the symbol for the
1055      corresponding function.  Return 0 on failure (FRAMEFUNC may not hold the
1056      information we need).
1057 
1058      This method is designed to work with static links (nested functions
1059      handling).  Static links are function properties whose evaluation returns
1060      the frame base address for the enclosing frame.  However, there are
1061      multiple definitions for "frame base": the content of the frame base
1062      register, the CFA as defined by DWARF unwinding information, ...
1063 
1064      So this specific method is supposed to compute the frame base address such
1065      as for nested functions, the static link computes the same address.  For
1066      instance, considering DWARF debugging information, the static link is
1067      computed with DW_AT_static_link and this method must be used to compute
1068      the corresponding DW_AT_frame_base attribute.  */
1069   CORE_ADDR (*get_frame_base) (struct symbol *framefunc,
1070 			       struct frame_info *frame);
1071 };
1072 
1073 /* Functions used with LOC_REGISTER and LOC_REGPARM_ADDR.  */
1074 
1075 struct symbol_register_ops
1076 {
1077   int (*register_number) (struct symbol *symbol, struct gdbarch *gdbarch);
1078 };
1079 
1080 /* Objects of this type are used to find the address class and the
1081    various computed ops vectors of a symbol.  */
1082 
1083 struct symbol_impl
1084 {
1085   enum address_class aclass;
1086 
1087   /* Used with LOC_COMPUTED.  */
1088   const struct symbol_computed_ops *ops_computed;
1089 
1090   /* Used with LOC_BLOCK.  */
1091   const struct symbol_block_ops *ops_block;
1092 
1093   /* Used with LOC_REGISTER and LOC_REGPARM_ADDR.  */
1094   const struct symbol_register_ops *ops_register;
1095 };
1096 
1097 /* struct symbol has some subclasses.  This enum is used to
1098    differentiate between them.  */
1099 
1100 enum symbol_subclass_kind
1101 {
1102   /* Plain struct symbol.  */
1103   SYMBOL_NONE,
1104 
1105   /* struct template_symbol.  */
1106   SYMBOL_TEMPLATE,
1107 
1108   /* struct rust_vtable_symbol.  */
1109   SYMBOL_RUST_VTABLE
1110 };
1111 
1112 /* This structure is space critical.  See space comments at the top.  */
1113 
1114 struct symbol : public general_symbol_info, public allocate_on_obstack
1115 {
symbolsymbol1116   symbol ()
1117     /* Class-initialization of bitfields is only allowed in C++20.  */
1118     : domain (UNDEF_DOMAIN),
1119       aclass_index (0),
1120       is_objfile_owned (1),
1121       is_argument (0),
1122       is_inlined (0),
1123       maybe_copied (0),
1124       subclass (SYMBOL_NONE)
1125     {
1126       /* We can't use an initializer list for members of a base class, and
1127 	 general_symbol_info needs to stay a POD type.  */
1128       m_name = nullptr;
1129       value.ivalue = 0;
1130       language_specific.obstack = nullptr;
1131       m_language = language_unknown;
1132       ada_mangled = 0;
1133       m_section = -1;
1134       /* GCC 4.8.5 (on CentOS 7) does not correctly compile class-
1135 	 initialization of unions, so we initialize it manually here.  */
1136       owner.symtab = nullptr;
1137     }
1138 
1139   symbol (const symbol &) = default;
1140   symbol &operator= (const symbol &) = default;
1141 
1142   /* Data type of value */
1143 
1144   struct type *type = nullptr;
1145 
1146   /* The owner of this symbol.
1147      Which one to use is defined by symbol.is_objfile_owned.  */
1148 
1149   union
1150   {
1151     /* The symbol table containing this symbol.  This is the file associated
1152        with LINE.  It can be NULL during symbols read-in but it is never NULL
1153        during normal operation.  */
1154     struct symtab *symtab;
1155 
1156     /* For types defined by the architecture.  */
1157     struct gdbarch *arch;
1158   } owner;
1159 
1160   /* Domain code.  */
1161 
1162   ENUM_BITFIELD(domain_enum_tag) domain : SYMBOL_DOMAIN_BITS;
1163 
1164   /* Address class.  This holds an index into the 'symbol_impls'
1165      table.  The actual enum address_class value is stored there,
1166      alongside any per-class ops vectors.  */
1167 
1168   unsigned int aclass_index : SYMBOL_ACLASS_BITS;
1169 
1170   /* If non-zero then symbol is objfile-owned, use owner.symtab.
1171        Otherwise symbol is arch-owned, use owner.arch.  */
1172 
1173   unsigned int is_objfile_owned : 1;
1174 
1175   /* Whether this is an argument.  */
1176 
1177   unsigned is_argument : 1;
1178 
1179   /* Whether this is an inlined function (class LOC_BLOCK only).  */
1180   unsigned is_inlined : 1;
1181 
1182   /* For LOC_STATIC only, if this is set, then the symbol might be
1183      subject to copy relocation.  In this case, a minimal symbol
1184      matching the symbol's linkage name is first looked for in the
1185      main objfile.  If found, then that address is used; otherwise the
1186      address in this symbol is used.  */
1187 
1188   unsigned maybe_copied : 1;
1189 
1190   /* The concrete type of this symbol.  */
1191 
1192   ENUM_BITFIELD (symbol_subclass_kind) subclass : 2;
1193 
1194   /* Line number of this symbol's definition, except for inlined
1195      functions.  For an inlined function (class LOC_BLOCK and
1196      SYMBOL_INLINED set) this is the line number of the function's call
1197      site.  Inlined function symbols are not definitions, and they are
1198      never found by symbol table lookup.
1199      If this symbol is arch-owned, LINE shall be zero.
1200 
1201      FIXME: Should we really make the assumption that nobody will try
1202      to debug files longer than 64K lines?  What about machine
1203      generated programs?  */
1204 
1205   unsigned short line = 0;
1206 
1207   /* An arbitrary data pointer, allowing symbol readers to record
1208      additional information on a per-symbol basis.  Note that this data
1209      must be allocated using the same obstack as the symbol itself.  */
1210   /* So far it is only used by:
1211      LOC_COMPUTED: to find the location information
1212      LOC_BLOCK (DWARF2 function): information used internally by the
1213      DWARF 2 code --- specifically, the location expression for the frame
1214      base for this function.  */
1215   /* FIXME drow/2003-02-21: For the LOC_BLOCK case, it might be better
1216      to add a magic symbol to the block containing this information,
1217      or to have a generic debug info annotation slot for symbols.  */
1218 
1219   void *aux_value = nullptr;
1220 
1221   struct symbol *hash_next = nullptr;
1222 };
1223 
1224 /* Several lookup functions return both a symbol and the block in which the
1225    symbol is found.  This structure is used in these cases.  */
1226 
1227 struct block_symbol
1228 {
1229   /* The symbol that was found, or NULL if no symbol was found.  */
1230   struct symbol *symbol;
1231 
1232   /* If SYMBOL is not NULL, then this is the block in which the symbol is
1233      defined.  */
1234   const struct block *block;
1235 };
1236 
1237 extern const struct symbol_impl *symbol_impls;
1238 
1239 /* Note: There is no accessor macro for symbol.owner because it is
1240    "private".  */
1241 
1242 #define SYMBOL_DOMAIN(symbol)	(symbol)->domain
1243 #define SYMBOL_IMPL(symbol)		(symbol_impls[(symbol)->aclass_index])
1244 #define SYMBOL_ACLASS_INDEX(symbol)	(symbol)->aclass_index
1245 #define SYMBOL_CLASS(symbol)		(SYMBOL_IMPL (symbol).aclass)
1246 #define SYMBOL_OBJFILE_OWNED(symbol)	((symbol)->is_objfile_owned)
1247 #define SYMBOL_IS_ARGUMENT(symbol)	(symbol)->is_argument
1248 #define SYMBOL_INLINED(symbol)		(symbol)->is_inlined
1249 #define SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION(symbol) \
1250   (((symbol)->subclass) == SYMBOL_TEMPLATE)
1251 #define SYMBOL_TYPE(symbol)		(symbol)->type
1252 #define SYMBOL_LINE(symbol)		(symbol)->line
1253 #define SYMBOL_COMPUTED_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_computed)
1254 #define SYMBOL_BLOCK_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_block)
1255 #define SYMBOL_REGISTER_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_register)
1256 #define SYMBOL_LOCATION_BATON(symbol)   (symbol)->aux_value
1257 
1258 extern int register_symbol_computed_impl (enum address_class,
1259 					  const struct symbol_computed_ops *);
1260 
1261 extern int register_symbol_block_impl (enum address_class aclass,
1262 				       const struct symbol_block_ops *ops);
1263 
1264 extern int register_symbol_register_impl (enum address_class,
1265 					  const struct symbol_register_ops *);
1266 
1267 /* Return the OBJFILE of SYMBOL.
1268    It is an error to call this if symbol.is_objfile_owned is false, which
1269    only happens for architecture-provided types.  */
1270 
1271 extern struct objfile *symbol_objfile (const struct symbol *symbol);
1272 
1273 /* Return the ARCH of SYMBOL.  */
1274 
1275 extern struct gdbarch *symbol_arch (const struct symbol *symbol);
1276 
1277 /* Return the SYMTAB of SYMBOL.
1278    It is an error to call this if symbol.is_objfile_owned is false, which
1279    only happens for architecture-provided types.  */
1280 
1281 extern struct symtab *symbol_symtab (const struct symbol *symbol);
1282 
1283 /* Set the symtab of SYMBOL to SYMTAB.
1284    It is an error to call this if symbol.is_objfile_owned is false, which
1285    only happens for architecture-provided types.  */
1286 
1287 extern void symbol_set_symtab (struct symbol *symbol, struct symtab *symtab);
1288 
1289 /* An instance of this type is used to represent a C++ template
1290    function.  A symbol is really of this type iff
1291    SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION is true.  */
1292 
1293 struct template_symbol : public symbol
1294 {
1295   /* The number of template arguments.  */
1296   int n_template_arguments = 0;
1297 
1298   /* The template arguments.  This is an array with
1299      N_TEMPLATE_ARGUMENTS elements.  */
1300   struct symbol **template_arguments = nullptr;
1301 };
1302 
1303 /* A symbol that represents a Rust virtual table object.  */
1304 
1305 struct rust_vtable_symbol : public symbol
1306 {
1307   /* The concrete type for which this vtable was created; that is, in
1308      "impl Trait for Type", this is "Type".  */
1309   struct type *concrete_type = nullptr;
1310 };
1311 
1312 
1313 /* Each item represents a line-->pc (or the reverse) mapping.  This is
1314    somewhat more wasteful of space than one might wish, but since only
1315    the files which are actually debugged are read in to core, we don't
1316    waste much space.  */
1317 
1318 struct linetable_entry
1319 {
1320   /* The line number for this entry.  */
1321   int line;
1322 
1323   /* True if this PC is a good location to place a breakpoint for LINE.  */
1324   unsigned is_stmt : 1;
1325 
1326   /* The address for this entry.  */
1327   CORE_ADDR pc;
1328 };
1329 
1330 /* The order of entries in the linetable is significant.  They should
1331    be sorted by increasing values of the pc field.  If there is more than
1332    one entry for a given pc, then I'm not sure what should happen (and
1333    I not sure whether we currently handle it the best way).
1334 
1335    Example: a C for statement generally looks like this
1336 
1337    10   0x100   - for the init/test part of a for stmt.
1338    20   0x200
1339    30   0x300
1340    10   0x400   - for the increment part of a for stmt.
1341 
1342    If an entry has a line number of zero, it marks the start of a PC
1343    range for which no line number information is available.  It is
1344    acceptable, though wasteful of table space, for such a range to be
1345    zero length.  */
1346 
1347 struct linetable
1348 {
1349   int nitems;
1350 
1351   /* Actually NITEMS elements.  If you don't like this use of the
1352      `struct hack', you can shove it up your ANSI (seriously, if the
1353      committee tells us how to do it, we can probably go along).  */
1354   struct linetable_entry item[1];
1355 };
1356 
1357 /* How to relocate the symbols from each section in a symbol file.
1358    The ordering and meaning of the offsets is file-type-dependent;
1359    typically it is indexed by section numbers or symbol types or
1360    something like that.  */
1361 
1362 typedef std::vector<CORE_ADDR> section_offsets;
1363 
1364 /* Each source file or header is represented by a struct symtab.
1365    The name "symtab" is historical, another name for it is "filetab".
1366    These objects are chained through the `next' field.  */
1367 
1368 struct symtab
1369 {
1370   /* Unordered chain of all filetabs in the compunit,  with the exception
1371      that the "main" source file is the first entry in the list.  */
1372 
1373   struct symtab *next;
1374 
1375   /* Backlink to containing compunit symtab.  */
1376 
1377   struct compunit_symtab *compunit_symtab;
1378 
1379   /* Table mapping core addresses to line numbers for this file.
1380      Can be NULL if none.  Never shared between different symtabs.  */
1381 
1382   struct linetable *linetable;
1383 
1384   /* Name of this source file.  This pointer is never NULL.  */
1385 
1386   const char *filename;
1387 
1388   /* Language of this source file.  */
1389 
1390   enum language language;
1391 
1392   /* Full name of file as found by searching the source path.
1393      NULL if not yet known.  */
1394 
1395   char *fullname;
1396 };
1397 
1398 #define SYMTAB_COMPUNIT(symtab) ((symtab)->compunit_symtab)
1399 #define SYMTAB_LINETABLE(symtab) ((symtab)->linetable)
1400 #define SYMTAB_LANGUAGE(symtab) ((symtab)->language)
1401 #define SYMTAB_BLOCKVECTOR(symtab) \
1402   COMPUNIT_BLOCKVECTOR (SYMTAB_COMPUNIT (symtab))
1403 #define SYMTAB_OBJFILE(symtab) \
1404   COMPUNIT_OBJFILE (SYMTAB_COMPUNIT (symtab))
1405 #define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace)
1406 #define SYMTAB_DIRNAME(symtab) \
1407   COMPUNIT_DIRNAME (SYMTAB_COMPUNIT (symtab))
1408 
1409 /* Compunit symtabs contain the actual "symbol table", aka blockvector, as well
1410    as the list of all source files (what gdb has historically associated with
1411    the term "symtab").
1412    Additional information is recorded here that is common to all symtabs in a
1413    compilation unit (DWARF or otherwise).
1414 
1415    Example:
1416    For the case of a program built out of these files:
1417 
1418    foo.c
1419      foo1.h
1420      foo2.h
1421    bar.c
1422      foo1.h
1423      bar.h
1424 
1425    This is recorded as:
1426 
1427    objfile -> foo.c(cu) -> bar.c(cu) -> NULL
1428 		|            |
1429 		v            v
1430 	      foo.c        bar.c
1431 		|            |
1432 		v            v
1433 	      foo1.h       foo1.h
1434 		|            |
1435 		v            v
1436 	      foo2.h       bar.h
1437 		|            |
1438 		v            v
1439 	       NULL         NULL
1440 
1441    where "foo.c(cu)" and "bar.c(cu)" are struct compunit_symtab objects,
1442    and the files foo.c, etc. are struct symtab objects.  */
1443 
1444 struct compunit_symtab
1445 {
1446   /* Unordered chain of all compunit symtabs of this objfile.  */
1447   struct compunit_symtab *next;
1448 
1449   /* Object file from which this symtab information was read.  */
1450   struct objfile *objfile;
1451 
1452   /* Name of the symtab.
1453      This is *not* intended to be a usable filename, and is
1454      for debugging purposes only.  */
1455   const char *name;
1456 
1457   /* Unordered list of file symtabs, except that by convention the "main"
1458      source file (e.g., .c, .cc) is guaranteed to be first.
1459      Each symtab is a file, either the "main" source file (e.g., .c, .cc)
1460      or header (e.g., .h).  */
1461   struct symtab *filetabs;
1462 
1463   /* Last entry in FILETABS list.
1464      Subfiles are added to the end of the list so they accumulate in order,
1465      with the main source subfile living at the front.
1466      The main reason is so that the main source file symtab is at the head
1467      of the list, and the rest appear in order for debugging convenience.  */
1468   struct symtab *last_filetab;
1469 
1470   /* Non-NULL string that identifies the format of the debugging information,
1471      such as "stabs", "dwarf 1", "dwarf 2", "coff", etc.  This is mostly useful
1472      for automated testing of gdb but may also be information that is
1473      useful to the user.  */
1474   const char *debugformat;
1475 
1476   /* String of producer version information, or NULL if we don't know.  */
1477   const char *producer;
1478 
1479   /* Directory in which it was compiled, or NULL if we don't know.  */
1480   const char *dirname;
1481 
1482   /* List of all symbol scope blocks for this symtab.  It is shared among
1483      all symtabs in a given compilation unit.  */
1484   const struct blockvector *blockvector;
1485 
1486   /* Section in objfile->section_offsets for the blockvector and
1487      the linetable.  Probably always SECT_OFF_TEXT.  */
1488   int block_line_section;
1489 
1490   /* Symtab has been compiled with both optimizations and debug info so that
1491      GDB may stop skipping prologues as variables locations are valid already
1492      at function entry points.  */
1493   unsigned int locations_valid : 1;
1494 
1495   /* DWARF unwinder for this CU is valid even for epilogues (PC at the return
1496      instruction).  This is supported by GCC since 4.5.0.  */
1497   unsigned int epilogue_unwind_valid : 1;
1498 
1499   /* struct call_site entries for this compilation unit or NULL.  */
1500   htab_t call_site_htab;
1501 
1502   /* The macro table for this symtab.  Like the blockvector, this
1503      is shared between different symtabs in a given compilation unit.
1504      It's debatable whether it *should* be shared among all the symtabs in
1505      the given compilation unit, but it currently is.  */
1506   struct macro_table *macro_table;
1507 
1508   /* If non-NULL, then this points to a NULL-terminated vector of
1509      included compunits.  When searching the static or global
1510      block of this compunit, the corresponding block of all
1511      included compunits will also be searched.  Note that this
1512      list must be flattened -- the symbol reader is responsible for
1513      ensuring that this vector contains the transitive closure of all
1514      included compunits.  */
1515   struct compunit_symtab **includes;
1516 
1517   /* If this is an included compunit, this points to one includer
1518      of the table.  This user is considered the canonical compunit
1519      containing this one.  An included compunit may itself be
1520      included by another.  */
1521   struct compunit_symtab *user;
1522 };
1523 
1524 #define COMPUNIT_OBJFILE(cust) ((cust)->objfile)
1525 #define COMPUNIT_FILETABS(cust) ((cust)->filetabs)
1526 #define COMPUNIT_DEBUGFORMAT(cust) ((cust)->debugformat)
1527 #define COMPUNIT_PRODUCER(cust) ((cust)->producer)
1528 #define COMPUNIT_DIRNAME(cust) ((cust)->dirname)
1529 #define COMPUNIT_BLOCKVECTOR(cust) ((cust)->blockvector)
1530 #define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section)
1531 #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid)
1532 #define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid)
1533 #define COMPUNIT_CALL_SITE_HTAB(cust) ((cust)->call_site_htab)
1534 #define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table)
1535 
1536 /* A range adapter to allowing iterating over all the file tables
1537    within a compunit.  */
1538 
1539 struct compunit_filetabs : public next_adapter<struct symtab>
1540 {
compunit_filetabscompunit_filetabs1541   compunit_filetabs (struct compunit_symtab *cu)
1542     : next_adapter<struct symtab> (cu->filetabs)
1543   {
1544   }
1545 };
1546 
1547 /* Return the primary symtab of CUST.  */
1548 
1549 extern struct symtab *
1550   compunit_primary_filetab (const struct compunit_symtab *cust);
1551 
1552 /* Return the language of CUST.  */
1553 
1554 extern enum language compunit_language (const struct compunit_symtab *cust);
1555 
1556 /* Return true if this symtab is the "main" symtab of its compunit_symtab.  */
1557 
1558 static inline bool
is_main_symtab_of_compunit_symtab(struct symtab * symtab)1559 is_main_symtab_of_compunit_symtab (struct symtab *symtab)
1560 {
1561   return symtab == COMPUNIT_FILETABS (SYMTAB_COMPUNIT (symtab));
1562 }
1563 
1564 
1565 /* The virtual function table is now an array of structures which have the
1566    form { int16 offset, delta; void *pfn; }.
1567 
1568    In normal virtual function tables, OFFSET is unused.
1569    DELTA is the amount which is added to the apparent object's base
1570    address in order to point to the actual object to which the
1571    virtual function should be applied.
1572    PFN is a pointer to the virtual function.
1573 
1574    Note that this macro is g++ specific (FIXME).  */
1575 
1576 #define VTBL_FNADDR_OFFSET 2
1577 
1578 /* External variables and functions for the objects described above.  */
1579 
1580 /* True if we are nested inside psymtab_to_symtab.  */
1581 
1582 extern int currently_reading_symtab;
1583 
1584 /* symtab.c lookup functions */
1585 
1586 extern const char multiple_symbols_ask[];
1587 extern const char multiple_symbols_all[];
1588 extern const char multiple_symbols_cancel[];
1589 
1590 const char *multiple_symbols_select_mode (void);
1591 
1592 bool symbol_matches_domain (enum language symbol_language,
1593 			    domain_enum symbol_domain,
1594 			    domain_enum domain);
1595 
1596 /* lookup a symbol table by source file name.  */
1597 
1598 extern struct symtab *lookup_symtab (const char *);
1599 
1600 /* An object of this type is passed as the 'is_a_field_of_this'
1601    argument to lookup_symbol and lookup_symbol_in_language.  */
1602 
1603 struct field_of_this_result
1604 {
1605   /* The type in which the field was found.  If this is NULL then the
1606      symbol was not found in 'this'.  If non-NULL, then one of the
1607      other fields will be non-NULL as well.  */
1608 
1609   struct type *type;
1610 
1611   /* If the symbol was found as an ordinary field of 'this', then this
1612      is non-NULL and points to the particular field.  */
1613 
1614   struct field *field;
1615 
1616   /* If the symbol was found as a function field of 'this', then this
1617      is non-NULL and points to the particular field.  */
1618 
1619   struct fn_fieldlist *fn_field;
1620 };
1621 
1622 /* Find the definition for a specified symbol name NAME
1623    in domain DOMAIN in language LANGUAGE, visible from lexical block BLOCK
1624    if non-NULL or from global/static blocks if BLOCK is NULL.
1625    Returns the struct symbol pointer, or NULL if no symbol is found.
1626    C++: if IS_A_FIELD_OF_THIS is non-NULL on entry, check to see if
1627    NAME is a field of the current implied argument `this'.  If so fill in the
1628    fields of IS_A_FIELD_OF_THIS, otherwise the fields are set to NULL.
1629    The symbol's section is fixed up if necessary.  */
1630 
1631 extern struct block_symbol
1632   lookup_symbol_in_language (const char *,
1633 			     const struct block *,
1634 			     const domain_enum,
1635 			     enum language,
1636 			     struct field_of_this_result *);
1637 
1638 /* Same as lookup_symbol_in_language, but using the current language.  */
1639 
1640 extern struct block_symbol lookup_symbol (const char *,
1641 					  const struct block *,
1642 					  const domain_enum,
1643 					  struct field_of_this_result *);
1644 
1645 /* Find the definition for a specified symbol search name in domain
1646    DOMAIN, visible from lexical block BLOCK if non-NULL or from
1647    global/static blocks if BLOCK is NULL.  The passed-in search name
1648    should not come from the user; instead it should already be a
1649    search name as retrieved from a search_name () call.  See definition of
1650    symbol_name_match_type::SEARCH_NAME.  Returns the struct symbol
1651    pointer, or NULL if no symbol is found.  The symbol's section is
1652    fixed up if necessary.  */
1653 
1654 extern struct block_symbol lookup_symbol_search_name (const char *search_name,
1655 						      const struct block *block,
1656 						      domain_enum domain);
1657 
1658 /* Some helper functions for languages that need to write their own
1659    lookup_symbol_nonlocal functions.  */
1660 
1661 /* Lookup a symbol in the static block associated to BLOCK, if there
1662    is one; do nothing if BLOCK is NULL or a global block.
1663    Upon success fixes up the symbol's section if necessary.  */
1664 
1665 extern struct block_symbol
1666   lookup_symbol_in_static_block (const char *name,
1667 				 const struct block *block,
1668 				 const domain_enum domain);
1669 
1670 /* Search all static file-level symbols for NAME from DOMAIN.
1671    Upon success fixes up the symbol's section if necessary.  */
1672 
1673 extern struct block_symbol lookup_static_symbol (const char *name,
1674 						 const domain_enum domain);
1675 
1676 /* Lookup a symbol in all files' global blocks.
1677 
1678    If BLOCK is non-NULL then it is used for two things:
1679    1) If a target-specific lookup routine for libraries exists, then use the
1680       routine for the objfile of BLOCK, and
1681    2) The objfile of BLOCK is used to assist in determining the search order
1682       if the target requires it.
1683       See gdbarch_iterate_over_objfiles_in_search_order.
1684 
1685    Upon success fixes up the symbol's section if necessary.  */
1686 
1687 extern struct block_symbol
1688   lookup_global_symbol (const char *name,
1689 			const struct block *block,
1690 			const domain_enum domain);
1691 
1692 /* Lookup a symbol in block BLOCK.
1693    Upon success fixes up the symbol's section if necessary.  */
1694 
1695 extern struct symbol *
1696   lookup_symbol_in_block (const char *name,
1697 			  symbol_name_match_type match_type,
1698 			  const struct block *block,
1699 			  const domain_enum domain);
1700 
1701 /* Look up the `this' symbol for LANG in BLOCK.  Return the symbol if
1702    found, or NULL if not found.  */
1703 
1704 extern struct block_symbol
1705   lookup_language_this (const struct language_defn *lang,
1706 			const struct block *block);
1707 
1708 /* Lookup a [struct, union, enum] by name, within a specified block.  */
1709 
1710 extern struct type *lookup_struct (const char *, const struct block *);
1711 
1712 extern struct type *lookup_union (const char *, const struct block *);
1713 
1714 extern struct type *lookup_enum (const char *, const struct block *);
1715 
1716 /* from blockframe.c: */
1717 
1718 /* lookup the function symbol corresponding to the address.  The
1719    return value will not be an inlined function; the containing
1720    function will be returned instead.  */
1721 
1722 extern struct symbol *find_pc_function (CORE_ADDR);
1723 
1724 /* lookup the function corresponding to the address and section.  The
1725    return value will not be an inlined function; the containing
1726    function will be returned instead.  */
1727 
1728 extern struct symbol *find_pc_sect_function (CORE_ADDR, struct obj_section *);
1729 
1730 /* lookup the function symbol corresponding to the address and
1731    section.  The return value will be the closest enclosing function,
1732    which might be an inline function.  */
1733 
1734 extern struct symbol *find_pc_sect_containing_function
1735   (CORE_ADDR pc, struct obj_section *section);
1736 
1737 /* Find the symbol at the given address.  Returns NULL if no symbol
1738    found.  Only exact matches for ADDRESS are considered.  */
1739 
1740 extern struct symbol *find_symbol_at_address (CORE_ADDR);
1741 
1742 /* Finds the "function" (text symbol) that is smaller than PC but
1743    greatest of all of the potential text symbols in SECTION.  Sets
1744    *NAME and/or *ADDRESS conditionally if that pointer is non-null.
1745    If ENDADDR is non-null, then set *ENDADDR to be the end of the
1746    function (exclusive).  If the optional parameter BLOCK is non-null,
1747    then set *BLOCK to the address of the block corresponding to the
1748    function symbol, if such a symbol could be found during the lookup;
1749    nullptr is used as a return value for *BLOCK if no block is found.
1750    This function either succeeds or fails (not halfway succeeds).  If
1751    it succeeds, it sets *NAME, *ADDRESS, and *ENDADDR to real
1752    information and returns true.  If it fails, it sets *NAME, *ADDRESS
1753    and *ENDADDR to zero and returns false.
1754 
1755    If the function in question occupies non-contiguous ranges,
1756    *ADDRESS and *ENDADDR are (subject to the conditions noted above) set
1757    to the start and end of the range in which PC is found.  Thus
1758    *ADDRESS <= PC < *ENDADDR with no intervening gaps (in which ranges
1759    from other functions might be found).
1760 
1761    This property allows find_pc_partial_function to be used (as it had
1762    been prior to the introduction of non-contiguous range support) by
1763    various tdep files for finding a start address and limit address
1764    for prologue analysis.  This still isn't ideal, however, because we
1765    probably shouldn't be doing prologue analysis (in which
1766    instructions are scanned to determine frame size and stack layout)
1767    for any range that doesn't contain the entry pc.  Moreover, a good
1768    argument can be made that prologue analysis ought to be performed
1769    starting from the entry pc even when PC is within some other range.
1770    This might suggest that *ADDRESS and *ENDADDR ought to be set to the
1771    limits of the entry pc range, but that will cause the
1772    *ADDRESS <= PC < *ENDADDR condition to be violated; many of the
1773    callers of find_pc_partial_function expect this condition to hold.
1774 
1775    Callers which require the start and/or end addresses for the range
1776    containing the entry pc should instead call
1777    find_function_entry_range_from_pc.  */
1778 
1779 extern bool find_pc_partial_function (CORE_ADDR pc, const char **name,
1780 				      CORE_ADDR *address, CORE_ADDR *endaddr,
1781 				      const struct block **block = nullptr);
1782 
1783 /* Like find_pc_partial_function, above, but returns the underlying
1784    general_symbol_info (rather than the name) as an out parameter.  */
1785 
1786 extern bool find_pc_partial_function_sym
1787   (CORE_ADDR pc, const general_symbol_info **sym,
1788    CORE_ADDR *address, CORE_ADDR *endaddr,
1789    const struct block **block = nullptr);
1790 
1791 /* Like find_pc_partial_function, above, but *ADDRESS and *ENDADDR are
1792    set to start and end addresses of the range containing the entry pc.
1793 
1794    Note that it is not necessarily the case that (for non-NULL ADDRESS
1795    and ENDADDR arguments) the *ADDRESS <= PC < *ENDADDR condition will
1796    hold.
1797 
1798    See comment for find_pc_partial_function, above, for further
1799    explanation.  */
1800 
1801 extern bool find_function_entry_range_from_pc (CORE_ADDR pc,
1802 					       const char **name,
1803 					       CORE_ADDR *address,
1804 					       CORE_ADDR *endaddr);
1805 
1806 /* Return the type of a function with its first instruction exactly at
1807    the PC address.  Return NULL otherwise.  */
1808 
1809 extern struct type *find_function_type (CORE_ADDR pc);
1810 
1811 /* See if we can figure out the function's actual type from the type
1812    that the resolver returns.  RESOLVER_FUNADDR is the address of the
1813    ifunc resolver.  */
1814 
1815 extern struct type *find_gnu_ifunc_target_type (CORE_ADDR resolver_funaddr);
1816 
1817 /* Find the GNU ifunc minimal symbol that matches SYM.  */
1818 extern bound_minimal_symbol find_gnu_ifunc (const symbol *sym);
1819 
1820 extern void clear_pc_function_cache (void);
1821 
1822 /* Expand symtab containing PC, SECTION if not already expanded.  */
1823 
1824 extern void expand_symtab_containing_pc (CORE_ADDR, struct obj_section *);
1825 
1826 /* lookup full symbol table by address.  */
1827 
1828 extern struct compunit_symtab *find_pc_compunit_symtab (CORE_ADDR);
1829 
1830 /* lookup full symbol table by address and section.  */
1831 
1832 extern struct compunit_symtab *
1833   find_pc_sect_compunit_symtab (CORE_ADDR, struct obj_section *);
1834 
1835 extern bool find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
1836 
1837 extern void reread_symbols (void);
1838 
1839 /* Look up a type named NAME in STRUCT_DOMAIN in the current language.
1840    The type returned must not be opaque -- i.e., must have at least one field
1841    defined.  */
1842 
1843 extern struct type *lookup_transparent_type (const char *);
1844 
1845 extern struct type *basic_lookup_transparent_type (const char *);
1846 
1847 /* Macro for name of symbol to indicate a file compiled with gcc.  */
1848 #ifndef GCC_COMPILED_FLAG_SYMBOL
1849 #define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
1850 #endif
1851 
1852 /* Macro for name of symbol to indicate a file compiled with gcc2.  */
1853 #ifndef GCC2_COMPILED_FLAG_SYMBOL
1854 #define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
1855 #endif
1856 
1857 extern bool in_gnu_ifunc_stub (CORE_ADDR pc);
1858 
1859 /* Functions for resolving STT_GNU_IFUNC symbols which are implemented only
1860    for ELF symbol files.  */
1861 
1862 struct gnu_ifunc_fns
1863 {
1864   /* See elf_gnu_ifunc_resolve_addr for its real implementation.  */
1865   CORE_ADDR (*gnu_ifunc_resolve_addr) (struct gdbarch *gdbarch, CORE_ADDR pc);
1866 
1867   /* See elf_gnu_ifunc_resolve_name for its real implementation.  */
1868   bool (*gnu_ifunc_resolve_name) (const char *function_name,
1869 				 CORE_ADDR *function_address_p);
1870 
1871   /* See elf_gnu_ifunc_resolver_stop for its real implementation.  */
1872   void (*gnu_ifunc_resolver_stop) (struct breakpoint *b);
1873 
1874   /* See elf_gnu_ifunc_resolver_return_stop for its real implementation.  */
1875   void (*gnu_ifunc_resolver_return_stop) (struct breakpoint *b);
1876 };
1877 
1878 #define gnu_ifunc_resolve_addr gnu_ifunc_fns_p->gnu_ifunc_resolve_addr
1879 #define gnu_ifunc_resolve_name gnu_ifunc_fns_p->gnu_ifunc_resolve_name
1880 #define gnu_ifunc_resolver_stop gnu_ifunc_fns_p->gnu_ifunc_resolver_stop
1881 #define gnu_ifunc_resolver_return_stop \
1882   gnu_ifunc_fns_p->gnu_ifunc_resolver_return_stop
1883 
1884 extern const struct gnu_ifunc_fns *gnu_ifunc_fns_p;
1885 
1886 extern CORE_ADDR find_solib_trampoline_target (struct frame_info *, CORE_ADDR);
1887 
1888 struct symtab_and_line
1889 {
1890   /* The program space of this sal.  */
1891   struct program_space *pspace = NULL;
1892 
1893   struct symtab *symtab = NULL;
1894   struct symbol *symbol = NULL;
1895   struct obj_section *section = NULL;
1896   struct minimal_symbol *msymbol = NULL;
1897   /* Line number.  Line numbers start at 1 and proceed through symtab->nlines.
1898      0 is never a valid line number; it is used to indicate that line number
1899      information is not available.  */
1900   int line = 0;
1901 
1902   CORE_ADDR pc = 0;
1903   CORE_ADDR end = 0;
1904   bool explicit_pc = false;
1905   bool explicit_line = false;
1906 
1907   /* If the line number information is valid, then this indicates if this
1908      line table entry had the is-stmt flag set or not.  */
1909   bool is_stmt = false;
1910 
1911   /* The probe associated with this symtab_and_line.  */
1912   probe *prob = NULL;
1913   /* If PROBE is not NULL, then this is the objfile in which the probe
1914      originated.  */
1915   struct objfile *objfile = NULL;
1916 };
1917 
1918 
1919 
1920 /* Given a pc value, return line number it is in.  Second arg nonzero means
1921    if pc is on the boundary use the previous statement's line number.  */
1922 
1923 extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
1924 
1925 /* Same function, but specify a section as well as an address.  */
1926 
1927 extern struct symtab_and_line find_pc_sect_line (CORE_ADDR,
1928 						 struct obj_section *, int);
1929 
1930 /* Wrapper around find_pc_line to just return the symtab.  */
1931 
1932 extern struct symtab *find_pc_line_symtab (CORE_ADDR);
1933 
1934 /* Given a symtab and line number, return the pc there.  */
1935 
1936 extern bool find_line_pc (struct symtab *, int, CORE_ADDR *);
1937 
1938 extern bool find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
1939 				CORE_ADDR *);
1940 
1941 extern void resolve_sal_pc (struct symtab_and_line *);
1942 
1943 /* solib.c */
1944 
1945 extern void clear_solib (void);
1946 
1947 /* The reason we're calling into a completion match list collector
1948    function.  */
1949 enum class complete_symbol_mode
1950   {
1951     /* Completing an expression.  */
1952     EXPRESSION,
1953 
1954     /* Completing a linespec.  */
1955     LINESPEC,
1956   };
1957 
1958 extern void default_collect_symbol_completion_matches_break_on
1959   (completion_tracker &tracker,
1960    complete_symbol_mode mode,
1961    symbol_name_match_type name_match_type,
1962    const char *text, const char *word, const char *break_on,
1963    enum type_code code);
1964 extern void collect_symbol_completion_matches
1965   (completion_tracker &tracker,
1966    complete_symbol_mode mode,
1967    symbol_name_match_type name_match_type,
1968    const char *, const char *);
1969 extern void collect_symbol_completion_matches_type (completion_tracker &tracker,
1970 						    const char *, const char *,
1971 						    enum type_code);
1972 
1973 extern void collect_file_symbol_completion_matches
1974   (completion_tracker &tracker,
1975    complete_symbol_mode,
1976    symbol_name_match_type name_match_type,
1977    const char *, const char *, const char *);
1978 
1979 extern completion_list
1980   make_source_files_completion_list (const char *, const char *);
1981 
1982 /* Return whether SYM is a function/method, as opposed to a data symbol.  */
1983 
1984 extern bool symbol_is_function_or_method (symbol *sym);
1985 
1986 /* Return whether MSYMBOL is a function/method, as opposed to a data
1987    symbol */
1988 
1989 extern bool symbol_is_function_or_method (minimal_symbol *msymbol);
1990 
1991 /* Return whether SYM should be skipped in completion mode MODE.  In
1992    linespec mode, we're only interested in functions/methods.  */
1993 
1994 template<typename Symbol>
1995 static bool
completion_skip_symbol(complete_symbol_mode mode,Symbol * sym)1996 completion_skip_symbol (complete_symbol_mode mode, Symbol *sym)
1997 {
1998   return (mode == complete_symbol_mode::LINESPEC
1999 	  && !symbol_is_function_or_method (sym));
2000 }
2001 
2002 /* symtab.c */
2003 
2004 bool matching_obj_sections (struct obj_section *, struct obj_section *);
2005 
2006 extern struct symtab *find_line_symtab (struct symtab *, int, int *, bool *);
2007 
2008 /* Given a function symbol SYM, find the symtab and line for the start
2009    of the function.  If FUNFIRSTLINE is true, we want the first line
2010    of real code inside the function.  */
2011 extern symtab_and_line find_function_start_sal (symbol *sym, bool
2012 						funfirstline);
2013 
2014 /* Same, but start with a function address/section instead of a
2015    symbol.  */
2016 extern symtab_and_line find_function_start_sal (CORE_ADDR func_addr,
2017 						obj_section *section,
2018 						bool funfirstline);
2019 
2020 extern void skip_prologue_sal (struct symtab_and_line *);
2021 
2022 /* symtab.c */
2023 
2024 extern CORE_ADDR skip_prologue_using_sal (struct gdbarch *gdbarch,
2025 					  CORE_ADDR func_addr);
2026 
2027 extern struct symbol *fixup_symbol_section (struct symbol *,
2028 					    struct objfile *);
2029 
2030 /* If MSYMBOL is an text symbol, look for a function debug symbol with
2031    the same address.  Returns NULL if not found.  This is necessary in
2032    case a function is an alias to some other function, because debug
2033    information is only emitted for the alias target function's
2034    definition, not for the alias.  */
2035 extern symbol *find_function_alias_target (bound_minimal_symbol msymbol);
2036 
2037 /* Symbol searching */
2038 
2039 /* When using the symbol_searcher struct to search for symbols, a vector of
2040    the following structs is returned.  */
2041 struct symbol_search
2042 {
symbol_searchsymbol_search2043   symbol_search (int block_, struct symbol *symbol_)
2044     : block (block_),
2045       symbol (symbol_)
2046   {
2047     msymbol.minsym = nullptr;
2048     msymbol.objfile = nullptr;
2049   }
2050 
symbol_searchsymbol_search2051   symbol_search (int block_, struct minimal_symbol *minsym,
2052 		 struct objfile *objfile)
2053     : block (block_),
2054       symbol (nullptr)
2055   {
2056     msymbol.minsym = minsym;
2057     msymbol.objfile = objfile;
2058   }
2059 
2060   bool operator< (const symbol_search &other) const
2061   {
2062     return compare_search_syms (*this, other) < 0;
2063   }
2064 
2065   bool operator== (const symbol_search &other) const
2066   {
2067     return compare_search_syms (*this, other) == 0;
2068   }
2069 
2070   /* The block in which the match was found.  Could be, for example,
2071      STATIC_BLOCK or GLOBAL_BLOCK.  */
2072   int block;
2073 
2074   /* Information describing what was found.
2075 
2076      If symbol is NOT NULL, then information was found for this match.  */
2077   struct symbol *symbol;
2078 
2079   /* If msymbol is non-null, then a match was made on something for
2080      which only minimal_symbols exist.  */
2081   struct bound_minimal_symbol msymbol;
2082 
2083 private:
2084 
2085   static int compare_search_syms (const symbol_search &sym_a,
2086 				  const symbol_search &sym_b);
2087 };
2088 
2089 /* In order to search for global symbols of a particular kind matching
2090    particular regular expressions, create an instance of this structure and
2091    call the SEARCH member function.  */
2092 class global_symbol_searcher
2093 {
2094 public:
2095 
2096   /* Constructor.  */
global_symbol_searcher(enum search_domain kind,const char * symbol_name_regexp)2097   global_symbol_searcher (enum search_domain kind,
2098 			  const char *symbol_name_regexp)
2099     : m_kind (kind),
2100       m_symbol_name_regexp (symbol_name_regexp)
2101   {
2102     /* The symbol searching is designed to only find one kind of thing.  */
2103     gdb_assert (m_kind != ALL_DOMAIN);
2104   }
2105 
2106   /* Set the optional regexp that matches against the symbol type.  */
set_symbol_type_regexp(const char * regexp)2107   void set_symbol_type_regexp (const char *regexp)
2108   {
2109     m_symbol_type_regexp = regexp;
2110   }
2111 
2112   /* Set the flag to exclude minsyms from the search results.  */
set_exclude_minsyms(bool exclude_minsyms)2113   void set_exclude_minsyms (bool exclude_minsyms)
2114   {
2115     m_exclude_minsyms = exclude_minsyms;
2116   }
2117 
2118   /* Set the maximum number of search results to be returned.  */
set_max_search_results(size_t max_search_results)2119   void set_max_search_results (size_t max_search_results)
2120   {
2121     m_max_search_results = max_search_results;
2122   }
2123 
2124   /* Search the symbols from all objfiles in the current program space
2125      looking for matches as defined by the current state of this object.
2126 
2127      Within each file the results are sorted locally; each symtab's global
2128      and static blocks are separately alphabetized.  Duplicate entries are
2129      removed.  */
2130   std::vector<symbol_search> search () const;
2131 
2132   /* The set of source files to search in for matching symbols.  This is
2133      currently public so that it can be populated after this object has
2134      been constructed.  */
2135   std::vector<const char *> filenames;
2136 
2137 private:
2138   /* The kind of symbols are we searching for.
2139      VARIABLES_DOMAIN - Search all symbols, excluding functions, type
2140 			names, and constants (enums).
2141      FUNCTIONS_DOMAIN - Search all functions..
2142      TYPES_DOMAIN     - Search all type names.
2143      MODULES_DOMAIN   - Search all Fortran modules.
2144      ALL_DOMAIN       - Not valid for this function.  */
2145   enum search_domain m_kind;
2146 
2147   /* Regular expression to match against the symbol name.  */
2148   const char *m_symbol_name_regexp = nullptr;
2149 
2150   /* Regular expression to match against the symbol type.  */
2151   const char *m_symbol_type_regexp = nullptr;
2152 
2153   /* When this flag is false then minsyms that match M_SYMBOL_REGEXP will
2154      be included in the results, otherwise they are excluded.  */
2155   bool m_exclude_minsyms = false;
2156 
2157   /* Maximum number of search results.  We currently impose a hard limit
2158      of SIZE_MAX, there is no "unlimited".  */
2159   size_t m_max_search_results = SIZE_MAX;
2160 
2161   /* Expand symtabs in OBJFILE that match PREG, are of type M_KIND.  Return
2162      true if any msymbols were seen that we should later consider adding to
2163      the results list.  */
2164   bool expand_symtabs (objfile *objfile,
2165 		       const gdb::optional<compiled_regex> &preg) const;
2166 
2167   /* Add symbols from symtabs in OBJFILE that match PREG, and TREG, and are
2168      of type M_KIND, to the results set RESULTS_SET.  Return false if we
2169      stop adding results early due to having already found too many results
2170      (based on M_MAX_SEARCH_RESULTS limit), otherwise return true.
2171      Returning true does not indicate that any results were added, just
2172      that we didn't _not_ add a result due to reaching MAX_SEARCH_RESULTS.  */
2173   bool add_matching_symbols (objfile *objfile,
2174 			     const gdb::optional<compiled_regex> &preg,
2175 			     const gdb::optional<compiled_regex> &treg,
2176 			     std::set<symbol_search> *result_set) const;
2177 
2178   /* Add msymbols from OBJFILE that match PREG and M_KIND, to the results
2179      vector RESULTS.  Return false if we stop adding results early due to
2180      having already found too many results (based on max search results
2181      limit M_MAX_SEARCH_RESULTS), otherwise return true.  Returning true
2182      does not indicate that any results were added, just that we didn't
2183      _not_ add a result due to reaching MAX_SEARCH_RESULTS.  */
2184   bool add_matching_msymbols (objfile *objfile,
2185 			      const gdb::optional<compiled_regex> &preg,
2186 			      std::vector<symbol_search> *results) const;
2187 
2188   /* Return true if MSYMBOL is of type KIND.  */
2189   static bool is_suitable_msymbol (const enum search_domain kind,
2190 				   const minimal_symbol *msymbol);
2191 };
2192 
2193 /* When searching for Fortran symbols within modules (functions/variables)
2194    we return a vector of this type.  The first item in the pair is the
2195    module symbol, and the second item is the symbol for the function or
2196    variable we found.  */
2197 typedef std::pair<symbol_search, symbol_search> module_symbol_search;
2198 
2199 /* Searches the symbols to find function and variables symbols (depending
2200    on KIND) within Fortran modules.  The MODULE_REGEXP matches against the
2201    name of the module, REGEXP matches against the name of the symbol within
2202    the module, and TYPE_REGEXP matches against the type of the symbol
2203    within the module.  */
2204 extern std::vector<module_symbol_search> search_module_symbols
2205 	(const char *module_regexp, const char *regexp,
2206 	 const char *type_regexp, search_domain kind);
2207 
2208 /* Convert a global or static symbol SYM (based on BLOCK, which should be
2209    either GLOBAL_BLOCK or STATIC_BLOCK) into a string for use in 'info'
2210    type commands (e.g. 'info variables', 'info functions', etc).  KIND is
2211    the type of symbol that was searched for which gave us SYM.  */
2212 
2213 extern std::string symbol_to_info_string (struct symbol *sym, int block,
2214 					  enum search_domain kind);
2215 
2216 extern bool treg_matches_sym_type_name (const compiled_regex &treg,
2217 					const struct symbol *sym);
2218 
2219 /* The name of the ``main'' function.  */
2220 extern const char *main_name ();
2221 extern enum language main_language (void);
2222 
2223 /* Lookup symbol NAME from DOMAIN in MAIN_OBJFILE's global or static blocks,
2224    as specified by BLOCK_INDEX.
2225    This searches MAIN_OBJFILE as well as any associated separate debug info
2226    objfiles of MAIN_OBJFILE.
2227    BLOCK_INDEX can be GLOBAL_BLOCK or STATIC_BLOCK.
2228    Upon success fixes up the symbol's section if necessary.  */
2229 
2230 extern struct block_symbol
2231   lookup_global_symbol_from_objfile (struct objfile *main_objfile,
2232 				     enum block_enum block_index,
2233 				     const char *name,
2234 				     const domain_enum domain);
2235 
2236 /* Return 1 if the supplied producer string matches the ARM RealView
2237    compiler (armcc).  */
2238 bool producer_is_realview (const char *producer);
2239 
2240 void fixup_section (struct general_symbol_info *ginfo,
2241 		    CORE_ADDR addr, struct objfile *objfile);
2242 
2243 extern unsigned int symtab_create_debug;
2244 
2245 extern unsigned int symbol_lookup_debug;
2246 
2247 extern bool basenames_may_differ;
2248 
2249 bool compare_filenames_for_search (const char *filename,
2250 				   const char *search_name);
2251 
2252 bool compare_glob_filenames_for_search (const char *filename,
2253 					const char *search_name);
2254 
2255 bool iterate_over_some_symtabs (const char *name,
2256 				const char *real_path,
2257 				struct compunit_symtab *first,
2258 				struct compunit_symtab *after_last,
2259 				gdb::function_view<bool (symtab *)> callback);
2260 
2261 void iterate_over_symtabs (const char *name,
2262 			   gdb::function_view<bool (symtab *)> callback);
2263 
2264 
2265 std::vector<CORE_ADDR> find_pcs_for_symtab_line
2266     (struct symtab *symtab, int line, struct linetable_entry **best_entry);
2267 
2268 /* Prototype for callbacks for LA_ITERATE_OVER_SYMBOLS.  The callback
2269    is called once per matching symbol SYM.  The callback should return
2270    true to indicate that LA_ITERATE_OVER_SYMBOLS should continue
2271    iterating, or false to indicate that the iteration should end.  */
2272 
2273 typedef bool (symbol_found_callback_ftype) (struct block_symbol *bsym);
2274 
2275 /* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
2276 
2277    For each symbol that matches, CALLBACK is called.  The symbol is
2278    passed to the callback.
2279 
2280    If CALLBACK returns false, the iteration ends and this function
2281    returns false.  Otherwise, the search continues, and the function
2282    eventually returns true.  */
2283 
2284 bool iterate_over_symbols (const struct block *block,
2285 			   const lookup_name_info &name,
2286 			   const domain_enum domain,
2287 			   gdb::function_view<symbol_found_callback_ftype> callback);
2288 
2289 /* Like iterate_over_symbols, but if all calls to CALLBACK return
2290    true, then calls CALLBACK one additional time with a block_symbol
2291    that has a valid block but a NULL symbol.  */
2292 
2293 bool iterate_over_symbols_terminated
2294   (const struct block *block,
2295    const lookup_name_info &name,
2296    const domain_enum domain,
2297    gdb::function_view<symbol_found_callback_ftype> callback);
2298 
2299 /* Storage type used by demangle_for_lookup.  demangle_for_lookup
2300    either returns a const char * pointer that points to either of the
2301    fields of this type, or a pointer to the input NAME.  This is done
2302    this way to avoid depending on the precise details of the storage
2303    for the string.  */
2304 class demangle_result_storage
2305 {
2306 public:
2307 
2308   /* Swap the malloc storage to STR, and return a pointer to the
2309      beginning of the new string.  */
set_malloc_ptr(gdb::unique_xmalloc_ptr<char> && str)2310   const char *set_malloc_ptr (gdb::unique_xmalloc_ptr<char> &&str)
2311   {
2312     m_malloc = std::move (str);
2313     return m_malloc.get ();
2314   }
2315 
2316   /* Set the malloc storage to now point at PTR.  Any previous malloc
2317      storage is released.  */
set_malloc_ptr(char * ptr)2318   const char *set_malloc_ptr (char *ptr)
2319   {
2320     m_malloc.reset (ptr);
2321     return ptr;
2322   }
2323 
2324 private:
2325 
2326   /* The storage.  */
2327   gdb::unique_xmalloc_ptr<char> m_malloc;
2328 };
2329 
2330 const char *
2331   demangle_for_lookup (const char *name, enum language lang,
2332 		       demangle_result_storage &storage);
2333 
2334 /* Test to see if the symbol of language SYMBOL_LANGUAGE specified by
2335    SYMNAME (which is already demangled for C++ symbols) matches
2336    SYM_TEXT in the first SYM_TEXT_LEN characters.  If so, add it to
2337    the current completion list and return true.  Otherwise, return
2338    false.  */
2339 bool completion_list_add_name (completion_tracker &tracker,
2340 			       language symbol_language,
2341 			       const char *symname,
2342 			       const lookup_name_info &lookup_name,
2343 			       const char *text, const char *word);
2344 
2345 /* A simple symbol searching class.  */
2346 
2347 class symbol_searcher
2348 {
2349 public:
2350   /* Returns the symbols found for the search.  */
2351   const std::vector<block_symbol> &
matching_symbols()2352   matching_symbols () const
2353   {
2354     return m_symbols;
2355   }
2356 
2357   /* Returns the minimal symbols found for the search.  */
2358   const std::vector<bound_minimal_symbol> &
matching_msymbols()2359   matching_msymbols () const
2360   {
2361     return m_minimal_symbols;
2362   }
2363 
2364   /* Search for all symbols named NAME in LANGUAGE with DOMAIN, restricting
2365      search to FILE_SYMTABS and SEARCH_PSPACE, both of which may be NULL
2366      to search all symtabs and program spaces.  */
2367   void find_all_symbols (const std::string &name,
2368 			 const struct language_defn *language,
2369 			 enum search_domain search_domain,
2370 			 std::vector<symtab *> *search_symtabs,
2371 			 struct program_space *search_pspace);
2372 
2373   /* Reset this object to perform another search.  */
reset()2374   void reset ()
2375   {
2376     m_symbols.clear ();
2377     m_minimal_symbols.clear ();
2378   }
2379 
2380 private:
2381   /* Matching debug symbols.  */
2382   std::vector<block_symbol>  m_symbols;
2383 
2384   /* Matching non-debug symbols.  */
2385   std::vector<bound_minimal_symbol> m_minimal_symbols;
2386 };
2387 
2388 /* Class used to encapsulate the filename filtering for the "info sources"
2389    command.  */
2390 
2391 struct info_sources_filter
2392 {
2393   /* If filename filtering is being used (see M_C_REGEXP) then which part
2394      of the filename is being filtered against?  */
2395   enum class match_on
2396   {
2397     /* Match against the full filename.  */
2398     FULLNAME,
2399 
2400     /* Match only against the directory part of the full filename.  */
2401     DIRNAME,
2402 
2403     /* Match only against the basename part of the full filename.  */
2404     BASENAME
2405   };
2406 
2407   /* Create a filter of MATCH_TYPE using regular expression REGEXP.  If
2408      REGEXP is nullptr then all files will match the filter and MATCH_TYPE
2409      is ignored.
2410 
2411      The string pointed too by REGEXP must remain live and unchanged for
2412      this lifetime of this object as the object only retains a copy of the
2413      pointer.  */
2414   info_sources_filter (match_on match_type, const char *regexp);
2415 
2416   DISABLE_COPY_AND_ASSIGN (info_sources_filter);
2417 
2418   /* Does FULLNAME match the filter defined by this object, return true if
2419      it does, otherwise, return false.  If there is no filtering defined
2420      then this function will always return true.  */
2421   bool matches (const char *fullname) const;
2422 
2423 private:
2424 
2425   /* The type of filtering in place.  */
2426   match_on m_match_type;
2427 
2428   /* Points to the original regexp used to create this filter.  */
2429   const char *m_regexp;
2430 
2431   /* A compiled version of M_REGEXP.  This object is only given a value if
2432      M_REGEXP is not nullptr and is not the empty string.  */
2433   gdb::optional<compiled_regex> m_c_regexp;
2434 };
2435 
2436 /* Perform the core of the 'info sources' command.
2437 
2438    FILTER is used to perform regular expression based filtering on the
2439    source files that will be displayed.
2440 
2441    Output is written to UIOUT in CLI or MI style as appropriate.  */
2442 
2443 extern void info_sources_worker (struct ui_out *uiout,
2444 				 bool group_by_objfile,
2445 				 const info_sources_filter &filter);
2446 
2447 #endif /* !defined(SYMTAB_H) */
2448