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