Home | History | Annotate | Line # | Download | only in gdb
symtab.h revision 1.9
      1 /* Symbol table definitions for GDB.
      2 
      3    Copyright (C) 1986-2020 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.  */
    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.  */
    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.  */
    116   bool standard_p () const
    117   { return m_standard_p; }
    118 
    119   /* Return true if doing a verbatim match.  */
    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.  */
    165   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)
    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)
    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.  */
    220   symbol_name_match_type match_type () const { return m_match_type; }
    221   bool completion_mode () const { return m_completion_mode; }
    222   gdb::string_view name () const { return m_name; }
    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.  */
    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.  */
    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.  */
    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.  */
    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.  */
    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.  */
    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.  */
    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.  */
    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>
    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 
    420   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.  */
    435   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.  */
    454   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 
    462   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 section;
    543 };
    544 
    545 extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *);
    546 
    547 /* Return the address of SYM.  The MAYBE_COPIED flag must be set on
    548    SYM.  If SYM appears in the main program's minimal symbols, then
    549    that minsym's address is returned; otherwise, SYM's address is
    550    returned.  This should generally only be used via the
    551    SYMBOL_VALUE_ADDRESS macro.  */
    552 
    553 extern CORE_ADDR get_symbol_address (const struct symbol *sym);
    554 
    555 /* Note that these macros only work with symbol, not partial_symbol.  */
    556 
    557 #define SYMBOL_VALUE(symbol)		(symbol)->value.ivalue
    558 #define SYMBOL_VALUE_ADDRESS(symbol)			      \
    559   (((symbol)->maybe_copied) ? get_symbol_address (symbol)     \
    560    : ((symbol)->value.address))
    561 #define SET_SYMBOL_VALUE_ADDRESS(symbol, new_value)	\
    562   ((symbol)->value.address = (new_value))
    563 #define SYMBOL_VALUE_BYTES(symbol)	(symbol)->value.bytes
    564 #define SYMBOL_VALUE_COMMON_BLOCK(symbol) (symbol)->value.common_block
    565 #define SYMBOL_BLOCK_VALUE(symbol)	(symbol)->value.block
    566 #define SYMBOL_VALUE_CHAIN(symbol)	(symbol)->value.chain
    567 #define SYMBOL_SECTION(symbol)		(symbol)->section
    568 #define SYMBOL_OBJ_SECTION(objfile, symbol)			\
    569   (((symbol)->section >= 0)				\
    570    ? (&(((objfile)->sections)[(symbol)->section]))	\
    571    : NULL)
    572 
    573 /* Try to determine the demangled name for a symbol, based on the
    574    language of that symbol.  If the language is set to language_auto,
    575    it will attempt to find any demangling algorithm that works and
    576    then set the language appropriately.  The returned name is allocated
    577    by the demangler and should be xfree'd.  */
    578 
    579 extern char *symbol_find_demangled_name (struct general_symbol_info *gsymbol,
    580 					 const char *mangled);
    581 
    582 /* Return true if NAME matches the "search" name of SYMBOL, according
    583    to the symbol's language.  */
    584 #define SYMBOL_MATCHES_SEARCH_NAME(symbol, name)                       \
    585   symbol_matches_search_name ((symbol), (name))
    586 
    587 /* Helper for SYMBOL_MATCHES_SEARCH_NAME that works with both symbols
    588    and psymbols.  */
    589 extern bool symbol_matches_search_name
    590   (const struct general_symbol_info *gsymbol,
    591    const lookup_name_info &name);
    592 
    593 /* Compute the hash of the given symbol search name of a symbol of
    594    language LANGUAGE.  */
    595 extern unsigned int search_name_hash (enum language language,
    596 				      const char *search_name);
    597 
    598 /* Classification types for a minimal symbol.  These should be taken as
    599    "advisory only", since if gdb can't easily figure out a
    600    classification it simply selects mst_unknown.  It may also have to
    601    guess when it can't figure out which is a better match between two
    602    types (mst_data versus mst_bss) for example.  Since the minimal
    603    symbol info is sometimes derived from the BFD library's view of a
    604    file, we need to live with what information bfd supplies.  */
    605 
    606 enum minimal_symbol_type
    607 {
    608   mst_unknown = 0,		/* Unknown type, the default */
    609   mst_text,			/* Generally executable instructions */
    610 
    611   /* A GNU ifunc symbol, in the .text section.  GDB uses to know
    612      whether the user is setting a breakpoint on a GNU ifunc function,
    613      and thus GDB needs to actually set the breakpoint on the target
    614      function.  It is also used to know whether the program stepped
    615      into an ifunc resolver -- the resolver may get a separate
    616      symbol/alias under a different name, but it'll have the same
    617      address as the ifunc symbol.  */
    618   mst_text_gnu_ifunc,           /* Executable code returning address
    619 				   of executable code */
    620 
    621   /* A GNU ifunc function descriptor symbol, in a data section
    622      (typically ".opd").  Seen on architectures that use function
    623      descriptors, like PPC64/ELFv1.  In this case, this symbol's value
    624      is the address of the descriptor.  There'll be a corresponding
    625      mst_text_gnu_ifunc synthetic symbol for the text/entry
    626      address.  */
    627   mst_data_gnu_ifunc,		/* Executable code returning address
    628 				   of executable code */
    629 
    630   mst_slot_got_plt,		/* GOT entries for .plt sections */
    631   mst_data,			/* Generally initialized data */
    632   mst_bss,			/* Generally uninitialized data */
    633   mst_abs,			/* Generally absolute (nonrelocatable) */
    634   /* GDB uses mst_solib_trampoline for the start address of a shared
    635      library trampoline entry.  Breakpoints for shared library functions
    636      are put there if the shared library is not yet loaded.
    637      After the shared library is loaded, lookup_minimal_symbol will
    638      prefer the minimal symbol from the shared library (usually
    639      a mst_text symbol) over the mst_solib_trampoline symbol, and the
    640      breakpoints will be moved to their true address in the shared
    641      library via breakpoint_re_set.  */
    642   mst_solib_trampoline,		/* Shared library trampoline code */
    643   /* For the mst_file* types, the names are only guaranteed to be unique
    644      within a given .o file.  */
    645   mst_file_text,		/* Static version of mst_text */
    646   mst_file_data,		/* Static version of mst_data */
    647   mst_file_bss,			/* Static version of mst_bss */
    648   nr_minsym_types
    649 };
    650 
    651 /* The number of enum minimal_symbol_type values, with some padding for
    652    reasonable growth.  */
    653 #define MINSYM_TYPE_BITS 4
    654 gdb_static_assert (nr_minsym_types <= (1 << MINSYM_TYPE_BITS));
    655 
    656 /* Define a simple structure used to hold some very basic information about
    657    all defined global symbols (text, data, bss, abs, etc).  The only required
    658    information is the general_symbol_info.
    659 
    660    In many cases, even if a file was compiled with no special options for
    661    debugging at all, as long as was not stripped it will contain sufficient
    662    information to build a useful minimal symbol table using this structure.
    663    Even when a file contains enough debugging information to build a full
    664    symbol table, these minimal symbols are still useful for quickly mapping
    665    between names and addresses, and vice versa.  They are also sometimes
    666    used to figure out what full symbol table entries need to be read in.  */
    667 
    668 struct minimal_symbol : public general_symbol_info
    669 {
    670   /* Size of this symbol.  dbx_end_psymtab in dbxread.c uses this
    671      information to calculate the end of the partial symtab based on the
    672      address of the last symbol plus the size of the last symbol.  */
    673 
    674   unsigned long size;
    675 
    676   /* Which source file is this symbol in?  Only relevant for mst_file_*.  */
    677   const char *filename;
    678 
    679   /* Classification type for this minimal symbol.  */
    680 
    681   ENUM_BITFIELD(minimal_symbol_type) type : MINSYM_TYPE_BITS;
    682 
    683   /* Non-zero if this symbol was created by gdb.
    684      Such symbols do not appear in the output of "info var|fun".  */
    685   unsigned int created_by_gdb : 1;
    686 
    687   /* Two flag bits provided for the use of the target.  */
    688   unsigned int target_flag_1 : 1;
    689   unsigned int target_flag_2 : 1;
    690 
    691   /* Nonzero iff the size of the minimal symbol has been set.
    692      Symbol size information can sometimes not be determined, because
    693      the object file format may not carry that piece of information.  */
    694   unsigned int has_size : 1;
    695 
    696   /* For data symbols only, if this is set, then the symbol might be
    697      subject to copy relocation.  In this case, a minimal symbol
    698      matching the symbol's linkage name is first looked for in the
    699      main objfile.  If found, then that address is used; otherwise the
    700      address in this symbol is used.  */
    701 
    702   unsigned maybe_copied : 1;
    703 
    704   /* Non-zero if this symbol ever had its demangled name set (even if
    705      it was set to NULL).  */
    706   unsigned int name_set : 1;
    707 
    708   /* Minimal symbols with the same hash key are kept on a linked
    709      list.  This is the link.  */
    710 
    711   struct minimal_symbol *hash_next;
    712 
    713   /* Minimal symbols are stored in two different hash tables.  This is
    714      the `next' pointer for the demangled hash table.  */
    715 
    716   struct minimal_symbol *demangled_hash_next;
    717 
    718   /* True if this symbol is of some data type.  */
    719 
    720   bool data_p () const;
    721 
    722   /* True if MSYMBOL is of some text type.  */
    723 
    724   bool text_p () const;
    725 };
    726 
    727 /* Return the address of MINSYM, which comes from OBJF.  The
    728    MAYBE_COPIED flag must be set on MINSYM.  If MINSYM appears in the
    729    main program's minimal symbols, then that minsym's address is
    730    returned; otherwise, MINSYM's address is returned.  This should
    731    generally only be used via the MSYMBOL_VALUE_ADDRESS macro.  */
    732 
    733 extern CORE_ADDR get_msymbol_address (struct objfile *objf,
    734 				      const struct minimal_symbol *minsym);
    735 
    736 #define MSYMBOL_TARGET_FLAG_1(msymbol)  (msymbol)->target_flag_1
    737 #define MSYMBOL_TARGET_FLAG_2(msymbol)  (msymbol)->target_flag_2
    738 #define MSYMBOL_SIZE(msymbol)		((msymbol)->size + 0)
    739 #define SET_MSYMBOL_SIZE(msymbol, sz)		\
    740   do						\
    741     {						\
    742       (msymbol)->size = sz;			\
    743       (msymbol)->has_size = 1;			\
    744     } while (0)
    745 #define MSYMBOL_HAS_SIZE(msymbol)	((msymbol)->has_size + 0)
    746 #define MSYMBOL_TYPE(msymbol)		(msymbol)->type
    747 
    748 #define MSYMBOL_VALUE(symbol)		(symbol)->value.ivalue
    749 /* The unrelocated address of the minimal symbol.  */
    750 #define MSYMBOL_VALUE_RAW_ADDRESS(symbol) ((symbol)->value.address + 0)
    751 /* The relocated address of the minimal symbol, using the section
    752    offsets from OBJFILE.  */
    753 #define MSYMBOL_VALUE_ADDRESS(objfile, symbol)				\
    754   (((symbol)->maybe_copied) ? get_msymbol_address (objfile, symbol)	\
    755    : ((symbol)->value.address						\
    756       + (objfile)->section_offsets[(symbol)->section]))
    757 /* For a bound minsym, we can easily compute the address directly.  */
    758 #define BMSYMBOL_VALUE_ADDRESS(symbol) \
    759   MSYMBOL_VALUE_ADDRESS ((symbol).objfile, (symbol).minsym)
    760 #define SET_MSYMBOL_VALUE_ADDRESS(symbol, new_value)	\
    761   ((symbol)->value.address = (new_value))
    762 #define MSYMBOL_VALUE_BYTES(symbol)	(symbol)->value.bytes
    763 #define MSYMBOL_BLOCK_VALUE(symbol)	(symbol)->value.block
    764 #define MSYMBOL_VALUE_CHAIN(symbol)	(symbol)->value.chain
    765 #define MSYMBOL_SECTION(symbol)		(symbol)->section
    766 #define MSYMBOL_OBJ_SECTION(objfile, symbol)			\
    767   (((symbol)->section >= 0)				\
    768    ? (&(((objfile)->sections)[(symbol)->section]))	\
    769    : NULL)
    770 
    771 #include "minsyms.h"
    772 
    773 
    774 
    776 /* Represent one symbol name; a variable, constant, function or typedef.  */
    777 
    778 /* Different name domains for symbols.  Looking up a symbol specifies a
    779    domain and ignores symbol definitions in other name domains.  */
    780 
    781 typedef enum domain_enum_tag
    782 {
    783   /* UNDEF_DOMAIN is used when a domain has not been discovered or
    784      none of the following apply.  This usually indicates an error either
    785      in the symbol information or in gdb's handling of symbols.  */
    786 
    787   UNDEF_DOMAIN,
    788 
    789   /* VAR_DOMAIN is the usual domain.  In C, this contains variables,
    790      function names, typedef names and enum type values.  */
    791 
    792   VAR_DOMAIN,
    793 
    794   /* STRUCT_DOMAIN is used in C to hold struct, union and enum type names.
    795      Thus, if `struct foo' is used in a C program, it produces a symbol named
    796      `foo' in the STRUCT_DOMAIN.  */
    797 
    798   STRUCT_DOMAIN,
    799 
    800   /* MODULE_DOMAIN is used in Fortran to hold module type names.  */
    801 
    802   MODULE_DOMAIN,
    803 
    804   /* LABEL_DOMAIN may be used for names of labels (for gotos).  */
    805 
    806   LABEL_DOMAIN,
    807 
    808   /* Fortran common blocks.  Their naming must be separate from VAR_DOMAIN.
    809      They also always use LOC_COMMON_BLOCK.  */
    810   COMMON_BLOCK_DOMAIN,
    811 
    812   /* This must remain last.  */
    813   NR_DOMAINS
    814 } domain_enum;
    815 
    816 /* The number of bits in a symbol used to represent the domain.  */
    817 
    818 #define SYMBOL_DOMAIN_BITS 3
    819 gdb_static_assert (NR_DOMAINS <= (1 << SYMBOL_DOMAIN_BITS));
    820 
    821 extern const char *domain_name (domain_enum);
    822 
    823 /* Searching domains, used when searching for symbols.  Element numbers are
    824    hardcoded in GDB, check all enum uses before changing it.  */
    825 
    826 enum search_domain
    827 {
    828   /* Everything in VAR_DOMAIN minus FUNCTIONS_DOMAIN and
    829      TYPES_DOMAIN.  */
    830   VARIABLES_DOMAIN = 0,
    831 
    832   /* All functions -- for some reason not methods, though.  */
    833   FUNCTIONS_DOMAIN = 1,
    834 
    835   /* All defined types */
    836   TYPES_DOMAIN = 2,
    837 
    838   /* All modules.  */
    839   MODULES_DOMAIN = 3,
    840 
    841   /* Any type.  */
    842   ALL_DOMAIN = 4
    843 };
    844 
    845 extern const char *search_domain_name (enum search_domain);
    846 
    847 /* An address-class says where to find the value of a symbol.  */
    848 
    849 enum address_class
    850 {
    851   /* Not used; catches errors.  */
    852 
    853   LOC_UNDEF,
    854 
    855   /* Value is constant int SYMBOL_VALUE, host byteorder.  */
    856 
    857   LOC_CONST,
    858 
    859   /* Value is at fixed address SYMBOL_VALUE_ADDRESS.  */
    860 
    861   LOC_STATIC,
    862 
    863   /* Value is in register.  SYMBOL_VALUE is the register number
    864      in the original debug format.  SYMBOL_REGISTER_OPS holds a
    865      function that can be called to transform this into the
    866      actual register number this represents in a specific target
    867      architecture (gdbarch).
    868 
    869      For some symbol formats (stabs, for some compilers at least),
    870      the compiler generates two symbols, an argument and a register.
    871      In some cases we combine them to a single LOC_REGISTER in symbol
    872      reading, but currently not for all cases (e.g. it's passed on the
    873      stack and then loaded into a register).  */
    874 
    875   LOC_REGISTER,
    876 
    877   /* It's an argument; the value is at SYMBOL_VALUE offset in arglist.  */
    878 
    879   LOC_ARG,
    880 
    881   /* Value address is at SYMBOL_VALUE offset in arglist.  */
    882 
    883   LOC_REF_ARG,
    884 
    885   /* Value is in specified register.  Just like LOC_REGISTER except the
    886      register holds the address of the argument instead of the argument
    887      itself.  This is currently used for the passing of structs and unions
    888      on sparc and hppa.  It is also used for call by reference where the
    889      address is in a register, at least by mipsread.c.  */
    890 
    891   LOC_REGPARM_ADDR,
    892 
    893   /* Value is a local variable at SYMBOL_VALUE offset in stack frame.  */
    894 
    895   LOC_LOCAL,
    896 
    897   /* Value not used; definition in SYMBOL_TYPE.  Symbols in the domain
    898      STRUCT_DOMAIN all have this class.  */
    899 
    900   LOC_TYPEDEF,
    901 
    902   /* Value is address SYMBOL_VALUE_ADDRESS in the code.  */
    903 
    904   LOC_LABEL,
    905 
    906   /* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
    907      In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
    908      of the block.  Function names have this class.  */
    909 
    910   LOC_BLOCK,
    911 
    912   /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_BYTES, in
    913      target byte order.  */
    914 
    915   LOC_CONST_BYTES,
    916 
    917   /* Value is at fixed address, but the address of the variable has
    918      to be determined from the minimal symbol table whenever the
    919      variable is referenced.
    920      This happens if debugging information for a global symbol is
    921      emitted and the corresponding minimal symbol is defined
    922      in another object file or runtime common storage.
    923      The linker might even remove the minimal symbol if the global
    924      symbol is never referenced, in which case the symbol remains
    925      unresolved.
    926 
    927      GDB would normally find the symbol in the minimal symbol table if it will
    928      not find it in the full symbol table.  But a reference to an external
    929      symbol in a local block shadowing other definition requires full symbol
    930      without possibly having its address available for LOC_STATIC.  Testcase
    931      is provided as `gdb.dwarf2/dw2-unresolved.exp'.
    932 
    933      This is also used for thread local storage (TLS) variables.  In this case,
    934      the address of the TLS variable must be determined when the variable is
    935      referenced, from the MSYMBOL_VALUE_RAW_ADDRESS, which is the offset
    936      of the TLS variable in the thread local storage of the shared
    937      library/object.  */
    938 
    939   LOC_UNRESOLVED,
    940 
    941   /* The variable does not actually exist in the program.
    942      The value is ignored.  */
    943 
    944   LOC_OPTIMIZED_OUT,
    945 
    946   /* The variable's address is computed by a set of location
    947      functions (see "struct symbol_computed_ops" below).  */
    948   LOC_COMPUTED,
    949 
    950   /* The variable uses general_symbol_info->value->common_block field.
    951      It also always uses COMMON_BLOCK_DOMAIN.  */
    952   LOC_COMMON_BLOCK,
    953 
    954   /* Not used, just notes the boundary of the enum.  */
    955   LOC_FINAL_VALUE
    956 };
    957 
    958 /* The number of bits needed for values in enum address_class, with some
    959    padding for reasonable growth, and room for run-time registered address
    960    classes. See symtab.c:MAX_SYMBOL_IMPLS.
    961    This is a #define so that we can have a assertion elsewhere to
    962    verify that we have reserved enough space for synthetic address
    963    classes.  */
    964 #define SYMBOL_ACLASS_BITS 5
    965 gdb_static_assert (LOC_FINAL_VALUE <= (1 << SYMBOL_ACLASS_BITS));
    966 
    967 /* The methods needed to implement LOC_COMPUTED.  These methods can
    968    use the symbol's .aux_value for additional per-symbol information.
    969 
    970    At present this is only used to implement location expressions.  */
    971 
    972 struct symbol_computed_ops
    973 {
    974 
    975   /* Return the value of the variable SYMBOL, relative to the stack
    976      frame FRAME.  If the variable has been optimized out, return
    977      zero.
    978 
    979      Iff `read_needs_frame (SYMBOL)' is not SYMBOL_NEEDS_FRAME, then
    980      FRAME may be zero.  */
    981 
    982   struct value *(*read_variable) (struct symbol * symbol,
    983 				  struct frame_info * frame);
    984 
    985   /* Read variable SYMBOL like read_variable at (callee) FRAME's function
    986      entry.  SYMBOL should be a function parameter, otherwise
    987      NO_ENTRY_VALUE_ERROR will be thrown.  */
    988   struct value *(*read_variable_at_entry) (struct symbol *symbol,
    989 					   struct frame_info *frame);
    990 
    991   /* Find the "symbol_needs_kind" value for the given symbol.  This
    992      value determines whether reading the symbol needs memory (e.g., a
    993      global variable), just registers (a thread-local), or a frame (a
    994      local variable).  */
    995   enum symbol_needs_kind (*get_symbol_read_needs) (struct symbol * symbol);
    996 
    997   /* Write to STREAM a natural-language description of the location of
    998      SYMBOL, in the context of ADDR.  */
    999   void (*describe_location) (struct symbol * symbol, CORE_ADDR addr,
   1000 			     struct ui_file * stream);
   1001 
   1002   /* Non-zero if this symbol's address computation is dependent on PC.  */
   1003   unsigned char location_has_loclist;
   1004 
   1005   /* Tracepoint support.  Append bytecodes to the tracepoint agent
   1006      expression AX that push the address of the object SYMBOL.  Set
   1007      VALUE appropriately.  Note --- for objects in registers, this
   1008      needn't emit any code; as long as it sets VALUE properly, then
   1009      the caller will generate the right code in the process of
   1010      treating this as an lvalue or rvalue.  */
   1011 
   1012   void (*tracepoint_var_ref) (struct symbol *symbol, struct agent_expr *ax,
   1013 			      struct axs_value *value);
   1014 
   1015   /* Generate C code to compute the location of SYMBOL.  The C code is
   1016      emitted to STREAM.  GDBARCH is the current architecture and PC is
   1017      the PC at which SYMBOL's location should be evaluated.
   1018      REGISTERS_USED is a vector indexed by register number; the
   1019      generator function should set an element in this vector if the
   1020      corresponding register is needed by the location computation.
   1021      The generated C code must assign the location to a local
   1022      variable; this variable's name is RESULT_NAME.  */
   1023 
   1024   void (*generate_c_location) (struct symbol *symbol, string_file *stream,
   1025 			       struct gdbarch *gdbarch,
   1026 			       unsigned char *registers_used,
   1027 			       CORE_ADDR pc, const char *result_name);
   1028 
   1029 };
   1030 
   1031 /* The methods needed to implement LOC_BLOCK for inferior functions.
   1032    These methods can use the symbol's .aux_value for additional
   1033    per-symbol information.  */
   1034 
   1035 struct symbol_block_ops
   1036 {
   1037   /* Fill in *START and *LENGTH with DWARF block data of function
   1038      FRAMEFUNC valid for inferior context address PC.  Set *LENGTH to
   1039      zero if such location is not valid for PC; *START is left
   1040      uninitialized in such case.  */
   1041   void (*find_frame_base_location) (struct symbol *framefunc, CORE_ADDR pc,
   1042 				    const gdb_byte **start, size_t *length);
   1043 
   1044   /* Return the frame base address.  FRAME is the frame for which we want to
   1045      compute the base address while FRAMEFUNC is the symbol for the
   1046      corresponding function.  Return 0 on failure (FRAMEFUNC may not hold the
   1047      information we need).
   1048 
   1049      This method is designed to work with static links (nested functions
   1050      handling).  Static links are function properties whose evaluation returns
   1051      the frame base address for the enclosing frame.  However, there are
   1052      multiple definitions for "frame base": the content of the frame base
   1053      register, the CFA as defined by DWARF unwinding information, ...
   1054 
   1055      So this specific method is supposed to compute the frame base address such
   1056      as for nested functions, the static link computes the same address.  For
   1057      instance, considering DWARF debugging information, the static link is
   1058      computed with DW_AT_static_link and this method must be used to compute
   1059      the corresponding DW_AT_frame_base attribute.  */
   1060   CORE_ADDR (*get_frame_base) (struct symbol *framefunc,
   1061 			       struct frame_info *frame);
   1062 };
   1063 
   1064 /* Functions used with LOC_REGISTER and LOC_REGPARM_ADDR.  */
   1065 
   1066 struct symbol_register_ops
   1067 {
   1068   int (*register_number) (struct symbol *symbol, struct gdbarch *gdbarch);
   1069 };
   1070 
   1071 /* Objects of this type are used to find the address class and the
   1072    various computed ops vectors of a symbol.  */
   1073 
   1074 struct symbol_impl
   1075 {
   1076   enum address_class aclass;
   1077 
   1078   /* Used with LOC_COMPUTED.  */
   1079   const struct symbol_computed_ops *ops_computed;
   1080 
   1081   /* Used with LOC_BLOCK.  */
   1082   const struct symbol_block_ops *ops_block;
   1083 
   1084   /* Used with LOC_REGISTER and LOC_REGPARM_ADDR.  */
   1085   const struct symbol_register_ops *ops_register;
   1086 };
   1087 
   1088 /* struct symbol has some subclasses.  This enum is used to
   1089    differentiate between them.  */
   1090 
   1091 enum symbol_subclass_kind
   1092 {
   1093   /* Plain struct symbol.  */
   1094   SYMBOL_NONE,
   1095 
   1096   /* struct template_symbol.  */
   1097   SYMBOL_TEMPLATE,
   1098 
   1099   /* struct rust_vtable_symbol.  */
   1100   SYMBOL_RUST_VTABLE
   1101 };
   1102 
   1103 /* This structure is space critical.  See space comments at the top.  */
   1104 
   1105 struct symbol : public general_symbol_info, public allocate_on_obstack
   1106 {
   1107   symbol ()
   1108     /* Class-initialization of bitfields is only allowed in C++20.  */
   1109     : domain (UNDEF_DOMAIN),
   1110       aclass_index (0),
   1111       is_objfile_owned (1),
   1112       is_argument (0),
   1113       is_inlined (0),
   1114       maybe_copied (0),
   1115       subclass (SYMBOL_NONE)
   1116     {
   1117       /* We can't use an initializer list for members of a base class, and
   1118          general_symbol_info needs to stay a POD type.  */
   1119       m_name = nullptr;
   1120       value.ivalue = 0;
   1121       language_specific.obstack = nullptr;
   1122       m_language = language_unknown;
   1123       ada_mangled = 0;
   1124       section = -1;
   1125       /* GCC 4.8.5 (on CentOS 7) does not correctly compile class-
   1126          initialization of unions, so we initialize it manually here.  */
   1127       owner.symtab = nullptr;
   1128     }
   1129 
   1130   symbol (const symbol &) = default;
   1131 
   1132   /* Data type of value */
   1133 
   1134   struct type *type = nullptr;
   1135 
   1136   /* The owner of this symbol.
   1137      Which one to use is defined by symbol.is_objfile_owned.  */
   1138 
   1139   union
   1140   {
   1141     /* The symbol table containing this symbol.  This is the file associated
   1142        with LINE.  It can be NULL during symbols read-in but it is never NULL
   1143        during normal operation.  */
   1144     struct symtab *symtab;
   1145 
   1146     /* For types defined by the architecture.  */
   1147     struct gdbarch *arch;
   1148   } owner;
   1149 
   1150   /* Domain code.  */
   1151 
   1152   ENUM_BITFIELD(domain_enum_tag) domain : SYMBOL_DOMAIN_BITS;
   1153 
   1154   /* Address class.  This holds an index into the 'symbol_impls'
   1155      table.  The actual enum address_class value is stored there,
   1156      alongside any per-class ops vectors.  */
   1157 
   1158   unsigned int aclass_index : SYMBOL_ACLASS_BITS;
   1159 
   1160   /* If non-zero then symbol is objfile-owned, use owner.symtab.
   1161        Otherwise symbol is arch-owned, use owner.arch.  */
   1162 
   1163   unsigned int is_objfile_owned : 1;
   1164 
   1165   /* Whether this is an argument.  */
   1166 
   1167   unsigned is_argument : 1;
   1168 
   1169   /* Whether this is an inlined function (class LOC_BLOCK only).  */
   1170   unsigned is_inlined : 1;
   1171 
   1172   /* For LOC_STATIC only, if this is set, then the symbol might be
   1173      subject to copy relocation.  In this case, a minimal symbol
   1174      matching the symbol's linkage name is first looked for in the
   1175      main objfile.  If found, then that address is used; otherwise the
   1176      address in this symbol is used.  */
   1177 
   1178   unsigned maybe_copied : 1;
   1179 
   1180   /* The concrete type of this symbol.  */
   1181 
   1182   ENUM_BITFIELD (symbol_subclass_kind) subclass : 2;
   1183 
   1184   /* Line number of this symbol's definition, except for inlined
   1185      functions.  For an inlined function (class LOC_BLOCK and
   1186      SYMBOL_INLINED set) this is the line number of the function's call
   1187      site.  Inlined function symbols are not definitions, and they are
   1188      never found by symbol table lookup.
   1189      If this symbol is arch-owned, LINE shall be zero.
   1190 
   1191      FIXME: Should we really make the assumption that nobody will try
   1192      to debug files longer than 64K lines?  What about machine
   1193      generated programs?  */
   1194 
   1195   unsigned short line = 0;
   1196 
   1197   /* An arbitrary data pointer, allowing symbol readers to record
   1198      additional information on a per-symbol basis.  Note that this data
   1199      must be allocated using the same obstack as the symbol itself.  */
   1200   /* So far it is only used by:
   1201      LOC_COMPUTED: to find the location information
   1202      LOC_BLOCK (DWARF2 function): information used internally by the
   1203      DWARF 2 code --- specifically, the location expression for the frame
   1204      base for this function.  */
   1205   /* FIXME drow/2003-02-21: For the LOC_BLOCK case, it might be better
   1206      to add a magic symbol to the block containing this information,
   1207      or to have a generic debug info annotation slot for symbols.  */
   1208 
   1209   void *aux_value = nullptr;
   1210 
   1211   struct symbol *hash_next = nullptr;
   1212 };
   1213 
   1214 /* Several lookup functions return both a symbol and the block in which the
   1215    symbol is found.  This structure is used in these cases.  */
   1216 
   1217 struct block_symbol
   1218 {
   1219   /* The symbol that was found, or NULL if no symbol was found.  */
   1220   struct symbol *symbol;
   1221 
   1222   /* If SYMBOL is not NULL, then this is the block in which the symbol is
   1223      defined.  */
   1224   const struct block *block;
   1225 };
   1226 
   1227 extern const struct symbol_impl *symbol_impls;
   1228 
   1229 /* Note: There is no accessor macro for symbol.owner because it is
   1230    "private".  */
   1231 
   1232 #define SYMBOL_DOMAIN(symbol)	(symbol)->domain
   1233 #define SYMBOL_IMPL(symbol)		(symbol_impls[(symbol)->aclass_index])
   1234 #define SYMBOL_ACLASS_INDEX(symbol)	(symbol)->aclass_index
   1235 #define SYMBOL_CLASS(symbol)		(SYMBOL_IMPL (symbol).aclass)
   1236 #define SYMBOL_OBJFILE_OWNED(symbol)	((symbol)->is_objfile_owned)
   1237 #define SYMBOL_IS_ARGUMENT(symbol)	(symbol)->is_argument
   1238 #define SYMBOL_INLINED(symbol)		(symbol)->is_inlined
   1239 #define SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION(symbol) \
   1240   (((symbol)->subclass) == SYMBOL_TEMPLATE)
   1241 #define SYMBOL_TYPE(symbol)		(symbol)->type
   1242 #define SYMBOL_LINE(symbol)		(symbol)->line
   1243 #define SYMBOL_COMPUTED_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_computed)
   1244 #define SYMBOL_BLOCK_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_block)
   1245 #define SYMBOL_REGISTER_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_register)
   1246 #define SYMBOL_LOCATION_BATON(symbol)   (symbol)->aux_value
   1247 
   1248 extern int register_symbol_computed_impl (enum address_class,
   1249 					  const struct symbol_computed_ops *);
   1250 
   1251 extern int register_symbol_block_impl (enum address_class aclass,
   1252 				       const struct symbol_block_ops *ops);
   1253 
   1254 extern int register_symbol_register_impl (enum address_class,
   1255 					  const struct symbol_register_ops *);
   1256 
   1257 /* Return the OBJFILE of SYMBOL.
   1258    It is an error to call this if symbol.is_objfile_owned is false, which
   1259    only happens for architecture-provided types.  */
   1260 
   1261 extern struct objfile *symbol_objfile (const struct symbol *symbol);
   1262 
   1263 /* Return the ARCH of SYMBOL.  */
   1264 
   1265 extern struct gdbarch *symbol_arch (const struct symbol *symbol);
   1266 
   1267 /* Return the SYMTAB 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 symtab *symbol_symtab (const struct symbol *symbol);
   1272 
   1273 /* Set the symtab of SYMBOL to SYMTAB.
   1274    It is an error to call this if symbol.is_objfile_owned is false, which
   1275    only happens for architecture-provided types.  */
   1276 
   1277 extern void symbol_set_symtab (struct symbol *symbol, struct symtab *symtab);
   1278 
   1279 /* An instance of this type is used to represent a C++ template
   1280    function.  A symbol is really of this type iff
   1281    SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION is true.  */
   1282 
   1283 struct template_symbol : public symbol
   1284 {
   1285   /* The number of template arguments.  */
   1286   int n_template_arguments = 0;
   1287 
   1288   /* The template arguments.  This is an array with
   1289      N_TEMPLATE_ARGUMENTS elements.  */
   1290   struct symbol **template_arguments = nullptr;
   1291 };
   1292 
   1293 /* A symbol that represents a Rust virtual table object.  */
   1294 
   1295 struct rust_vtable_symbol : public symbol
   1296 {
   1297   /* The concrete type for which this vtable was created; that is, in
   1298      "impl Trait for Type", this is "Type".  */
   1299   struct type *concrete_type = nullptr;
   1300 };
   1301 
   1302 
   1303 /* Each item represents a line-->pc (or the reverse) mapping.  This is
   1305    somewhat more wasteful of space than one might wish, but since only
   1306    the files which are actually debugged are read in to core, we don't
   1307    waste much space.  */
   1308 
   1309 struct linetable_entry
   1310 {
   1311   /* The line number for this entry.  */
   1312   int line;
   1313 
   1314   /* True if this PC is a good location to place a breakpoint for LINE.  */
   1315   unsigned is_stmt : 1;
   1316 
   1317   /* The address for this entry.  */
   1318   CORE_ADDR pc;
   1319 };
   1320 
   1321 /* The order of entries in the linetable is significant.  They should
   1322    be sorted by increasing values of the pc field.  If there is more than
   1323    one entry for a given pc, then I'm not sure what should happen (and
   1324    I not sure whether we currently handle it the best way).
   1325 
   1326    Example: a C for statement generally looks like this
   1327 
   1328    10   0x100   - for the init/test part of a for stmt.
   1329    20   0x200
   1330    30   0x300
   1331    10   0x400   - for the increment part of a for stmt.
   1332 
   1333    If an entry has a line number of zero, it marks the start of a PC
   1334    range for which no line number information is available.  It is
   1335    acceptable, though wasteful of table space, for such a range to be
   1336    zero length.  */
   1337 
   1338 struct linetable
   1339 {
   1340   int nitems;
   1341 
   1342   /* Actually NITEMS elements.  If you don't like this use of the
   1343      `struct hack', you can shove it up your ANSI (seriously, if the
   1344      committee tells us how to do it, we can probably go along).  */
   1345   struct linetable_entry item[1];
   1346 };
   1347 
   1348 /* How to relocate the symbols from each section in a symbol file.
   1349    The ordering and meaning of the offsets is file-type-dependent;
   1350    typically it is indexed by section numbers or symbol types or
   1351    something like that.  */
   1352 
   1353 typedef std::vector<CORE_ADDR> section_offsets;
   1354 
   1355 /* Each source file or header is represented by a struct symtab.
   1356    The name "symtab" is historical, another name for it is "filetab".
   1357    These objects are chained through the `next' field.  */
   1358 
   1359 struct symtab
   1360 {
   1361   /* Unordered chain of all filetabs in the compunit,  with the exception
   1362      that the "main" source file is the first entry in the list.  */
   1363 
   1364   struct symtab *next;
   1365 
   1366   /* Backlink to containing compunit symtab.  */
   1367 
   1368   struct compunit_symtab *compunit_symtab;
   1369 
   1370   /* Table mapping core addresses to line numbers for this file.
   1371      Can be NULL if none.  Never shared between different symtabs.  */
   1372 
   1373   struct linetable *linetable;
   1374 
   1375   /* Name of this source file.  This pointer is never NULL.  */
   1376 
   1377   const char *filename;
   1378 
   1379   /* Language of this source file.  */
   1380 
   1381   enum language language;
   1382 
   1383   /* Full name of file as found by searching the source path.
   1384      NULL if not yet known.  */
   1385 
   1386   char *fullname;
   1387 };
   1388 
   1389 #define SYMTAB_COMPUNIT(symtab) ((symtab)->compunit_symtab)
   1390 #define SYMTAB_LINETABLE(symtab) ((symtab)->linetable)
   1391 #define SYMTAB_LANGUAGE(symtab) ((symtab)->language)
   1392 #define SYMTAB_BLOCKVECTOR(symtab) \
   1393   COMPUNIT_BLOCKVECTOR (SYMTAB_COMPUNIT (symtab))
   1394 #define SYMTAB_OBJFILE(symtab) \
   1395   COMPUNIT_OBJFILE (SYMTAB_COMPUNIT (symtab))
   1396 #define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace)
   1397 #define SYMTAB_DIRNAME(symtab) \
   1398   COMPUNIT_DIRNAME (SYMTAB_COMPUNIT (symtab))
   1399 
   1400 /* Compunit symtabs contain the actual "symbol table", aka blockvector, as well
   1401    as the list of all source files (what gdb has historically associated with
   1402    the term "symtab").
   1403    Additional information is recorded here that is common to all symtabs in a
   1404    compilation unit (DWARF or otherwise).
   1405 
   1406    Example:
   1407    For the case of a program built out of these files:
   1408 
   1409    foo.c
   1410      foo1.h
   1411      foo2.h
   1412    bar.c
   1413      foo1.h
   1414      bar.h
   1415 
   1416    This is recorded as:
   1417 
   1418    objfile -> foo.c(cu) -> bar.c(cu) -> NULL
   1419                 |            |
   1420                 v            v
   1421               foo.c        bar.c
   1422                 |            |
   1423                 v            v
   1424               foo1.h       foo1.h
   1425                 |            |
   1426                 v            v
   1427               foo2.h       bar.h
   1428                 |            |
   1429                 v            v
   1430                NULL         NULL
   1431 
   1432    where "foo.c(cu)" and "bar.c(cu)" are struct compunit_symtab objects,
   1433    and the files foo.c, etc. are struct symtab objects.  */
   1434 
   1435 struct compunit_symtab
   1436 {
   1437   /* Unordered chain of all compunit symtabs of this objfile.  */
   1438   struct compunit_symtab *next;
   1439 
   1440   /* Object file from which this symtab information was read.  */
   1441   struct objfile *objfile;
   1442 
   1443   /* Name of the symtab.
   1444      This is *not* intended to be a usable filename, and is
   1445      for debugging purposes only.  */
   1446   const char *name;
   1447 
   1448   /* Unordered list of file symtabs, except that by convention the "main"
   1449      source file (e.g., .c, .cc) is guaranteed to be first.
   1450      Each symtab is a file, either the "main" source file (e.g., .c, .cc)
   1451      or header (e.g., .h).  */
   1452   struct symtab *filetabs;
   1453 
   1454   /* Last entry in FILETABS list.
   1455      Subfiles are added to the end of the list so they accumulate in order,
   1456      with the main source subfile living at the front.
   1457      The main reason is so that the main source file symtab is at the head
   1458      of the list, and the rest appear in order for debugging convenience.  */
   1459   struct symtab *last_filetab;
   1460 
   1461   /* Non-NULL string that identifies the format of the debugging information,
   1462      such as "stabs", "dwarf 1", "dwarf 2", "coff", etc.  This is mostly useful
   1463      for automated testing of gdb but may also be information that is
   1464      useful to the user.  */
   1465   const char *debugformat;
   1466 
   1467   /* String of producer version information, or NULL if we don't know.  */
   1468   const char *producer;
   1469 
   1470   /* Directory in which it was compiled, or NULL if we don't know.  */
   1471   const char *dirname;
   1472 
   1473   /* List of all symbol scope blocks for this symtab.  It is shared among
   1474      all symtabs in a given compilation unit.  */
   1475   const struct blockvector *blockvector;
   1476 
   1477   /* Section in objfile->section_offsets for the blockvector and
   1478      the linetable.  Probably always SECT_OFF_TEXT.  */
   1479   int block_line_section;
   1480 
   1481   /* Symtab has been compiled with both optimizations and debug info so that
   1482      GDB may stop skipping prologues as variables locations are valid already
   1483      at function entry points.  */
   1484   unsigned int locations_valid : 1;
   1485 
   1486   /* DWARF unwinder for this CU is valid even for epilogues (PC at the return
   1487      instruction).  This is supported by GCC since 4.5.0.  */
   1488   unsigned int epilogue_unwind_valid : 1;
   1489 
   1490   /* struct call_site entries for this compilation unit or NULL.  */
   1491   htab_t call_site_htab;
   1492 
   1493   /* The macro table for this symtab.  Like the blockvector, this
   1494      is shared between different symtabs in a given compilation unit.
   1495      It's debatable whether it *should* be shared among all the symtabs in
   1496      the given compilation unit, but it currently is.  */
   1497   struct macro_table *macro_table;
   1498 
   1499   /* If non-NULL, then this points to a NULL-terminated vector of
   1500      included compunits.  When searching the static or global
   1501      block of this compunit, the corresponding block of all
   1502      included compunits will also be searched.  Note that this
   1503      list must be flattened -- the symbol reader is responsible for
   1504      ensuring that this vector contains the transitive closure of all
   1505      included compunits.  */
   1506   struct compunit_symtab **includes;
   1507 
   1508   /* If this is an included compunit, this points to one includer
   1509      of the table.  This user is considered the canonical compunit
   1510      containing this one.  An included compunit may itself be
   1511      included by another.  */
   1512   struct compunit_symtab *user;
   1513 };
   1514 
   1515 #define COMPUNIT_OBJFILE(cust) ((cust)->objfile)
   1516 #define COMPUNIT_FILETABS(cust) ((cust)->filetabs)
   1517 #define COMPUNIT_DEBUGFORMAT(cust) ((cust)->debugformat)
   1518 #define COMPUNIT_PRODUCER(cust) ((cust)->producer)
   1519 #define COMPUNIT_DIRNAME(cust) ((cust)->dirname)
   1520 #define COMPUNIT_BLOCKVECTOR(cust) ((cust)->blockvector)
   1521 #define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section)
   1522 #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid)
   1523 #define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid)
   1524 #define COMPUNIT_CALL_SITE_HTAB(cust) ((cust)->call_site_htab)
   1525 #define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table)
   1526 
   1527 /* A range adapter to allowing iterating over all the file tables
   1528    within a compunit.  */
   1529 
   1530 struct compunit_filetabs : public next_adapter<struct symtab>
   1531 {
   1532   compunit_filetabs (struct compunit_symtab *cu)
   1533     : next_adapter<struct symtab> (cu->filetabs)
   1534   {
   1535   }
   1536 };
   1537 
   1538 /* Return the primary symtab of CUST.  */
   1539 
   1540 extern struct symtab *
   1541   compunit_primary_filetab (const struct compunit_symtab *cust);
   1542 
   1543 /* Return the language of CUST.  */
   1544 
   1545 extern enum language compunit_language (const struct compunit_symtab *cust);
   1546 
   1547 /* Return true if this symtab is the "main" symtab of its compunit_symtab.  */
   1548 
   1549 static inline bool
   1550 is_main_symtab_of_compunit_symtab (struct symtab *symtab)
   1551 {
   1552   return symtab == COMPUNIT_FILETABS (SYMTAB_COMPUNIT (symtab));
   1553 }
   1554 
   1555 
   1557 /* The virtual function table is now an array of structures which have the
   1558    form { int16 offset, delta; void *pfn; }.
   1559 
   1560    In normal virtual function tables, OFFSET is unused.
   1561    DELTA is the amount which is added to the apparent object's base
   1562    address in order to point to the actual object to which the
   1563    virtual function should be applied.
   1564    PFN is a pointer to the virtual function.
   1565 
   1566    Note that this macro is g++ specific (FIXME).  */
   1567 
   1568 #define VTBL_FNADDR_OFFSET 2
   1569 
   1570 /* External variables and functions for the objects described above.  */
   1571 
   1572 /* True if we are nested inside psymtab_to_symtab.  */
   1573 
   1574 extern int currently_reading_symtab;
   1575 
   1576 /* symtab.c lookup functions */
   1577 
   1578 extern const char multiple_symbols_ask[];
   1579 extern const char multiple_symbols_all[];
   1580 extern const char multiple_symbols_cancel[];
   1581 
   1582 const char *multiple_symbols_select_mode (void);
   1583 
   1584 bool symbol_matches_domain (enum language symbol_language,
   1585 			    domain_enum symbol_domain,
   1586 			    domain_enum domain);
   1587 
   1588 /* lookup a symbol table by source file name.  */
   1589 
   1590 extern struct symtab *lookup_symtab (const char *);
   1591 
   1592 /* An object of this type is passed as the 'is_a_field_of_this'
   1593    argument to lookup_symbol and lookup_symbol_in_language.  */
   1594 
   1595 struct field_of_this_result
   1596 {
   1597   /* The type in which the field was found.  If this is NULL then the
   1598      symbol was not found in 'this'.  If non-NULL, then one of the
   1599      other fields will be non-NULL as well.  */
   1600 
   1601   struct type *type;
   1602 
   1603   /* If the symbol was found as an ordinary field of 'this', then this
   1604      is non-NULL and points to the particular field.  */
   1605 
   1606   struct field *field;
   1607 
   1608   /* If the symbol was found as a function field of 'this', then this
   1609      is non-NULL and points to the particular field.  */
   1610 
   1611   struct fn_fieldlist *fn_field;
   1612 };
   1613 
   1614 /* Find the definition for a specified symbol name NAME
   1615    in domain DOMAIN in language LANGUAGE, visible from lexical block BLOCK
   1616    if non-NULL or from global/static blocks if BLOCK is NULL.
   1617    Returns the struct symbol pointer, or NULL if no symbol is found.
   1618    C++: if IS_A_FIELD_OF_THIS is non-NULL on entry, check to see if
   1619    NAME is a field of the current implied argument `this'.  If so fill in the
   1620    fields of IS_A_FIELD_OF_THIS, otherwise the fields are set to NULL.
   1621    The symbol's section is fixed up if necessary.  */
   1622 
   1623 extern struct block_symbol
   1624   lookup_symbol_in_language (const char *,
   1625 			     const struct block *,
   1626 			     const domain_enum,
   1627 			     enum language,
   1628 			     struct field_of_this_result *);
   1629 
   1630 /* Same as lookup_symbol_in_language, but using the current language.  */
   1631 
   1632 extern struct block_symbol lookup_symbol (const char *,
   1633 					  const struct block *,
   1634 					  const domain_enum,
   1635 					  struct field_of_this_result *);
   1636 
   1637 /* Find the definition for a specified symbol search name in domain
   1638    DOMAIN, visible from lexical block BLOCK if non-NULL or from
   1639    global/static blocks if BLOCK is NULL.  The passed-in search name
   1640    should not come from the user; instead it should already be a
   1641    search name as retrieved from a search_name () call.  See definition of
   1642    symbol_name_match_type::SEARCH_NAME.  Returns the struct symbol
   1643    pointer, or NULL if no symbol is found.  The symbol's section is
   1644    fixed up if necessary.  */
   1645 
   1646 extern struct block_symbol lookup_symbol_search_name (const char *search_name,
   1647 						      const struct block *block,
   1648 						      domain_enum domain);
   1649 
   1650 /* Some helper functions for languages that need to write their own
   1651    lookup_symbol_nonlocal functions.  */
   1652 
   1653 /* Lookup a symbol in the static block associated to BLOCK, if there
   1654    is one; do nothing if BLOCK is NULL or a global block.
   1655    Upon success fixes up the symbol's section if necessary.  */
   1656 
   1657 extern struct block_symbol
   1658   lookup_symbol_in_static_block (const char *name,
   1659 				 const struct block *block,
   1660 				 const domain_enum domain);
   1661 
   1662 /* Search all static file-level symbols for NAME from DOMAIN.
   1663    Upon success fixes up the symbol's section if necessary.  */
   1664 
   1665 extern struct block_symbol lookup_static_symbol (const char *name,
   1666 						 const domain_enum domain);
   1667 
   1668 /* Lookup a symbol in all files' global blocks.
   1669 
   1670    If BLOCK is non-NULL then it is used for two things:
   1671    1) If a target-specific lookup routine for libraries exists, then use the
   1672       routine for the objfile of BLOCK, and
   1673    2) The objfile of BLOCK is used to assist in determining the search order
   1674       if the target requires it.
   1675       See gdbarch_iterate_over_objfiles_in_search_order.
   1676 
   1677    Upon success fixes up the symbol's section if necessary.  */
   1678 
   1679 extern struct block_symbol
   1680   lookup_global_symbol (const char *name,
   1681 			const struct block *block,
   1682 			const domain_enum domain);
   1683 
   1684 /* Lookup a symbol in block BLOCK.
   1685    Upon success fixes up the symbol's section if necessary.  */
   1686 
   1687 extern struct symbol *
   1688   lookup_symbol_in_block (const char *name,
   1689 			  symbol_name_match_type match_type,
   1690 			  const struct block *block,
   1691 			  const domain_enum domain);
   1692 
   1693 /* Look up the `this' symbol for LANG in BLOCK.  Return the symbol if
   1694    found, or NULL if not found.  */
   1695 
   1696 extern struct block_symbol
   1697   lookup_language_this (const struct language_defn *lang,
   1698 			const struct block *block);
   1699 
   1700 /* Lookup a [struct, union, enum] by name, within a specified block.  */
   1701 
   1702 extern struct type *lookup_struct (const char *, const struct block *);
   1703 
   1704 extern struct type *lookup_union (const char *, const struct block *);
   1705 
   1706 extern struct type *lookup_enum (const char *, const struct block *);
   1707 
   1708 /* from blockframe.c: */
   1709 
   1710 /* lookup the function symbol corresponding to the address.  The
   1711    return value will not be an inlined function; the containing
   1712    function will be returned instead.  */
   1713 
   1714 extern struct symbol *find_pc_function (CORE_ADDR);
   1715 
   1716 /* lookup the function corresponding to the address and section.  The
   1717    return value will not be an inlined function; the containing
   1718    function will be returned instead.  */
   1719 
   1720 extern struct symbol *find_pc_sect_function (CORE_ADDR, struct obj_section *);
   1721 
   1722 /* lookup the function symbol corresponding to the address and
   1723    section.  The return value will be the closest enclosing function,
   1724    which might be an inline function.  */
   1725 
   1726 extern struct symbol *find_pc_sect_containing_function
   1727   (CORE_ADDR pc, struct obj_section *section);
   1728 
   1729 /* Find the symbol at the given address.  Returns NULL if no symbol
   1730    found.  Only exact matches for ADDRESS are considered.  */
   1731 
   1732 extern struct symbol *find_symbol_at_address (CORE_ADDR);
   1733 
   1734 /* Finds the "function" (text symbol) that is smaller than PC but
   1735    greatest of all of the potential text symbols in SECTION.  Sets
   1736    *NAME and/or *ADDRESS conditionally if that pointer is non-null.
   1737    If ENDADDR is non-null, then set *ENDADDR to be the end of the
   1738    function (exclusive).  If the optional parameter BLOCK is non-null,
   1739    then set *BLOCK to the address of the block corresponding to the
   1740    function symbol, if such a symbol could be found during the lookup;
   1741    nullptr is used as a return value for *BLOCK if no block is found.
   1742    This function either succeeds or fails (not halfway succeeds).  If
   1743    it succeeds, it sets *NAME, *ADDRESS, and *ENDADDR to real
   1744    information and returns true.  If it fails, it sets *NAME, *ADDRESS
   1745    and *ENDADDR to zero and returns false.
   1746 
   1747    If the function in question occupies non-contiguous ranges,
   1748    *ADDRESS and *ENDADDR are (subject to the conditions noted above) set
   1749    to the start and end of the range in which PC is found.  Thus
   1750    *ADDRESS <= PC < *ENDADDR with no intervening gaps (in which ranges
   1751    from other functions might be found).
   1752 
   1753    This property allows find_pc_partial_function to be used (as it had
   1754    been prior to the introduction of non-contiguous range support) by
   1755    various tdep files for finding a start address and limit address
   1756    for prologue analysis.  This still isn't ideal, however, because we
   1757    probably shouldn't be doing prologue analysis (in which
   1758    instructions are scanned to determine frame size and stack layout)
   1759    for any range that doesn't contain the entry pc.  Moreover, a good
   1760    argument can be made that prologue analysis ought to be performed
   1761    starting from the entry pc even when PC is within some other range.
   1762    This might suggest that *ADDRESS and *ENDADDR ought to be set to the
   1763    limits of the entry pc range, but that will cause the
   1764    *ADDRESS <= PC < *ENDADDR condition to be violated; many of the
   1765    callers of find_pc_partial_function expect this condition to hold.
   1766 
   1767    Callers which require the start and/or end addresses for the range
   1768    containing the entry pc should instead call
   1769    find_function_entry_range_from_pc.  */
   1770 
   1771 extern bool find_pc_partial_function (CORE_ADDR pc, const char **name,
   1772 				      CORE_ADDR *address, CORE_ADDR *endaddr,
   1773 				      const struct block **block = nullptr);
   1774 
   1775 /* Like find_pc_partial_function, above, but returns the underlying
   1776    general_symbol_info (rather than the name) as an out parameter.  */
   1777 
   1778 extern bool find_pc_partial_function_sym
   1779   (CORE_ADDR pc, const general_symbol_info **sym,
   1780    CORE_ADDR *address, CORE_ADDR *endaddr,
   1781    const struct block **block = nullptr);
   1782 
   1783 /* Like find_pc_partial_function, above, but *ADDRESS and *ENDADDR are
   1784    set to start and end addresses of the range containing the entry pc.
   1785 
   1786    Note that it is not necessarily the case that (for non-NULL ADDRESS
   1787    and ENDADDR arguments) the *ADDRESS <= PC < *ENDADDR condition will
   1788    hold.
   1789 
   1790    See comment for find_pc_partial_function, above, for further
   1791    explanation.  */
   1792 
   1793 extern bool find_function_entry_range_from_pc (CORE_ADDR pc,
   1794 					       const char **name,
   1795 					       CORE_ADDR *address,
   1796 					       CORE_ADDR *endaddr);
   1797 
   1798 /* Return the type of a function with its first instruction exactly at
   1799    the PC address.  Return NULL otherwise.  */
   1800 
   1801 extern struct type *find_function_type (CORE_ADDR pc);
   1802 
   1803 /* See if we can figure out the function's actual type from the type
   1804    that the resolver returns.  RESOLVER_FUNADDR is the address of the
   1805    ifunc resolver.  */
   1806 
   1807 extern struct type *find_gnu_ifunc_target_type (CORE_ADDR resolver_funaddr);
   1808 
   1809 /* Find the GNU ifunc minimal symbol that matches SYM.  */
   1810 extern bound_minimal_symbol find_gnu_ifunc (const symbol *sym);
   1811 
   1812 extern void clear_pc_function_cache (void);
   1813 
   1814 /* Expand symtab containing PC, SECTION if not already expanded.  */
   1815 
   1816 extern void expand_symtab_containing_pc (CORE_ADDR, struct obj_section *);
   1817 
   1818 /* lookup full symbol table by address.  */
   1819 
   1820 extern struct compunit_symtab *find_pc_compunit_symtab (CORE_ADDR);
   1821 
   1822 /* lookup full symbol table by address and section.  */
   1823 
   1824 extern struct compunit_symtab *
   1825   find_pc_sect_compunit_symtab (CORE_ADDR, struct obj_section *);
   1826 
   1827 extern bool find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
   1828 
   1829 extern void reread_symbols (void);
   1830 
   1831 /* Look up a type named NAME in STRUCT_DOMAIN in the current language.
   1832    The type returned must not be opaque -- i.e., must have at least one field
   1833    defined.  */
   1834 
   1835 extern struct type *lookup_transparent_type (const char *);
   1836 
   1837 extern struct type *basic_lookup_transparent_type (const char *);
   1838 
   1839 /* Macro for name of symbol to indicate a file compiled with gcc.  */
   1840 #ifndef GCC_COMPILED_FLAG_SYMBOL
   1841 #define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
   1842 #endif
   1843 
   1844 /* Macro for name of symbol to indicate a file compiled with gcc2.  */
   1845 #ifndef GCC2_COMPILED_FLAG_SYMBOL
   1846 #define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
   1847 #endif
   1848 
   1849 extern bool in_gnu_ifunc_stub (CORE_ADDR pc);
   1850 
   1851 /* Functions for resolving STT_GNU_IFUNC symbols which are implemented only
   1852    for ELF symbol files.  */
   1853 
   1854 struct gnu_ifunc_fns
   1855 {
   1856   /* See elf_gnu_ifunc_resolve_addr for its real implementation.  */
   1857   CORE_ADDR (*gnu_ifunc_resolve_addr) (struct gdbarch *gdbarch, CORE_ADDR pc);
   1858 
   1859   /* See elf_gnu_ifunc_resolve_name for its real implementation.  */
   1860   bool (*gnu_ifunc_resolve_name) (const char *function_name,
   1861 				 CORE_ADDR *function_address_p);
   1862 
   1863   /* See elf_gnu_ifunc_resolver_stop for its real implementation.  */
   1864   void (*gnu_ifunc_resolver_stop) (struct breakpoint *b);
   1865 
   1866   /* See elf_gnu_ifunc_resolver_return_stop for its real implementation.  */
   1867   void (*gnu_ifunc_resolver_return_stop) (struct breakpoint *b);
   1868 };
   1869 
   1870 #define gnu_ifunc_resolve_addr gnu_ifunc_fns_p->gnu_ifunc_resolve_addr
   1871 #define gnu_ifunc_resolve_name gnu_ifunc_fns_p->gnu_ifunc_resolve_name
   1872 #define gnu_ifunc_resolver_stop gnu_ifunc_fns_p->gnu_ifunc_resolver_stop
   1873 #define gnu_ifunc_resolver_return_stop \
   1874   gnu_ifunc_fns_p->gnu_ifunc_resolver_return_stop
   1875 
   1876 extern const struct gnu_ifunc_fns *gnu_ifunc_fns_p;
   1877 
   1878 extern CORE_ADDR find_solib_trampoline_target (struct frame_info *, CORE_ADDR);
   1879 
   1880 struct symtab_and_line
   1881 {
   1882   /* The program space of this sal.  */
   1883   struct program_space *pspace = NULL;
   1884 
   1885   struct symtab *symtab = NULL;
   1886   struct symbol *symbol = NULL;
   1887   struct obj_section *section = NULL;
   1888   struct minimal_symbol *msymbol = NULL;
   1889   /* Line number.  Line numbers start at 1 and proceed through symtab->nlines.
   1890      0 is never a valid line number; it is used to indicate that line number
   1891      information is not available.  */
   1892   int line = 0;
   1893 
   1894   CORE_ADDR pc = 0;
   1895   CORE_ADDR end = 0;
   1896   bool explicit_pc = false;
   1897   bool explicit_line = false;
   1898 
   1899   /* If the line number information is valid, then this indicates if this
   1900      line table entry had the is-stmt flag set or not.  */
   1901   bool is_stmt = false;
   1902 
   1903   /* The probe associated with this symtab_and_line.  */
   1904   probe *prob = NULL;
   1905   /* If PROBE is not NULL, then this is the objfile in which the probe
   1906      originated.  */
   1907   struct objfile *objfile = NULL;
   1908 };
   1909 
   1910 
   1911 
   1913 /* Given a pc value, return line number it is in.  Second arg nonzero means
   1914    if pc is on the boundary use the previous statement's line number.  */
   1915 
   1916 extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
   1917 
   1918 /* Same function, but specify a section as well as an address.  */
   1919 
   1920 extern struct symtab_and_line find_pc_sect_line (CORE_ADDR,
   1921 						 struct obj_section *, int);
   1922 
   1923 /* Wrapper around find_pc_line to just return the symtab.  */
   1924 
   1925 extern struct symtab *find_pc_line_symtab (CORE_ADDR);
   1926 
   1927 /* Given a symtab and line number, return the pc there.  */
   1928 
   1929 extern bool find_line_pc (struct symtab *, int, CORE_ADDR *);
   1930 
   1931 extern bool find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
   1932 				CORE_ADDR *);
   1933 
   1934 extern void resolve_sal_pc (struct symtab_and_line *);
   1935 
   1936 /* solib.c */
   1937 
   1938 extern void clear_solib (void);
   1939 
   1940 /* The reason we're calling into a completion match list collector
   1941    function.  */
   1942 enum class complete_symbol_mode
   1943   {
   1944     /* Completing an expression.  */
   1945     EXPRESSION,
   1946 
   1947     /* Completing a linespec.  */
   1948     LINESPEC,
   1949   };
   1950 
   1951 extern void default_collect_symbol_completion_matches_break_on
   1952   (completion_tracker &tracker,
   1953    complete_symbol_mode mode,
   1954    symbol_name_match_type name_match_type,
   1955    const char *text, const char *word, const char *break_on,
   1956    enum type_code code);
   1957 extern void collect_symbol_completion_matches
   1958   (completion_tracker &tracker,
   1959    complete_symbol_mode mode,
   1960    symbol_name_match_type name_match_type,
   1961    const char *, const char *);
   1962 extern void collect_symbol_completion_matches_type (completion_tracker &tracker,
   1963 						    const char *, const char *,
   1964 						    enum type_code);
   1965 
   1966 extern void collect_file_symbol_completion_matches
   1967   (completion_tracker &tracker,
   1968    complete_symbol_mode,
   1969    symbol_name_match_type name_match_type,
   1970    const char *, const char *, const char *);
   1971 
   1972 extern completion_list
   1973   make_source_files_completion_list (const char *, const char *);
   1974 
   1975 /* Return whether SYM is a function/method, as opposed to a data symbol.  */
   1976 
   1977 extern bool symbol_is_function_or_method (symbol *sym);
   1978 
   1979 /* Return whether MSYMBOL is a function/method, as opposed to a data
   1980    symbol */
   1981 
   1982 extern bool symbol_is_function_or_method (minimal_symbol *msymbol);
   1983 
   1984 /* Return whether SYM should be skipped in completion mode MODE.  In
   1985    linespec mode, we're only interested in functions/methods.  */
   1986 
   1987 template<typename Symbol>
   1988 static bool
   1989 completion_skip_symbol (complete_symbol_mode mode, Symbol *sym)
   1990 {
   1991   return (mode == complete_symbol_mode::LINESPEC
   1992 	  && !symbol_is_function_or_method (sym));
   1993 }
   1994 
   1995 /* symtab.c */
   1996 
   1997 bool matching_obj_sections (struct obj_section *, struct obj_section *);
   1998 
   1999 extern struct symtab *find_line_symtab (struct symtab *, int, int *, bool *);
   2000 
   2001 /* Given a function symbol SYM, find the symtab and line for the start
   2002    of the function.  If FUNFIRSTLINE is true, we want the first line
   2003    of real code inside the function.  */
   2004 extern symtab_and_line find_function_start_sal (symbol *sym, bool
   2005 						funfirstline);
   2006 
   2007 /* Same, but start with a function address/section instead of a
   2008    symbol.  */
   2009 extern symtab_and_line find_function_start_sal (CORE_ADDR func_addr,
   2010 						obj_section *section,
   2011 						bool funfirstline);
   2012 
   2013 extern void skip_prologue_sal (struct symtab_and_line *);
   2014 
   2015 /* symtab.c */
   2016 
   2017 extern CORE_ADDR skip_prologue_using_sal (struct gdbarch *gdbarch,
   2018 					  CORE_ADDR func_addr);
   2019 
   2020 extern struct symbol *fixup_symbol_section (struct symbol *,
   2021 					    struct objfile *);
   2022 
   2023 /* If MSYMBOL is an text symbol, look for a function debug symbol with
   2024    the same address.  Returns NULL if not found.  This is necessary in
   2025    case a function is an alias to some other function, because debug
   2026    information is only emitted for the alias target function's
   2027    definition, not for the alias.  */
   2028 extern symbol *find_function_alias_target (bound_minimal_symbol msymbol);
   2029 
   2030 /* Symbol searching */
   2031 
   2032 /* When using the symbol_searcher struct to search for symbols, a vector of
   2033    the following structs is returned.  */
   2034 struct symbol_search
   2035 {
   2036   symbol_search (int block_, struct symbol *symbol_)
   2037     : block (block_),
   2038       symbol (symbol_)
   2039   {
   2040     msymbol.minsym = nullptr;
   2041     msymbol.objfile = nullptr;
   2042   }
   2043 
   2044   symbol_search (int block_, struct minimal_symbol *minsym,
   2045 		 struct objfile *objfile)
   2046     : block (block_),
   2047       symbol (nullptr)
   2048   {
   2049     msymbol.minsym = minsym;
   2050     msymbol.objfile = objfile;
   2051   }
   2052 
   2053   bool operator< (const symbol_search &other) const
   2054   {
   2055     return compare_search_syms (*this, other) < 0;
   2056   }
   2057 
   2058   bool operator== (const symbol_search &other) const
   2059   {
   2060     return compare_search_syms (*this, other) == 0;
   2061   }
   2062 
   2063   /* The block in which the match was found.  Could be, for example,
   2064      STATIC_BLOCK or GLOBAL_BLOCK.  */
   2065   int block;
   2066 
   2067   /* Information describing what was found.
   2068 
   2069      If symbol is NOT NULL, then information was found for this match.  */
   2070   struct symbol *symbol;
   2071 
   2072   /* If msymbol is non-null, then a match was made on something for
   2073      which only minimal_symbols exist.  */
   2074   struct bound_minimal_symbol msymbol;
   2075 
   2076 private:
   2077 
   2078   static int compare_search_syms (const symbol_search &sym_a,
   2079 				  const symbol_search &sym_b);
   2080 };
   2081 
   2082 /* In order to search for global symbols of a particular kind matching
   2083    particular regular expressions, create an instance of this structure and
   2084    call the SEARCH member function.  */
   2085 class global_symbol_searcher
   2086 {
   2087 public:
   2088 
   2089   /* Constructor.  */
   2090   global_symbol_searcher (enum search_domain kind,
   2091 			  const char *symbol_name_regexp)
   2092     : m_kind (kind),
   2093       m_symbol_name_regexp (symbol_name_regexp)
   2094   {
   2095     /* The symbol searching is designed to only find one kind of thing.  */
   2096     gdb_assert (m_kind != ALL_DOMAIN);
   2097   }
   2098 
   2099   /* Set the optional regexp that matches against the symbol type.  */
   2100   void set_symbol_type_regexp (const char *regexp)
   2101   {
   2102     m_symbol_type_regexp = regexp;
   2103   }
   2104 
   2105   /* Set the flag to exclude minsyms from the search results.  */
   2106   void set_exclude_minsyms (bool exclude_minsyms)
   2107   {
   2108     m_exclude_minsyms = exclude_minsyms;
   2109   }
   2110 
   2111   /* Set the maximum number of search results to be returned.  */
   2112   void set_max_search_results (size_t max_search_results)
   2113   {
   2114     m_max_search_results = max_search_results;
   2115   }
   2116 
   2117   /* Search the symbols from all objfiles in the current program space
   2118      looking for matches as defined by the current state of this object.
   2119 
   2120      Within each file the results are sorted locally; each symtab's global
   2121      and static blocks are separately alphabetized.  Duplicate entries are
   2122      removed.  */
   2123   std::vector<symbol_search> search () const;
   2124 
   2125   /* The set of source files to search in for matching symbols.  This is
   2126      currently public so that it can be populated after this object has
   2127      been constructed.  */
   2128   std::vector<const char *> filenames;
   2129 
   2130 private:
   2131   /* The kind of symbols are we searching for.
   2132      VARIABLES_DOMAIN - Search all symbols, excluding functions, type
   2133                         names, and constants (enums).
   2134      FUNCTIONS_DOMAIN - Search all functions..
   2135      TYPES_DOMAIN     - Search all type names.
   2136      MODULES_DOMAIN   - Search all Fortran modules.
   2137      ALL_DOMAIN       - Not valid for this function.  */
   2138   enum search_domain m_kind;
   2139 
   2140   /* Regular expression to match against the symbol name.  */
   2141   const char *m_symbol_name_regexp = nullptr;
   2142 
   2143   /* Regular expression to match against the symbol type.  */
   2144   const char *m_symbol_type_regexp = nullptr;
   2145 
   2146   /* When this flag is false then minsyms that match M_SYMBOL_REGEXP will
   2147      be included in the results, otherwise they are excluded.  */
   2148   bool m_exclude_minsyms = false;
   2149 
   2150   /* Maximum number of search results.  We currently impose a hard limit
   2151      of SIZE_MAX, there is no "unlimited".  */
   2152   size_t m_max_search_results = SIZE_MAX;
   2153 
   2154   /* Expand symtabs in OBJFILE that match PREG, are of type M_KIND.  Return
   2155      true if any msymbols were seen that we should later consider adding to
   2156      the results list.  */
   2157   bool expand_symtabs (objfile *objfile,
   2158 		       const gdb::optional<compiled_regex> &preg) const;
   2159 
   2160   /* Add symbols from symtabs in OBJFILE that match PREG, and TREG, and are
   2161      of type M_KIND, to the results set RESULTS_SET.  Return false if we
   2162      stop adding results early due to having already found too many results
   2163      (based on M_MAX_SEARCH_RESULTS limit), otherwise return true.
   2164      Returning true does not indicate that any results were added, just
   2165      that we didn't _not_ add a result due to reaching MAX_SEARCH_RESULTS.  */
   2166   bool add_matching_symbols (objfile *objfile,
   2167 			     const gdb::optional<compiled_regex> &preg,
   2168 			     const gdb::optional<compiled_regex> &treg,
   2169 			     std::set<symbol_search> *result_set) const;
   2170 
   2171   /* Add msymbols from OBJFILE that match PREG and M_KIND, to the results
   2172      vector RESULTS.  Return false if we stop adding results early due to
   2173      having already found too many results (based on max search results
   2174      limit M_MAX_SEARCH_RESULTS), otherwise return true.  Returning true
   2175      does not indicate that any results were added, just that we didn't
   2176      _not_ add a result due to reaching MAX_SEARCH_RESULTS.  */
   2177   bool add_matching_msymbols (objfile *objfile,
   2178 			      const gdb::optional<compiled_regex> &preg,
   2179 			      std::vector<symbol_search> *results) const;
   2180 
   2181   /* Return true if MSYMBOL is of type KIND.  */
   2182   static bool is_suitable_msymbol (const enum search_domain kind,
   2183 				   const minimal_symbol *msymbol);
   2184 };
   2185 
   2186 /* When searching for Fortran symbols within modules (functions/variables)
   2187    we return a vector of this type.  The first item in the pair is the
   2188    module symbol, and the second item is the symbol for the function or
   2189    variable we found.  */
   2190 typedef std::pair<symbol_search, symbol_search> module_symbol_search;
   2191 
   2192 /* Searches the symbols to find function and variables symbols (depending
   2193    on KIND) within Fortran modules.  The MODULE_REGEXP matches against the
   2194    name of the module, REGEXP matches against the name of the symbol within
   2195    the module, and TYPE_REGEXP matches against the type of the symbol
   2196    within the module.  */
   2197 extern std::vector<module_symbol_search> search_module_symbols
   2198 	(const char *module_regexp, const char *regexp,
   2199 	 const char *type_regexp, search_domain kind);
   2200 
   2201 /* Convert a global or static symbol SYM (based on BLOCK, which should be
   2202    either GLOBAL_BLOCK or STATIC_BLOCK) into a string for use in 'info'
   2203    type commands (e.g. 'info variables', 'info functions', etc).  KIND is
   2204    the type of symbol that was searched for which gave us SYM.  */
   2205 
   2206 extern std::string symbol_to_info_string (struct symbol *sym, int block,
   2207 					  enum search_domain kind);
   2208 
   2209 extern bool treg_matches_sym_type_name (const compiled_regex &treg,
   2210 					const struct symbol *sym);
   2211 
   2212 /* The name of the ``main'' function.  */
   2213 extern const char *main_name ();
   2214 extern enum language main_language (void);
   2215 
   2216 /* Lookup symbol NAME from DOMAIN in MAIN_OBJFILE's global or static blocks,
   2217    as specified by BLOCK_INDEX.
   2218    This searches MAIN_OBJFILE as well as any associated separate debug info
   2219    objfiles of MAIN_OBJFILE.
   2220    BLOCK_INDEX can be GLOBAL_BLOCK or STATIC_BLOCK.
   2221    Upon success fixes up the symbol's section if necessary.  */
   2222 
   2223 extern struct block_symbol
   2224   lookup_global_symbol_from_objfile (struct objfile *main_objfile,
   2225 				     enum block_enum block_index,
   2226 				     const char *name,
   2227 				     const domain_enum domain);
   2228 
   2229 /* Return 1 if the supplied producer string matches the ARM RealView
   2230    compiler (armcc).  */
   2231 bool producer_is_realview (const char *producer);
   2232 
   2233 void fixup_section (struct general_symbol_info *ginfo,
   2234 		    CORE_ADDR addr, struct objfile *objfile);
   2235 
   2236 extern unsigned int symtab_create_debug;
   2237 
   2238 extern unsigned int symbol_lookup_debug;
   2239 
   2240 extern bool basenames_may_differ;
   2241 
   2242 bool compare_filenames_for_search (const char *filename,
   2243 				   const char *search_name);
   2244 
   2245 bool compare_glob_filenames_for_search (const char *filename,
   2246 					const char *search_name);
   2247 
   2248 bool iterate_over_some_symtabs (const char *name,
   2249 				const char *real_path,
   2250 				struct compunit_symtab *first,
   2251 				struct compunit_symtab *after_last,
   2252 				gdb::function_view<bool (symtab *)> callback);
   2253 
   2254 void iterate_over_symtabs (const char *name,
   2255 			   gdb::function_view<bool (symtab *)> callback);
   2256 
   2257 
   2258 std::vector<CORE_ADDR> find_pcs_for_symtab_line
   2259     (struct symtab *symtab, int line, struct linetable_entry **best_entry);
   2260 
   2261 /* Prototype for callbacks for LA_ITERATE_OVER_SYMBOLS.  The callback
   2262    is called once per matching symbol SYM.  The callback should return
   2263    true to indicate that LA_ITERATE_OVER_SYMBOLS should continue
   2264    iterating, or false to indicate that the iteration should end.  */
   2265 
   2266 typedef bool (symbol_found_callback_ftype) (struct block_symbol *bsym);
   2267 
   2268 /* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
   2269 
   2270    For each symbol that matches, CALLBACK is called.  The symbol is
   2271    passed to the callback.
   2272 
   2273    If CALLBACK returns false, the iteration ends and this function
   2274    returns false.  Otherwise, the search continues, and the function
   2275    eventually returns true.  */
   2276 
   2277 bool iterate_over_symbols (const struct block *block,
   2278 			   const lookup_name_info &name,
   2279 			   const domain_enum domain,
   2280 			   gdb::function_view<symbol_found_callback_ftype> callback);
   2281 
   2282 /* Like iterate_over_symbols, but if all calls to CALLBACK return
   2283    true, then calls CALLBACK one additional time with a block_symbol
   2284    that has a valid block but a NULL symbol.  */
   2285 
   2286 bool iterate_over_symbols_terminated
   2287   (const struct block *block,
   2288    const lookup_name_info &name,
   2289    const domain_enum domain,
   2290    gdb::function_view<symbol_found_callback_ftype> callback);
   2291 
   2292 /* Storage type used by demangle_for_lookup.  demangle_for_lookup
   2293    either returns a const char * pointer that points to either of the
   2294    fields of this type, or a pointer to the input NAME.  This is done
   2295    this way to avoid depending on the precise details of the storage
   2296    for the string.  */
   2297 class demangle_result_storage
   2298 {
   2299 public:
   2300 
   2301   /* Swap the malloc storage to STR, and return a pointer to the
   2302      beginning of the new string.  */
   2303   const char *set_malloc_ptr (gdb::unique_xmalloc_ptr<char> &&str)
   2304   {
   2305     m_malloc = std::move (str);
   2306     return m_malloc.get ();
   2307   }
   2308 
   2309   /* Set the malloc storage to now point at PTR.  Any previous malloc
   2310      storage is released.  */
   2311   const char *set_malloc_ptr (char *ptr)
   2312   {
   2313     m_malloc.reset (ptr);
   2314     return ptr;
   2315   }
   2316 
   2317 private:
   2318 
   2319   /* The storage.  */
   2320   gdb::unique_xmalloc_ptr<char> m_malloc;
   2321 };
   2322 
   2323 const char *
   2324   demangle_for_lookup (const char *name, enum language lang,
   2325 		       demangle_result_storage &storage);
   2326 
   2327 /* Test to see if the symbol of language SYMBOL_LANGUAGE specified by
   2328    SYMNAME (which is already demangled for C++ symbols) matches
   2329    SYM_TEXT in the first SYM_TEXT_LEN characters.  If so, add it to
   2330    the current completion list and return true.  Otherwise, return
   2331    false.  */
   2332 bool completion_list_add_name (completion_tracker &tracker,
   2333 			       language symbol_language,
   2334 			       const char *symname,
   2335 			       const lookup_name_info &lookup_name,
   2336 			       const char *text, const char *word);
   2337 
   2338 /* A simple symbol searching class.  */
   2339 
   2340 class symbol_searcher
   2341 {
   2342 public:
   2343   /* Returns the symbols found for the search.  */
   2344   const std::vector<block_symbol> &
   2345   matching_symbols () const
   2346   {
   2347     return m_symbols;
   2348   }
   2349 
   2350   /* Returns the minimal symbols found for the search.  */
   2351   const std::vector<bound_minimal_symbol> &
   2352   matching_msymbols () const
   2353   {
   2354     return m_minimal_symbols;
   2355   }
   2356 
   2357   /* Search for all symbols named NAME in LANGUAGE with DOMAIN, restricting
   2358      search to FILE_SYMTABS and SEARCH_PSPACE, both of which may be NULL
   2359      to search all symtabs and program spaces.  */
   2360   void find_all_symbols (const std::string &name,
   2361 			 const struct language_defn *language,
   2362 			 enum search_domain search_domain,
   2363 			 std::vector<symtab *> *search_symtabs,
   2364 			 struct program_space *search_pspace);
   2365 
   2366   /* Reset this object to perform another search.  */
   2367   void reset ()
   2368   {
   2369     m_symbols.clear ();
   2370     m_minimal_symbols.clear ();
   2371   }
   2372 
   2373 private:
   2374   /* Matching debug symbols.  */
   2375   std::vector<block_symbol>  m_symbols;
   2376 
   2377   /* Matching non-debug symbols.  */
   2378   std::vector<bound_minimal_symbol> m_minimal_symbols;
   2379 };
   2380 
   2381 #endif /* !defined(SYMTAB_H) */
   2382