Home | History | Annotate | Line # | Download | only in gdb
symtab.h revision 1.7
      1 /* Symbol table definitions for GDB.
      2 
      3    Copyright (C) 1986-2017 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 <vector>
     24 #include "gdb_vecs.h"
     25 #include "gdbtypes.h"
     26 #include "common/enum-flags.h"
     27 #include "common/function-view.h"
     28 
     29 /* Opaque declarations.  */
     30 struct ui_file;
     31 struct frame_info;
     32 struct symbol;
     33 struct obstack;
     34 struct objfile;
     35 struct block;
     36 struct blockvector;
     37 struct axs_value;
     38 struct agent_expr;
     39 struct program_space;
     40 struct language_defn;
     41 struct probe;
     42 struct common_block;
     43 struct obj_section;
     44 struct cmd_list_element;
     45 
     46 /* Some of the structures in this file are space critical.
     47    The space-critical structures are:
     48 
     49      struct general_symbol_info
     50      struct symbol
     51      struct partial_symbol
     52 
     53    These structures are laid out to encourage good packing.
     54    They use ENUM_BITFIELD and short int fields, and they order the
     55    structure members so that fields less than a word are next
     56    to each other so they can be packed together.  */
     57 
     58 /* Rearranged: used ENUM_BITFIELD and rearranged field order in
     59    all the space critical structures (plus struct minimal_symbol).
     60    Memory usage dropped from 99360768 bytes to 90001408 bytes.
     61    I measured this with before-and-after tests of
     62    "HEAD-old-gdb -readnow HEAD-old-gdb" and
     63    "HEAD-new-gdb -readnow HEAD-old-gdb" on native i686-pc-linux-gnu,
     64    red hat linux 8, with LD_LIBRARY_PATH=/usr/lib/debug,
     65    typing "maint space 1" at the first command prompt.
     66 
     67    Here is another measurement (from andrew c):
     68      # no /usr/lib/debug, just plain glibc, like a normal user
     69      gdb HEAD-old-gdb
     70      (gdb) break internal_error
     71      (gdb) run
     72      (gdb) maint internal-error
     73      (gdb) backtrace
     74      (gdb) maint space 1
     75 
     76    gdb gdb_6_0_branch  2003-08-19  space used: 8896512
     77    gdb HEAD            2003-08-19  space used: 8904704
     78    gdb HEAD            2003-08-21  space used: 8396800 (+symtab.h)
     79    gdb HEAD            2003-08-21  space used: 8265728 (+gdbtypes.h)
     80 
     81    The third line shows the savings from the optimizations in symtab.h.
     82    The fourth line shows the savings from the optimizations in
     83    gdbtypes.h.  Both optimizations are in gdb HEAD now.
     84 
     85    --chastain 2003-08-21  */
     86 
     87 /* Define a structure for the information that is common to all symbol types,
     88    including minimal symbols, partial symbols, and full symbols.  In a
     89    multilanguage environment, some language specific information may need to
     90    be recorded along with each symbol.  */
     91 
     92 /* This structure is space critical.  See space comments at the top.  */
     93 
     94 struct general_symbol_info
     95 {
     96   /* Name of the symbol.  This is a required field.  Storage for the
     97      name is allocated on the objfile_obstack for the associated
     98      objfile.  For languages like C++ that make a distinction between
     99      the mangled name and demangled name, this is the mangled
    100      name.  */
    101 
    102   const char *name;
    103 
    104   /* Value of the symbol.  Which member of this union to use, and what
    105      it means, depends on what kind of symbol this is and its
    106      SYMBOL_CLASS.  See comments there for more details.  All of these
    107      are in host byte order (though what they point to might be in
    108      target byte order, e.g. LOC_CONST_BYTES).  */
    109 
    110   union
    111   {
    112     LONGEST ivalue;
    113 
    114     const struct block *block;
    115 
    116     const gdb_byte *bytes;
    117 
    118     CORE_ADDR address;
    119 
    120     /* A common block.  Used with LOC_COMMON_BLOCK.  */
    121 
    122     const struct common_block *common_block;
    123 
    124     /* For opaque typedef struct chain.  */
    125 
    126     struct symbol *chain;
    127   }
    128   value;
    129 
    130   /* Since one and only one language can apply, wrap the language specific
    131      information inside a union.  */
    132 
    133   union
    134   {
    135     /* A pointer to an obstack that can be used for storage associated
    136        with this symbol.  This is only used by Ada, and only when the
    137        'ada_mangled' field is zero.  */
    138     struct obstack *obstack;
    139 
    140     /* This is used by languages which wish to store a demangled name.
    141        currently used by Ada, C++, and Objective C.  */
    142     const char *demangled_name;
    143   }
    144   language_specific;
    145 
    146   /* Record the source code language that applies to this symbol.
    147      This is used to select one of the fields from the language specific
    148      union above.  */
    149 
    150   ENUM_BITFIELD(language) language : LANGUAGE_BITS;
    151 
    152   /* This is only used by Ada.  If set, then the 'demangled_name' field
    153      of language_specific is valid.  Otherwise, the 'obstack' field is
    154      valid.  */
    155   unsigned int ada_mangled : 1;
    156 
    157   /* Which section is this symbol in?  This is an index into
    158      section_offsets for this objfile.  Negative means that the symbol
    159      does not get relocated relative to a section.  */
    160 
    161   short section;
    162 };
    163 
    164 extern void symbol_set_demangled_name (struct general_symbol_info *,
    165 				       const char *,
    166                                        struct obstack *);
    167 
    168 extern const char *symbol_get_demangled_name
    169   (const struct general_symbol_info *);
    170 
    171 extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *);
    172 
    173 /* Note that all the following SYMBOL_* macros are used with the
    174    SYMBOL argument being either a partial symbol or
    175    a full symbol.  Both types have a ginfo field.  In particular
    176    the SYMBOL_SET_LANGUAGE, SYMBOL_DEMANGLED_NAME, etc.
    177    macros cannot be entirely substituted by
    178    functions, unless the callers are changed to pass in the ginfo
    179    field only, instead of the SYMBOL parameter.  */
    180 
    181 #define SYMBOL_VALUE(symbol)		(symbol)->ginfo.value.ivalue
    182 #define SYMBOL_VALUE_ADDRESS(symbol)	(symbol)->ginfo.value.address
    183 #define SYMBOL_VALUE_BYTES(symbol)	(symbol)->ginfo.value.bytes
    184 #define SYMBOL_VALUE_COMMON_BLOCK(symbol) (symbol)->ginfo.value.common_block
    185 #define SYMBOL_BLOCK_VALUE(symbol)	(symbol)->ginfo.value.block
    186 #define SYMBOL_VALUE_CHAIN(symbol)	(symbol)->ginfo.value.chain
    187 #define SYMBOL_LANGUAGE(symbol)		(symbol)->ginfo.language
    188 #define SYMBOL_SECTION(symbol)		(symbol)->ginfo.section
    189 #define SYMBOL_OBJ_SECTION(objfile, symbol)			\
    190   (((symbol)->ginfo.section >= 0)				\
    191    ? (&(((objfile)->sections)[(symbol)->ginfo.section]))	\
    192    : NULL)
    193 
    194 /* Initializes the language dependent portion of a symbol
    195    depending upon the language for the symbol.  */
    196 #define SYMBOL_SET_LANGUAGE(symbol,language,obstack)	\
    197   (symbol_set_language (&(symbol)->ginfo, (language), (obstack)))
    198 extern void symbol_set_language (struct general_symbol_info *symbol,
    199                                  enum language language,
    200 				 struct obstack *obstack);
    201 
    202 /* Set just the linkage name of a symbol; do not try to demangle
    203    it.  Used for constructs which do not have a mangled name,
    204    e.g. struct tags.  Unlike SYMBOL_SET_NAMES, linkage_name must
    205    be terminated and either already on the objfile's obstack or
    206    permanently allocated.  */
    207 #define SYMBOL_SET_LINKAGE_NAME(symbol,linkage_name) \
    208   (symbol)->ginfo.name = (linkage_name)
    209 
    210 /* Set the linkage and natural names of a symbol, by demangling
    211    the linkage name.  */
    212 #define SYMBOL_SET_NAMES(symbol,linkage_name,len,copy_name,objfile)	\
    213   symbol_set_names (&(symbol)->ginfo, linkage_name, len, copy_name, objfile)
    214 extern void symbol_set_names (struct general_symbol_info *symbol,
    215 			      const char *linkage_name, int len, int copy_name,
    216 			      struct objfile *objfile);
    217 
    218 /* Now come lots of name accessor macros.  Short version as to when to
    219    use which: Use SYMBOL_NATURAL_NAME to refer to the name of the
    220    symbol in the original source code.  Use SYMBOL_LINKAGE_NAME if you
    221    want to know what the linker thinks the symbol's name is.  Use
    222    SYMBOL_PRINT_NAME for output.  Use SYMBOL_DEMANGLED_NAME if you
    223    specifically need to know whether SYMBOL_NATURAL_NAME and
    224    SYMBOL_LINKAGE_NAME are different.  */
    225 
    226 /* Return SYMBOL's "natural" name, i.e. the name that it was called in
    227    the original source code.  In languages like C++ where symbols may
    228    be mangled for ease of manipulation by the linker, this is the
    229    demangled name.  */
    230 
    231 #define SYMBOL_NATURAL_NAME(symbol) \
    232   (symbol_natural_name (&(symbol)->ginfo))
    233 extern const char *symbol_natural_name
    234   (const struct general_symbol_info *symbol);
    235 
    236 /* Return SYMBOL's name from the point of view of the linker.  In
    237    languages like C++ where symbols may be mangled for ease of
    238    manipulation by the linker, this is the mangled name; otherwise,
    239    it's the same as SYMBOL_NATURAL_NAME.  */
    240 
    241 #define SYMBOL_LINKAGE_NAME(symbol)	(symbol)->ginfo.name
    242 
    243 /* Return the demangled name for a symbol based on the language for
    244    that symbol.  If no demangled name exists, return NULL.  */
    245 #define SYMBOL_DEMANGLED_NAME(symbol) \
    246   (symbol_demangled_name (&(symbol)->ginfo))
    247 extern const char *symbol_demangled_name
    248   (const struct general_symbol_info *symbol);
    249 
    250 /* Macro that returns a version of the name of a symbol that is
    251    suitable for output.  In C++ this is the "demangled" form of the
    252    name if demangle is on and the "mangled" form of the name if
    253    demangle is off.  In other languages this is just the symbol name.
    254    The result should never be NULL.  Don't use this for internal
    255    purposes (e.g. storing in a hashtable): it's only suitable for output.
    256 
    257    N.B. symbol may be anything with a ginfo member,
    258    e.g., struct symbol or struct minimal_symbol.  */
    259 
    260 #define SYMBOL_PRINT_NAME(symbol)					\
    261   (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol))
    262 extern int demangle;
    263 
    264 /* Macro that returns the name to be used when sorting and searching symbols.
    265    In C++, we search for the demangled form of a name,
    266    and so sort symbols accordingly.  In Ada, however, we search by mangled
    267    name.  If there is no distinct demangled name, then SYMBOL_SEARCH_NAME
    268    returns the same value (same pointer) as SYMBOL_LINKAGE_NAME.  */
    269 #define SYMBOL_SEARCH_NAME(symbol)					 \
    270    (symbol_search_name (&(symbol)->ginfo))
    271 extern const char *symbol_search_name (const struct general_symbol_info *);
    272 
    273 /* Return non-zero if NAME matches the "search" name of SYMBOL.
    274    Whitespace and trailing parentheses are ignored.
    275    See strcmp_iw for details about its behavior.  */
    276 #define SYMBOL_MATCHES_SEARCH_NAME(symbol, name)			\
    277   (strcmp_iw (SYMBOL_SEARCH_NAME (symbol), (name)) == 0)
    278 
    279 /* Classification types for a minimal symbol.  These should be taken as
    280    "advisory only", since if gdb can't easily figure out a
    281    classification it simply selects mst_unknown.  It may also have to
    282    guess when it can't figure out which is a better match between two
    283    types (mst_data versus mst_bss) for example.  Since the minimal
    284    symbol info is sometimes derived from the BFD library's view of a
    285    file, we need to live with what information bfd supplies.  */
    286 
    287 enum minimal_symbol_type
    288 {
    289   mst_unknown = 0,		/* Unknown type, the default */
    290   mst_text,			/* Generally executable instructions */
    291   mst_text_gnu_ifunc,		/* Executable code returning address
    292 				   of executable code */
    293   mst_slot_got_plt,		/* GOT entries for .plt sections */
    294   mst_data,			/* Generally initialized data */
    295   mst_bss,			/* Generally uninitialized data */
    296   mst_abs,			/* Generally absolute (nonrelocatable) */
    297   /* GDB uses mst_solib_trampoline for the start address of a shared
    298      library trampoline entry.  Breakpoints for shared library functions
    299      are put there if the shared library is not yet loaded.
    300      After the shared library is loaded, lookup_minimal_symbol will
    301      prefer the minimal symbol from the shared library (usually
    302      a mst_text symbol) over the mst_solib_trampoline symbol, and the
    303      breakpoints will be moved to their true address in the shared
    304      library via breakpoint_re_set.  */
    305   mst_solib_trampoline,		/* Shared library trampoline code */
    306   /* For the mst_file* types, the names are only guaranteed to be unique
    307      within a given .o file.  */
    308   mst_file_text,		/* Static version of mst_text */
    309   mst_file_data,		/* Static version of mst_data */
    310   mst_file_bss,			/* Static version of mst_bss */
    311   nr_minsym_types
    312 };
    313 
    314 /* The number of enum minimal_symbol_type values, with some padding for
    315    reasonable growth.  */
    316 #define MINSYM_TYPE_BITS 4
    317 gdb_static_assert (nr_minsym_types <= (1 << MINSYM_TYPE_BITS));
    318 
    319 /* Define a simple structure used to hold some very basic information about
    320    all defined global symbols (text, data, bss, abs, etc).  The only required
    321    information is the general_symbol_info.
    322 
    323    In many cases, even if a file was compiled with no special options for
    324    debugging at all, as long as was not stripped it will contain sufficient
    325    information to build a useful minimal symbol table using this structure.
    326    Even when a file contains enough debugging information to build a full
    327    symbol table, these minimal symbols are still useful for quickly mapping
    328    between names and addresses, and vice versa.  They are also sometimes
    329    used to figure out what full symbol table entries need to be read in.  */
    330 
    331 struct minimal_symbol
    332 {
    333 
    334   /* The general symbol info required for all types of symbols.
    335 
    336      The SYMBOL_VALUE_ADDRESS contains the address that this symbol
    337      corresponds to.  */
    338 
    339   struct general_symbol_info mginfo;
    340 
    341   /* Size of this symbol.  dbx_end_psymtab in dbxread.c uses this
    342      information to calculate the end of the partial symtab based on the
    343      address of the last symbol plus the size of the last symbol.  */
    344 
    345   unsigned long size;
    346 
    347   /* Which source file is this symbol in?  Only relevant for mst_file_*.  */
    348   const char *filename;
    349 
    350   /* Classification type for this minimal symbol.  */
    351 
    352   ENUM_BITFIELD(minimal_symbol_type) type : MINSYM_TYPE_BITS;
    353 
    354   /* Non-zero if this symbol was created by gdb.
    355      Such symbols do not appear in the output of "info var|fun".  */
    356   unsigned int created_by_gdb : 1;
    357 
    358   /* Two flag bits provided for the use of the target.  */
    359   unsigned int target_flag_1 : 1;
    360   unsigned int target_flag_2 : 1;
    361 
    362   /* Nonzero iff the size of the minimal symbol has been set.
    363      Symbol size information can sometimes not be determined, because
    364      the object file format may not carry that piece of information.  */
    365   unsigned int has_size : 1;
    366 
    367   /* Minimal symbols with the same hash key are kept on a linked
    368      list.  This is the link.  */
    369 
    370   struct minimal_symbol *hash_next;
    371 
    372   /* Minimal symbols are stored in two different hash tables.  This is
    373      the `next' pointer for the demangled hash table.  */
    374 
    375   struct minimal_symbol *demangled_hash_next;
    376 };
    377 
    378 #define MSYMBOL_TARGET_FLAG_1(msymbol)  (msymbol)->target_flag_1
    379 #define MSYMBOL_TARGET_FLAG_2(msymbol)  (msymbol)->target_flag_2
    380 #define MSYMBOL_SIZE(msymbol)		((msymbol)->size + 0)
    381 #define SET_MSYMBOL_SIZE(msymbol, sz)		\
    382   do						\
    383     {						\
    384       (msymbol)->size = sz;			\
    385       (msymbol)->has_size = 1;			\
    386     } while (0)
    387 #define MSYMBOL_HAS_SIZE(msymbol)	((msymbol)->has_size + 0)
    388 #define MSYMBOL_TYPE(msymbol)		(msymbol)->type
    389 
    390 #define MSYMBOL_VALUE(symbol)		(symbol)->mginfo.value.ivalue
    391 /* The unrelocated address of the minimal symbol.  */
    392 #define MSYMBOL_VALUE_RAW_ADDRESS(symbol) ((symbol)->mginfo.value.address + 0)
    393 /* The relocated address of the minimal symbol, using the section
    394    offsets from OBJFILE.  */
    395 #define MSYMBOL_VALUE_ADDRESS(objfile, symbol)				\
    396   ((symbol)->mginfo.value.address					\
    397    + ANOFFSET ((objfile)->section_offsets, ((symbol)->mginfo.section)))
    398 /* For a bound minsym, we can easily compute the address directly.  */
    399 #define BMSYMBOL_VALUE_ADDRESS(symbol) \
    400   MSYMBOL_VALUE_ADDRESS ((symbol).objfile, (symbol).minsym)
    401 #define SET_MSYMBOL_VALUE_ADDRESS(symbol, new_value)	\
    402   ((symbol)->mginfo.value.address = (new_value))
    403 #define MSYMBOL_VALUE_BYTES(symbol)	(symbol)->mginfo.value.bytes
    404 #define MSYMBOL_BLOCK_VALUE(symbol)	(symbol)->mginfo.value.block
    405 #define MSYMBOL_VALUE_CHAIN(symbol)	(symbol)->mginfo.value.chain
    406 #define MSYMBOL_LANGUAGE(symbol)	(symbol)->mginfo.language
    407 #define MSYMBOL_SECTION(symbol)		(symbol)->mginfo.section
    408 #define MSYMBOL_OBJ_SECTION(objfile, symbol)			\
    409   (((symbol)->mginfo.section >= 0)				\
    410    ? (&(((objfile)->sections)[(symbol)->mginfo.section]))	\
    411    : NULL)
    412 
    413 #define MSYMBOL_NATURAL_NAME(symbol) \
    414   (symbol_natural_name (&(symbol)->mginfo))
    415 #define MSYMBOL_LINKAGE_NAME(symbol)	(symbol)->mginfo.name
    416 #define MSYMBOL_PRINT_NAME(symbol)					\
    417   (demangle ? MSYMBOL_NATURAL_NAME (symbol) : MSYMBOL_LINKAGE_NAME (symbol))
    418 #define MSYMBOL_DEMANGLED_NAME(symbol) \
    419   (symbol_demangled_name (&(symbol)->mginfo))
    420 #define MSYMBOL_SET_LANGUAGE(symbol,language,obstack)	\
    421   (symbol_set_language (&(symbol)->mginfo, (language), (obstack)))
    422 #define MSYMBOL_SEARCH_NAME(symbol)					 \
    423    (symbol_search_name (&(symbol)->mginfo))
    424 #define MSYMBOL_MATCHES_SEARCH_NAME(symbol, name)			\
    425   (strcmp_iw (MSYMBOL_SEARCH_NAME (symbol), (name)) == 0)
    426 #define MSYMBOL_SET_NAMES(symbol,linkage_name,len,copy_name,objfile)	\
    427   symbol_set_names (&(symbol)->mginfo, linkage_name, len, copy_name, objfile)
    428 
    429 #include "minsyms.h"
    430 
    431 
    432 
    434 /* Represent one symbol name; a variable, constant, function or typedef.  */
    435 
    436 /* Different name domains for symbols.  Looking up a symbol specifies a
    437    domain and ignores symbol definitions in other name domains.  */
    438 
    439 typedef enum domain_enum_tag
    440 {
    441   /* UNDEF_DOMAIN is used when a domain has not been discovered or
    442      none of the following apply.  This usually indicates an error either
    443      in the symbol information or in gdb's handling of symbols.  */
    444 
    445   UNDEF_DOMAIN,
    446 
    447   /* VAR_DOMAIN is the usual domain.  In C, this contains variables,
    448      function names, typedef names and enum type values.  */
    449 
    450   VAR_DOMAIN,
    451 
    452   /* STRUCT_DOMAIN is used in C to hold struct, union and enum type names.
    453      Thus, if `struct foo' is used in a C program, it produces a symbol named
    454      `foo' in the STRUCT_DOMAIN.  */
    455 
    456   STRUCT_DOMAIN,
    457 
    458   /* MODULE_DOMAIN is used in Fortran to hold module type names.  */
    459 
    460   MODULE_DOMAIN,
    461 
    462   /* LABEL_DOMAIN may be used for names of labels (for gotos).  */
    463 
    464   LABEL_DOMAIN,
    465 
    466   /* Fortran common blocks.  Their naming must be separate from VAR_DOMAIN.
    467      They also always use LOC_COMMON_BLOCK.  */
    468   COMMON_BLOCK_DOMAIN,
    469 
    470   /* This must remain last.  */
    471   NR_DOMAINS
    472 } domain_enum;
    473 
    474 /* The number of bits in a symbol used to represent the domain.  */
    475 
    476 #define SYMBOL_DOMAIN_BITS 3
    477 gdb_static_assert (NR_DOMAINS <= (1 << SYMBOL_DOMAIN_BITS));
    478 
    479 extern const char *domain_name (domain_enum);
    480 
    481 /* Searching domains, used for `search_symbols'.  Element numbers are
    482    hardcoded in GDB, check all enum uses before changing it.  */
    483 
    484 enum search_domain
    485 {
    486   /* Everything in VAR_DOMAIN minus FUNCTIONS_DOMAIN and
    487      TYPES_DOMAIN.  */
    488   VARIABLES_DOMAIN = 0,
    489 
    490   /* All functions -- for some reason not methods, though.  */
    491   FUNCTIONS_DOMAIN = 1,
    492 
    493   /* All defined types */
    494   TYPES_DOMAIN = 2,
    495 
    496   /* Any type.  */
    497   ALL_DOMAIN = 3
    498 };
    499 
    500 extern const char *search_domain_name (enum search_domain);
    501 
    502 /* An address-class says where to find the value of a symbol.  */
    503 
    504 enum address_class
    505 {
    506   /* Not used; catches errors.  */
    507 
    508   LOC_UNDEF,
    509 
    510   /* Value is constant int SYMBOL_VALUE, host byteorder.  */
    511 
    512   LOC_CONST,
    513 
    514   /* Value is at fixed address SYMBOL_VALUE_ADDRESS.  */
    515 
    516   LOC_STATIC,
    517 
    518   /* Value is in register.  SYMBOL_VALUE is the register number
    519      in the original debug format.  SYMBOL_REGISTER_OPS holds a
    520      function that can be called to transform this into the
    521      actual register number this represents in a specific target
    522      architecture (gdbarch).
    523 
    524      For some symbol formats (stabs, for some compilers at least),
    525      the compiler generates two symbols, an argument and a register.
    526      In some cases we combine them to a single LOC_REGISTER in symbol
    527      reading, but currently not for all cases (e.g. it's passed on the
    528      stack and then loaded into a register).  */
    529 
    530   LOC_REGISTER,
    531 
    532   /* It's an argument; the value is at SYMBOL_VALUE offset in arglist.  */
    533 
    534   LOC_ARG,
    535 
    536   /* Value address is at SYMBOL_VALUE offset in arglist.  */
    537 
    538   LOC_REF_ARG,
    539 
    540   /* Value is in specified register.  Just like LOC_REGISTER except the
    541      register holds the address of the argument instead of the argument
    542      itself.  This is currently used for the passing of structs and unions
    543      on sparc and hppa.  It is also used for call by reference where the
    544      address is in a register, at least by mipsread.c.  */
    545 
    546   LOC_REGPARM_ADDR,
    547 
    548   /* Value is a local variable at SYMBOL_VALUE offset in stack frame.  */
    549 
    550   LOC_LOCAL,
    551 
    552   /* Value not used; definition in SYMBOL_TYPE.  Symbols in the domain
    553      STRUCT_DOMAIN all have this class.  */
    554 
    555   LOC_TYPEDEF,
    556 
    557   /* Value is address SYMBOL_VALUE_ADDRESS in the code.  */
    558 
    559   LOC_LABEL,
    560 
    561   /* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
    562      In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
    563      of the block.  Function names have this class.  */
    564 
    565   LOC_BLOCK,
    566 
    567   /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_BYTES, in
    568      target byte order.  */
    569 
    570   LOC_CONST_BYTES,
    571 
    572   /* Value is at fixed address, but the address of the variable has
    573      to be determined from the minimal symbol table whenever the
    574      variable is referenced.
    575      This happens if debugging information for a global symbol is
    576      emitted and the corresponding minimal symbol is defined
    577      in another object file or runtime common storage.
    578      The linker might even remove the minimal symbol if the global
    579      symbol is never referenced, in which case the symbol remains
    580      unresolved.
    581 
    582      GDB would normally find the symbol in the minimal symbol table if it will
    583      not find it in the full symbol table.  But a reference to an external
    584      symbol in a local block shadowing other definition requires full symbol
    585      without possibly having its address available for LOC_STATIC.  Testcase
    586      is provided as `gdb.dwarf2/dw2-unresolved.exp'.
    587 
    588      This is also used for thread local storage (TLS) variables.  In this case,
    589      the address of the TLS variable must be determined when the variable is
    590      referenced, from the MSYMBOL_VALUE_RAW_ADDRESS, which is the offset
    591      of the TLS variable in the thread local storage of the shared
    592      library/object.  */
    593 
    594   LOC_UNRESOLVED,
    595 
    596   /* The variable does not actually exist in the program.
    597      The value is ignored.  */
    598 
    599   LOC_OPTIMIZED_OUT,
    600 
    601   /* The variable's address is computed by a set of location
    602      functions (see "struct symbol_computed_ops" below).  */
    603   LOC_COMPUTED,
    604 
    605   /* The variable uses general_symbol_info->value->common_block field.
    606      It also always uses COMMON_BLOCK_DOMAIN.  */
    607   LOC_COMMON_BLOCK,
    608 
    609   /* Not used, just notes the boundary of the enum.  */
    610   LOC_FINAL_VALUE
    611 };
    612 
    613 /* The number of bits needed for values in enum address_class, with some
    614    padding for reasonable growth, and room for run-time registered address
    615    classes. See symtab.c:MAX_SYMBOL_IMPLS.
    616    This is a #define so that we can have a assertion elsewhere to
    617    verify that we have reserved enough space for synthetic address
    618    classes.  */
    619 #define SYMBOL_ACLASS_BITS 5
    620 gdb_static_assert (LOC_FINAL_VALUE <= (1 << SYMBOL_ACLASS_BITS));
    621 
    622 /* The methods needed to implement LOC_COMPUTED.  These methods can
    623    use the symbol's .aux_value for additional per-symbol information.
    624 
    625    At present this is only used to implement location expressions.  */
    626 
    627 struct symbol_computed_ops
    628 {
    629 
    630   /* Return the value of the variable SYMBOL, relative to the stack
    631      frame FRAME.  If the variable has been optimized out, return
    632      zero.
    633 
    634      Iff `read_needs_frame (SYMBOL)' is not SYMBOL_NEEDS_FRAME, then
    635      FRAME may be zero.  */
    636 
    637   struct value *(*read_variable) (struct symbol * symbol,
    638 				  struct frame_info * frame);
    639 
    640   /* Read variable SYMBOL like read_variable at (callee) FRAME's function
    641      entry.  SYMBOL should be a function parameter, otherwise
    642      NO_ENTRY_VALUE_ERROR will be thrown.  */
    643   struct value *(*read_variable_at_entry) (struct symbol *symbol,
    644 					   struct frame_info *frame);
    645 
    646   /* Find the "symbol_needs_kind" value for the given symbol.  This
    647      value determines whether reading the symbol needs memory (e.g., a
    648      global variable), just registers (a thread-local), or a frame (a
    649      local variable).  */
    650   enum symbol_needs_kind (*get_symbol_read_needs) (struct symbol * symbol);
    651 
    652   /* Write to STREAM a natural-language description of the location of
    653      SYMBOL, in the context of ADDR.  */
    654   void (*describe_location) (struct symbol * symbol, CORE_ADDR addr,
    655 			     struct ui_file * stream);
    656 
    657   /* Non-zero if this symbol's address computation is dependent on PC.  */
    658   unsigned char location_has_loclist;
    659 
    660   /* Tracepoint support.  Append bytecodes to the tracepoint agent
    661      expression AX that push the address of the object SYMBOL.  Set
    662      VALUE appropriately.  Note --- for objects in registers, this
    663      needn't emit any code; as long as it sets VALUE properly, then
    664      the caller will generate the right code in the process of
    665      treating this as an lvalue or rvalue.  */
    666 
    667   void (*tracepoint_var_ref) (struct symbol *symbol, struct gdbarch *gdbarch,
    668 			      struct agent_expr *ax, struct axs_value *value);
    669 
    670   /* Generate C code to compute the location of SYMBOL.  The C code is
    671      emitted to STREAM.  GDBARCH is the current architecture and PC is
    672      the PC at which SYMBOL's location should be evaluated.
    673      REGISTERS_USED is a vector indexed by register number; the
    674      generator function should set an element in this vector if the
    675      corresponding register is needed by the location computation.
    676      The generated C code must assign the location to a local
    677      variable; this variable's name is RESULT_NAME.  */
    678 
    679   void (*generate_c_location) (struct symbol *symbol, string_file &stream,
    680 			       struct gdbarch *gdbarch,
    681 			       unsigned char *registers_used,
    682 			       CORE_ADDR pc, const char *result_name);
    683 
    684 };
    685 
    686 /* The methods needed to implement LOC_BLOCK for inferior functions.
    687    These methods can use the symbol's .aux_value for additional
    688    per-symbol information.  */
    689 
    690 struct symbol_block_ops
    691 {
    692   /* Fill in *START and *LENGTH with DWARF block data of function
    693      FRAMEFUNC valid for inferior context address PC.  Set *LENGTH to
    694      zero if such location is not valid for PC; *START is left
    695      uninitialized in such case.  */
    696   void (*find_frame_base_location) (struct symbol *framefunc, CORE_ADDR pc,
    697 				    const gdb_byte **start, size_t *length);
    698 
    699   /* Return the frame base address.  FRAME is the frame for which we want to
    700      compute the base address while FRAMEFUNC is the symbol for the
    701      corresponding function.  Return 0 on failure (FRAMEFUNC may not hold the
    702      information we need).
    703 
    704      This method is designed to work with static links (nested functions
    705      handling).  Static links are function properties whose evaluation returns
    706      the frame base address for the enclosing frame.  However, there are
    707      multiple definitions for "frame base": the content of the frame base
    708      register, the CFA as defined by DWARF unwinding information, ...
    709 
    710      So this specific method is supposed to compute the frame base address such
    711      as for nested fuctions, the static link computes the same address.  For
    712      instance, considering DWARF debugging information, the static link is
    713      computed with DW_AT_static_link and this method must be used to compute
    714      the corresponding DW_AT_frame_base attribute.  */
    715   CORE_ADDR (*get_frame_base) (struct symbol *framefunc,
    716 			       struct frame_info *frame);
    717 };
    718 
    719 /* Functions used with LOC_REGISTER and LOC_REGPARM_ADDR.  */
    720 
    721 struct symbol_register_ops
    722 {
    723   int (*register_number) (struct symbol *symbol, struct gdbarch *gdbarch);
    724 };
    725 
    726 /* Objects of this type are used to find the address class and the
    727    various computed ops vectors of a symbol.  */
    728 
    729 struct symbol_impl
    730 {
    731   enum address_class aclass;
    732 
    733   /* Used with LOC_COMPUTED.  */
    734   const struct symbol_computed_ops *ops_computed;
    735 
    736   /* Used with LOC_BLOCK.  */
    737   const struct symbol_block_ops *ops_block;
    738 
    739   /* Used with LOC_REGISTER and LOC_REGPARM_ADDR.  */
    740   const struct symbol_register_ops *ops_register;
    741 };
    742 
    743 /* This structure is space critical.  See space comments at the top.  */
    744 
    745 struct symbol
    746 {
    747 
    748   /* The general symbol info required for all types of symbols.  */
    749 
    750   struct general_symbol_info ginfo;
    751 
    752   /* Data type of value */
    753 
    754   struct type *type;
    755 
    756   /* The owner of this symbol.
    757      Which one to use is defined by symbol.is_objfile_owned.  */
    758 
    759   union
    760   {
    761     /* The symbol table containing this symbol.  This is the file associated
    762        with LINE.  It can be NULL during symbols read-in but it is never NULL
    763        during normal operation.  */
    764     struct symtab *symtab;
    765 
    766     /* For types defined by the architecture.  */
    767     struct gdbarch *arch;
    768   } owner;
    769 
    770   /* Domain code.  */
    771 
    772   ENUM_BITFIELD(domain_enum_tag) domain : SYMBOL_DOMAIN_BITS;
    773 
    774   /* Address class.  This holds an index into the 'symbol_impls'
    775      table.  The actual enum address_class value is stored there,
    776      alongside any per-class ops vectors.  */
    777 
    778   unsigned int aclass_index : SYMBOL_ACLASS_BITS;
    779 
    780   /* If non-zero then symbol is objfile-owned, use owner.symtab.
    781      Otherwise symbol is arch-owned, use owner.arch.  */
    782 
    783   unsigned int is_objfile_owned : 1;
    784 
    785   /* Whether this is an argument.  */
    786 
    787   unsigned is_argument : 1;
    788 
    789   /* Whether this is an inlined function (class LOC_BLOCK only).  */
    790   unsigned is_inlined : 1;
    791 
    792   /* True if this is a C++ function symbol with template arguments.
    793      In this case the symbol is really a "struct template_symbol".  */
    794   unsigned is_cplus_template_function : 1;
    795 
    796   /* Line number of this symbol's definition, except for inlined
    797      functions.  For an inlined function (class LOC_BLOCK and
    798      SYMBOL_INLINED set) this is the line number of the function's call
    799      site.  Inlined function symbols are not definitions, and they are
    800      never found by symbol table lookup.
    801      If this symbol is arch-owned, LINE shall be zero.
    802 
    803      FIXME: Should we really make the assumption that nobody will try
    804      to debug files longer than 64K lines?  What about machine
    805      generated programs?  */
    806 
    807   unsigned short line;
    808 
    809   /* An arbitrary data pointer, allowing symbol readers to record
    810      additional information on a per-symbol basis.  Note that this data
    811      must be allocated using the same obstack as the symbol itself.  */
    812   /* So far it is only used by:
    813      LOC_COMPUTED: to find the location information
    814      LOC_BLOCK (DWARF2 function): information used internally by the
    815      DWARF 2 code --- specifically, the location expression for the frame
    816      base for this function.  */
    817   /* FIXME drow/2003-02-21: For the LOC_BLOCK case, it might be better
    818      to add a magic symbol to the block containing this information,
    819      or to have a generic debug info annotation slot for symbols.  */
    820 
    821   void *aux_value;
    822 
    823   struct symbol *hash_next;
    824 };
    825 
    826 /* Several lookup functions return both a symbol and the block in which the
    827    symbol is found.  This structure is used in these cases.  */
    828 
    829 struct block_symbol
    830 {
    831   /* The symbol that was found, or NULL if no symbol was found.  */
    832   struct symbol *symbol;
    833 
    834   /* If SYMBOL is not NULL, then this is the block in which the symbol is
    835      defined.  */
    836   const struct block *block;
    837 };
    838 
    839 extern const struct symbol_impl *symbol_impls;
    840 
    841 /* For convenience.  All fields are NULL.  This means "there is no
    842    symbol".  */
    843 extern const struct block_symbol null_block_symbol;
    844 
    845 /* Note: There is no accessor macro for symbol.owner because it is
    846    "private".  */
    847 
    848 #define SYMBOL_DOMAIN(symbol)	(symbol)->domain
    849 #define SYMBOL_IMPL(symbol)		(symbol_impls[(symbol)->aclass_index])
    850 #define SYMBOL_ACLASS_INDEX(symbol)	(symbol)->aclass_index
    851 #define SYMBOL_CLASS(symbol)		(SYMBOL_IMPL (symbol).aclass)
    852 #define SYMBOL_OBJFILE_OWNED(symbol)	((symbol)->is_objfile_owned)
    853 #define SYMBOL_IS_ARGUMENT(symbol)	(symbol)->is_argument
    854 #define SYMBOL_INLINED(symbol)		(symbol)->is_inlined
    855 #define SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION(symbol) \
    856   (symbol)->is_cplus_template_function
    857 #define SYMBOL_TYPE(symbol)		(symbol)->type
    858 #define SYMBOL_LINE(symbol)		(symbol)->line
    859 #define SYMBOL_COMPUTED_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_computed)
    860 #define SYMBOL_BLOCK_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_block)
    861 #define SYMBOL_REGISTER_OPS(symbol)	(SYMBOL_IMPL (symbol).ops_register)
    862 #define SYMBOL_LOCATION_BATON(symbol)   (symbol)->aux_value
    863 
    864 extern int register_symbol_computed_impl (enum address_class,
    865 					  const struct symbol_computed_ops *);
    866 
    867 extern int register_symbol_block_impl (enum address_class aclass,
    868 				       const struct symbol_block_ops *ops);
    869 
    870 extern int register_symbol_register_impl (enum address_class,
    871 					  const struct symbol_register_ops *);
    872 
    873 /* Return the OBJFILE of SYMBOL.
    874    It is an error to call this if symbol.is_objfile_owned is false, which
    875    only happens for architecture-provided types.  */
    876 
    877 extern struct objfile *symbol_objfile (const struct symbol *symbol);
    878 
    879 /* Return the ARCH of SYMBOL.  */
    880 
    881 extern struct gdbarch *symbol_arch (const struct symbol *symbol);
    882 
    883 /* Return the SYMTAB of SYMBOL.
    884    It is an error to call this if symbol.is_objfile_owned is false, which
    885    only happens for architecture-provided types.  */
    886 
    887 extern struct symtab *symbol_symtab (const struct symbol *symbol);
    888 
    889 /* Set the symtab of SYMBOL to SYMTAB.
    890    It is an error to call this if symbol.is_objfile_owned is false, which
    891    only happens for architecture-provided types.  */
    892 
    893 extern void symbol_set_symtab (struct symbol *symbol, struct symtab *symtab);
    894 
    895 /* An instance of this type is used to represent a C++ template
    896    function.  It includes a "struct symbol" as a kind of base class;
    897    users downcast to "struct template_symbol *" when needed.  A symbol
    898    is really of this type iff SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION is
    899    true.  */
    900 
    901 struct template_symbol
    902 {
    903   /* The base class.  */
    904   struct symbol base;
    905 
    906   /* The number of template arguments.  */
    907   int n_template_arguments;
    908 
    909   /* The template arguments.  This is an array with
    910      N_TEMPLATE_ARGUMENTS elements.  */
    911   struct symbol **template_arguments;
    912 };
    913 
    914 
    915 /* Each item represents a line-->pc (or the reverse) mapping.  This is
    917    somewhat more wasteful of space than one might wish, but since only
    918    the files which are actually debugged are read in to core, we don't
    919    waste much space.  */
    920 
    921 struct linetable_entry
    922 {
    923   int line;
    924   CORE_ADDR pc;
    925 };
    926 
    927 /* The order of entries in the linetable is significant.  They should
    928    be sorted by increasing values of the pc field.  If there is more than
    929    one entry for a given pc, then I'm not sure what should happen (and
    930    I not sure whether we currently handle it the best way).
    931 
    932    Example: a C for statement generally looks like this
    933 
    934    10   0x100   - for the init/test part of a for stmt.
    935    20   0x200
    936    30   0x300
    937    10   0x400   - for the increment part of a for stmt.
    938 
    939    If an entry has a line number of zero, it marks the start of a PC
    940    range for which no line number information is available.  It is
    941    acceptable, though wasteful of table space, for such a range to be
    942    zero length.  */
    943 
    944 struct linetable
    945 {
    946   int nitems;
    947 
    948   /* Actually NITEMS elements.  If you don't like this use of the
    949      `struct hack', you can shove it up your ANSI (seriously, if the
    950      committee tells us how to do it, we can probably go along).  */
    951   struct linetable_entry item[1];
    952 };
    953 
    954 /* How to relocate the symbols from each section in a symbol file.
    955    Each struct contains an array of offsets.
    956    The ordering and meaning of the offsets is file-type-dependent;
    957    typically it is indexed by section numbers or symbol types or
    958    something like that.
    959 
    960    To give us flexibility in changing the internal representation
    961    of these offsets, the ANOFFSET macro must be used to insert and
    962    extract offset values in the struct.  */
    963 
    964 struct section_offsets
    965 {
    966   CORE_ADDR offsets[1];		/* As many as needed.  */
    967 };
    968 
    969 #define	ANOFFSET(secoff, whichone) \
    970   ((whichone == -1)			  \
    971    ? (internal_error (__FILE__, __LINE__, \
    972 		      _("Section index is uninitialized")), -1) \
    973    : secoff->offsets[whichone])
    974 
    975 /* The size of a section_offsets table for N sections.  */
    976 #define SIZEOF_N_SECTION_OFFSETS(n) \
    977   (sizeof (struct section_offsets) \
    978    + sizeof (((struct section_offsets *) 0)->offsets) * ((n)-1))
    979 
    980 /* Each source file or header is represented by a struct symtab.
    981    The name "symtab" is historical, another name for it is "filetab".
    982    These objects are chained through the `next' field.  */
    983 
    984 struct symtab
    985 {
    986   /* Unordered chain of all filetabs in the compunit,  with the exception
    987      that the "main" source file is the first entry in the list.  */
    988 
    989   struct symtab *next;
    990 
    991   /* Backlink to containing compunit symtab.  */
    992 
    993   struct compunit_symtab *compunit_symtab;
    994 
    995   /* Table mapping core addresses to line numbers for this file.
    996      Can be NULL if none.  Never shared between different symtabs.  */
    997 
    998   struct linetable *linetable;
    999 
   1000   /* Name of this source file.  This pointer is never NULL.  */
   1001 
   1002   const char *filename;
   1003 
   1004   /* Total number of lines found in source file.  */
   1005 
   1006   int nlines;
   1007 
   1008   /* line_charpos[N] is the position of the (N-1)th line of the
   1009      source file.  "position" means something we can lseek() to; it
   1010      is not guaranteed to be useful any other way.  */
   1011 
   1012   int *line_charpos;
   1013 
   1014   /* Language of this source file.  */
   1015 
   1016   enum language language;
   1017 
   1018   /* Full name of file as found by searching the source path.
   1019      NULL if not yet known.  */
   1020 
   1021   char *fullname;
   1022 };
   1023 
   1024 #define SYMTAB_COMPUNIT(symtab) ((symtab)->compunit_symtab)
   1025 #define SYMTAB_LINETABLE(symtab) ((symtab)->linetable)
   1026 #define SYMTAB_LANGUAGE(symtab) ((symtab)->language)
   1027 #define SYMTAB_BLOCKVECTOR(symtab) \
   1028   COMPUNIT_BLOCKVECTOR (SYMTAB_COMPUNIT (symtab))
   1029 #define SYMTAB_OBJFILE(symtab) \
   1030   COMPUNIT_OBJFILE (SYMTAB_COMPUNIT (symtab))
   1031 #define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace)
   1032 #define SYMTAB_DIRNAME(symtab) \
   1033   COMPUNIT_DIRNAME (SYMTAB_COMPUNIT (symtab))
   1034 
   1035 typedef struct symtab *symtab_ptr;
   1036 DEF_VEC_P (symtab_ptr);
   1037 
   1038 /* Compunit symtabs contain the actual "symbol table", aka blockvector, as well
   1039    as the list of all source files (what gdb has historically associated with
   1040    the term "symtab").
   1041    Additional information is recorded here that is common to all symtabs in a
   1042    compilation unit (DWARF or otherwise).
   1043 
   1044    Example:
   1045    For the case of a program built out of these files:
   1046 
   1047    foo.c
   1048      foo1.h
   1049      foo2.h
   1050    bar.c
   1051      foo1.h
   1052      bar.h
   1053 
   1054    This is recorded as:
   1055 
   1056    objfile -> foo.c(cu) -> bar.c(cu) -> NULL
   1057                 |            |
   1058                 v            v
   1059               foo.c        bar.c
   1060                 |            |
   1061                 v            v
   1062               foo1.h       foo1.h
   1063                 |            |
   1064                 v            v
   1065               foo2.h       bar.h
   1066                 |            |
   1067                 v            v
   1068                NULL         NULL
   1069 
   1070    where "foo.c(cu)" and "bar.c(cu)" are struct compunit_symtab objects,
   1071    and the files foo.c, etc. are struct symtab objects.  */
   1072 
   1073 struct compunit_symtab
   1074 {
   1075   /* Unordered chain of all compunit symtabs of this objfile.  */
   1076   struct compunit_symtab *next;
   1077 
   1078   /* Object file from which this symtab information was read.  */
   1079   struct objfile *objfile;
   1080 
   1081   /* Name of the symtab.
   1082      This is *not* intended to be a usable filename, and is
   1083      for debugging purposes only.  */
   1084   const char *name;
   1085 
   1086   /* Unordered list of file symtabs, except that by convention the "main"
   1087      source file (e.g., .c, .cc) is guaranteed to be first.
   1088      Each symtab is a file, either the "main" source file (e.g., .c, .cc)
   1089      or header (e.g., .h).  */
   1090   struct symtab *filetabs;
   1091 
   1092   /* Last entry in FILETABS list.
   1093      Subfiles are added to the end of the list so they accumulate in order,
   1094      with the main source subfile living at the front.
   1095      The main reason is so that the main source file symtab is at the head
   1096      of the list, and the rest appear in order for debugging convenience.  */
   1097   struct symtab *last_filetab;
   1098 
   1099   /* Non-NULL string that identifies the format of the debugging information,
   1100      such as "stabs", "dwarf 1", "dwarf 2", "coff", etc.  This is mostly useful
   1101      for automated testing of gdb but may also be information that is
   1102      useful to the user.  */
   1103   const char *debugformat;
   1104 
   1105   /* String of producer version information, or NULL if we don't know.  */
   1106   const char *producer;
   1107 
   1108   /* Directory in which it was compiled, or NULL if we don't know.  */
   1109   const char *dirname;
   1110 
   1111   /* List of all symbol scope blocks for this symtab.  It is shared among
   1112      all symtabs in a given compilation unit.  */
   1113   const struct blockvector *blockvector;
   1114 
   1115   /* Section in objfile->section_offsets for the blockvector and
   1116      the linetable.  Probably always SECT_OFF_TEXT.  */
   1117   int block_line_section;
   1118 
   1119   /* Symtab has been compiled with both optimizations and debug info so that
   1120      GDB may stop skipping prologues as variables locations are valid already
   1121      at function entry points.  */
   1122   unsigned int locations_valid : 1;
   1123 
   1124   /* DWARF unwinder for this CU is valid even for epilogues (PC at the return
   1125      instruction).  This is supported by GCC since 4.5.0.  */
   1126   unsigned int epilogue_unwind_valid : 1;
   1127 
   1128   /* struct call_site entries for this compilation unit or NULL.  */
   1129   htab_t call_site_htab;
   1130 
   1131   /* The macro table for this symtab.  Like the blockvector, this
   1132      is shared between different symtabs in a given compilation unit.
   1133      It's debatable whether it *should* be shared among all the symtabs in
   1134      the given compilation unit, but it currently is.  */
   1135   struct macro_table *macro_table;
   1136 
   1137   /* If non-NULL, then this points to a NULL-terminated vector of
   1138      included compunits.  When searching the static or global
   1139      block of this compunit, the corresponding block of all
   1140      included compunits will also be searched.  Note that this
   1141      list must be flattened -- the symbol reader is responsible for
   1142      ensuring that this vector contains the transitive closure of all
   1143      included compunits.  */
   1144   struct compunit_symtab **includes;
   1145 
   1146   /* If this is an included compunit, this points to one includer
   1147      of the table.  This user is considered the canonical compunit
   1148      containing this one.  An included compunit may itself be
   1149      included by another.  */
   1150   struct compunit_symtab *user;
   1151 };
   1152 
   1153 #define COMPUNIT_OBJFILE(cust) ((cust)->objfile)
   1154 #define COMPUNIT_FILETABS(cust) ((cust)->filetabs)
   1155 #define COMPUNIT_DEBUGFORMAT(cust) ((cust)->debugformat)
   1156 #define COMPUNIT_PRODUCER(cust) ((cust)->producer)
   1157 #define COMPUNIT_DIRNAME(cust) ((cust)->dirname)
   1158 #define COMPUNIT_BLOCKVECTOR(cust) ((cust)->blockvector)
   1159 #define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section)
   1160 #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid)
   1161 #define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid)
   1162 #define COMPUNIT_CALL_SITE_HTAB(cust) ((cust)->call_site_htab)
   1163 #define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table)
   1164 
   1165 /* Iterate over all file tables (struct symtab) within a compunit.  */
   1166 
   1167 #define ALL_COMPUNIT_FILETABS(cu, s) \
   1168   for ((s) = (cu) -> filetabs; (s) != NULL; (s) = (s) -> next)
   1169 
   1170 /* Return the primary symtab of CUST.  */
   1171 
   1172 extern struct symtab *
   1173   compunit_primary_filetab (const struct compunit_symtab *cust);
   1174 
   1175 /* Return the language of CUST.  */
   1176 
   1177 extern enum language compunit_language (const struct compunit_symtab *cust);
   1178 
   1179 typedef struct compunit_symtab *compunit_symtab_ptr;
   1180 DEF_VEC_P (compunit_symtab_ptr);
   1181 
   1182 
   1183 
   1185 /* The virtual function table is now an array of structures which have the
   1186    form { int16 offset, delta; void *pfn; }.
   1187 
   1188    In normal virtual function tables, OFFSET is unused.
   1189    DELTA is the amount which is added to the apparent object's base
   1190    address in order to point to the actual object to which the
   1191    virtual function should be applied.
   1192    PFN is a pointer to the virtual function.
   1193 
   1194    Note that this macro is g++ specific (FIXME).  */
   1195 
   1196 #define VTBL_FNADDR_OFFSET 2
   1197 
   1198 /* External variables and functions for the objects described above.  */
   1199 
   1200 /* True if we are nested inside psymtab_to_symtab.  */
   1201 
   1202 extern int currently_reading_symtab;
   1203 
   1204 /* symtab.c lookup functions */
   1205 
   1206 extern const char multiple_symbols_ask[];
   1207 extern const char multiple_symbols_all[];
   1208 extern const char multiple_symbols_cancel[];
   1209 
   1210 const char *multiple_symbols_select_mode (void);
   1211 
   1212 int symbol_matches_domain (enum language symbol_language,
   1213 			   domain_enum symbol_domain,
   1214 			   domain_enum domain);
   1215 
   1216 /* lookup a symbol table by source file name.  */
   1217 
   1218 extern struct symtab *lookup_symtab (const char *);
   1219 
   1220 /* An object of this type is passed as the 'is_a_field_of_this'
   1221    argument to lookup_symbol and lookup_symbol_in_language.  */
   1222 
   1223 struct field_of_this_result
   1224 {
   1225   /* The type in which the field was found.  If this is NULL then the
   1226      symbol was not found in 'this'.  If non-NULL, then one of the
   1227      other fields will be non-NULL as well.  */
   1228 
   1229   struct type *type;
   1230 
   1231   /* If the symbol was found as an ordinary field of 'this', then this
   1232      is non-NULL and points to the particular field.  */
   1233 
   1234   struct field *field;
   1235 
   1236   /* If the symbol was found as a function field of 'this', then this
   1237      is non-NULL and points to the particular field.  */
   1238 
   1239   struct fn_fieldlist *fn_field;
   1240 };
   1241 
   1242 /* Find the definition for a specified symbol name NAME
   1243    in domain DOMAIN in language LANGUAGE, visible from lexical block BLOCK
   1244    if non-NULL or from global/static blocks if BLOCK is NULL.
   1245    Returns the struct symbol pointer, or NULL if no symbol is found.
   1246    C++: if IS_A_FIELD_OF_THIS is non-NULL on entry, check to see if
   1247    NAME is a field of the current implied argument `this'.  If so fill in the
   1248    fields of IS_A_FIELD_OF_THIS, otherwise the fields are set to NULL.
   1249    The symbol's section is fixed up if necessary.  */
   1250 
   1251 extern struct block_symbol
   1252   lookup_symbol_in_language (const char *,
   1253 			     const struct block *,
   1254 			     const domain_enum,
   1255 			     enum language,
   1256 			     struct field_of_this_result *);
   1257 
   1258 /* Same as lookup_symbol_in_language, but using the current language.  */
   1259 
   1260 extern struct block_symbol lookup_symbol (const char *,
   1261 					  const struct block *,
   1262 					  const domain_enum,
   1263 					  struct field_of_this_result *);
   1264 
   1265 /* A default version of lookup_symbol_nonlocal for use by languages
   1266    that can't think of anything better to do.
   1267    This implements the C lookup rules.  */
   1268 
   1269 extern struct block_symbol
   1270   basic_lookup_symbol_nonlocal (const struct language_defn *langdef,
   1271 				const char *,
   1272 				const struct block *,
   1273 				const domain_enum);
   1274 
   1275 /* Some helper functions for languages that need to write their own
   1276    lookup_symbol_nonlocal functions.  */
   1277 
   1278 /* Lookup a symbol in the static block associated to BLOCK, if there
   1279    is one; do nothing if BLOCK is NULL or a global block.
   1280    Upon success fixes up the symbol's section if necessary.  */
   1281 
   1282 extern struct block_symbol
   1283   lookup_symbol_in_static_block (const char *name,
   1284 				 const struct block *block,
   1285 				 const domain_enum domain);
   1286 
   1287 /* Search all static file-level symbols for NAME from DOMAIN.
   1288    Upon success fixes up the symbol's section if necessary.  */
   1289 
   1290 extern struct block_symbol lookup_static_symbol (const char *name,
   1291 						 const domain_enum domain);
   1292 
   1293 /* Lookup a symbol in all files' global blocks.
   1294 
   1295    If BLOCK is non-NULL then it is used for two things:
   1296    1) If a target-specific lookup routine for libraries exists, then use the
   1297       routine for the objfile of BLOCK, and
   1298    2) The objfile of BLOCK is used to assist in determining the search order
   1299       if the target requires it.
   1300       See gdbarch_iterate_over_objfiles_in_search_order.
   1301 
   1302    Upon success fixes up the symbol's section if necessary.  */
   1303 
   1304 extern struct block_symbol
   1305   lookup_global_symbol (const char *name,
   1306 			const struct block *block,
   1307 			const domain_enum domain);
   1308 
   1309 /* Lookup a symbol in block BLOCK.
   1310    Upon success fixes up the symbol's section if necessary.  */
   1311 
   1312 extern struct symbol *
   1313   lookup_symbol_in_block (const char *name,
   1314 			  const struct block *block,
   1315 			  const domain_enum domain);
   1316 
   1317 /* Look up the `this' symbol for LANG in BLOCK.  Return the symbol if
   1318    found, or NULL if not found.  */
   1319 
   1320 extern struct block_symbol
   1321   lookup_language_this (const struct language_defn *lang,
   1322 			const struct block *block);
   1323 
   1324 /* Lookup a [struct, union, enum] by name, within a specified block.  */
   1325 
   1326 extern struct type *lookup_struct (const char *, const struct block *);
   1327 
   1328 extern struct type *lookup_union (const char *, const struct block *);
   1329 
   1330 extern struct type *lookup_enum (const char *, const struct block *);
   1331 
   1332 /* from blockframe.c: */
   1333 
   1334 /* lookup the function symbol corresponding to the address.  */
   1335 
   1336 extern struct symbol *find_pc_function (CORE_ADDR);
   1337 
   1338 /* lookup the function corresponding to the address and section.  */
   1339 
   1340 extern struct symbol *find_pc_sect_function (CORE_ADDR, struct obj_section *);
   1341 
   1342 extern int find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, const char **name,
   1343 					       CORE_ADDR *address,
   1344 					       CORE_ADDR *endaddr,
   1345 					       int *is_gnu_ifunc_p);
   1346 
   1347 /* lookup function from address, return name, start addr and end addr.  */
   1348 
   1349 extern int find_pc_partial_function (CORE_ADDR, const char **, CORE_ADDR *,
   1350 				     CORE_ADDR *);
   1351 
   1352 extern void clear_pc_function_cache (void);
   1353 
   1354 /* Expand symtab containing PC, SECTION if not already expanded.  */
   1355 
   1356 extern void expand_symtab_containing_pc (CORE_ADDR, struct obj_section *);
   1357 
   1358 /* lookup full symbol table by address.  */
   1359 
   1360 extern struct compunit_symtab *find_pc_compunit_symtab (CORE_ADDR);
   1361 
   1362 /* lookup full symbol table by address and section.  */
   1363 
   1364 extern struct compunit_symtab *
   1365   find_pc_sect_compunit_symtab (CORE_ADDR, struct obj_section *);
   1366 
   1367 extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
   1368 
   1369 extern void reread_symbols (void);
   1370 
   1371 /* Look up a type named NAME in STRUCT_DOMAIN in the current language.
   1372    The type returned must not be opaque -- i.e., must have at least one field
   1373    defined.  */
   1374 
   1375 extern struct type *lookup_transparent_type (const char *);
   1376 
   1377 extern struct type *basic_lookup_transparent_type (const char *);
   1378 
   1379 /* Macro for name of symbol to indicate a file compiled with gcc.  */
   1380 #ifndef GCC_COMPILED_FLAG_SYMBOL
   1381 #define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
   1382 #endif
   1383 
   1384 /* Macro for name of symbol to indicate a file compiled with gcc2.  */
   1385 #ifndef GCC2_COMPILED_FLAG_SYMBOL
   1386 #define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
   1387 #endif
   1388 
   1389 extern int in_gnu_ifunc_stub (CORE_ADDR pc);
   1390 
   1391 /* Functions for resolving STT_GNU_IFUNC symbols which are implemented only
   1392    for ELF symbol files.  */
   1393 
   1394 struct gnu_ifunc_fns
   1395 {
   1396   /* See elf_gnu_ifunc_resolve_addr for its real implementation.  */
   1397   CORE_ADDR (*gnu_ifunc_resolve_addr) (struct gdbarch *gdbarch, CORE_ADDR pc);
   1398 
   1399   /* See elf_gnu_ifunc_resolve_name for its real implementation.  */
   1400   int (*gnu_ifunc_resolve_name) (const char *function_name,
   1401 				 CORE_ADDR *function_address_p);
   1402 
   1403   /* See elf_gnu_ifunc_resolver_stop for its real implementation.  */
   1404   void (*gnu_ifunc_resolver_stop) (struct breakpoint *b);
   1405 
   1406   /* See elf_gnu_ifunc_resolver_return_stop for its real implementation.  */
   1407   void (*gnu_ifunc_resolver_return_stop) (struct breakpoint *b);
   1408 };
   1409 
   1410 #define gnu_ifunc_resolve_addr gnu_ifunc_fns_p->gnu_ifunc_resolve_addr
   1411 #define gnu_ifunc_resolve_name gnu_ifunc_fns_p->gnu_ifunc_resolve_name
   1412 #define gnu_ifunc_resolver_stop gnu_ifunc_fns_p->gnu_ifunc_resolver_stop
   1413 #define gnu_ifunc_resolver_return_stop \
   1414   gnu_ifunc_fns_p->gnu_ifunc_resolver_return_stop
   1415 
   1416 extern const struct gnu_ifunc_fns *gnu_ifunc_fns_p;
   1417 
   1418 extern CORE_ADDR find_solib_trampoline_target (struct frame_info *, CORE_ADDR);
   1419 
   1420 struct symtab_and_line
   1421 {
   1422   /* The program space of this sal.  */
   1423   struct program_space *pspace;
   1424 
   1425   struct symtab *symtab;
   1426   struct obj_section *section;
   1427   /* Line number.  Line numbers start at 1 and proceed through symtab->nlines.
   1428      0 is never a valid line number; it is used to indicate that line number
   1429      information is not available.  */
   1430   int line;
   1431 
   1432   CORE_ADDR pc;
   1433   CORE_ADDR end;
   1434   int explicit_pc;
   1435   int explicit_line;
   1436 
   1437   /* The probe associated with this symtab_and_line.  */
   1438   struct probe *probe;
   1439   /* If PROBE is not NULL, then this is the objfile in which the probe
   1440      originated.  */
   1441   struct objfile *objfile;
   1442 };
   1443 
   1444 extern void init_sal (struct symtab_and_line *sal);
   1445 
   1446 struct symtabs_and_lines
   1447 {
   1448   struct symtab_and_line *sals;
   1449   int nelts;
   1450 };
   1451 
   1452 
   1454 /* Given a pc value, return line number it is in.  Second arg nonzero means
   1455    if pc is on the boundary use the previous statement's line number.  */
   1456 
   1457 extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
   1458 
   1459 /* Same function, but specify a section as well as an address.  */
   1460 
   1461 extern struct symtab_and_line find_pc_sect_line (CORE_ADDR,
   1462 						 struct obj_section *, int);
   1463 
   1464 /* Wrapper around find_pc_line to just return the symtab.  */
   1465 
   1466 extern struct symtab *find_pc_line_symtab (CORE_ADDR);
   1467 
   1468 /* Given a symtab and line number, return the pc there.  */
   1469 
   1470 extern int find_line_pc (struct symtab *, int, CORE_ADDR *);
   1471 
   1472 extern int find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
   1473 			       CORE_ADDR *);
   1474 
   1475 extern void resolve_sal_pc (struct symtab_and_line *);
   1476 
   1477 /* solib.c */
   1478 
   1479 extern void clear_solib (void);
   1480 
   1481 /* source.c */
   1482 
   1483 extern int identify_source_line (struct symtab *, int, int, CORE_ADDR);
   1484 
   1485 /* Flags passed as 4th argument to print_source_lines.  */
   1486 
   1487 enum print_source_lines_flag
   1488   {
   1489     /* Do not print an error message.  */
   1490     PRINT_SOURCE_LINES_NOERROR = (1 << 0),
   1491 
   1492     /* Print the filename in front of the source lines.  */
   1493     PRINT_SOURCE_LINES_FILENAME = (1 << 1)
   1494   };
   1495 DEF_ENUM_FLAGS_TYPE (enum print_source_lines_flag, print_source_lines_flags);
   1496 
   1497 extern void print_source_lines (struct symtab *, int, int,
   1498 				print_source_lines_flags);
   1499 
   1500 extern void forget_cached_source_info_for_objfile (struct objfile *);
   1501 extern void forget_cached_source_info (void);
   1502 
   1503 extern void select_source_symtab (struct symtab *);
   1504 
   1505 extern VEC (char_ptr) *default_make_symbol_completion_list_break_on
   1506   (const char *text, const char *word, const char *break_on,
   1507    enum type_code code);
   1508 extern VEC (char_ptr) *default_make_symbol_completion_list (const char *,
   1509 							    const char *,
   1510 							    enum type_code);
   1511 extern VEC (char_ptr) *make_symbol_completion_list (const char *, const char *);
   1512 extern VEC (char_ptr) *make_symbol_completion_type (const char *, const char *,
   1513 						    enum type_code);
   1514 extern VEC (char_ptr) *make_symbol_completion_list_fn (struct cmd_list_element *,
   1515 						       const char *,
   1516 						       const char *);
   1517 
   1518 extern VEC (char_ptr) *make_file_symbol_completion_list (const char *,
   1519 							 const char *,
   1520 							 const char *);
   1521 
   1522 extern VEC (char_ptr) *make_source_files_completion_list (const char *,
   1523 							  const char *);
   1524 
   1525 /* symtab.c */
   1526 
   1527 int matching_obj_sections (struct obj_section *, struct obj_section *);
   1528 
   1529 extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
   1530 
   1531 extern struct symtab_and_line find_function_start_sal (struct symbol *sym,
   1532 						       int);
   1533 
   1534 extern void skip_prologue_sal (struct symtab_and_line *);
   1535 
   1536 /* symtab.c */
   1537 
   1538 extern CORE_ADDR skip_prologue_using_sal (struct gdbarch *gdbarch,
   1539 					  CORE_ADDR func_addr);
   1540 
   1541 extern struct symbol *fixup_symbol_section (struct symbol *,
   1542 					    struct objfile *);
   1543 
   1544 /* Symbol searching */
   1545 /* Note: struct symbol_search, search_symbols, et.al. are declared here,
   1546    instead of making them local to symtab.c, for gdbtk's sake.  */
   1547 
   1548 /* When using search_symbols, a list of the following structs is returned.
   1549    Callers must free the search list using free_search_symbols!  */
   1550 struct symbol_search
   1551 {
   1552   /* The block in which the match was found.  Could be, for example,
   1553      STATIC_BLOCK or GLOBAL_BLOCK.  */
   1554   int block;
   1555 
   1556   /* Information describing what was found.
   1557 
   1558      If symbol is NOT NULL, then information was found for this match.  */
   1559   struct symbol *symbol;
   1560 
   1561   /* If msymbol is non-null, then a match was made on something for
   1562      which only minimal_symbols exist.  */
   1563   struct bound_minimal_symbol msymbol;
   1564 
   1565   /* A link to the next match, or NULL for the end.  */
   1566   struct symbol_search *next;
   1567 };
   1568 
   1569 extern void search_symbols (const char *, enum search_domain, int,
   1570 			    const char **, struct symbol_search **);
   1571 extern void free_search_symbols (struct symbol_search *);
   1572 extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search
   1573 							 **);
   1574 
   1575 /* The name of the ``main'' function.
   1576    FIXME: cagney/2001-03-20: Can't make main_name() const since some
   1577    of the calling code currently assumes that the string isn't
   1578    const.  */
   1579 extern /*const */ char *main_name (void);
   1580 extern enum language main_language (void);
   1581 
   1582 /* Lookup symbol NAME from DOMAIN in MAIN_OBJFILE's global blocks.
   1583    This searches MAIN_OBJFILE as well as any associated separate debug info
   1584    objfiles of MAIN_OBJFILE.
   1585    Upon success fixes up the symbol's section if necessary.  */
   1586 
   1587 extern struct block_symbol
   1588   lookup_global_symbol_from_objfile (struct objfile *main_objfile,
   1589 				     const char *name,
   1590 				     const domain_enum domain);
   1591 
   1592 /* Return 1 if the supplied producer string matches the ARM RealView
   1593    compiler (armcc).  */
   1594 int producer_is_realview (const char *producer);
   1595 
   1596 void fixup_section (struct general_symbol_info *ginfo,
   1597 		    CORE_ADDR addr, struct objfile *objfile);
   1598 
   1599 /* Look up objfile containing BLOCK.  */
   1600 
   1601 struct objfile *lookup_objfile_from_block (const struct block *block);
   1602 
   1603 extern unsigned int symtab_create_debug;
   1604 
   1605 extern unsigned int symbol_lookup_debug;
   1606 
   1607 extern int basenames_may_differ;
   1608 
   1609 int compare_filenames_for_search (const char *filename,
   1610 				  const char *search_name);
   1611 
   1612 int compare_glob_filenames_for_search (const char *filename,
   1613 				       const char *search_name);
   1614 
   1615 bool iterate_over_some_symtabs (const char *name,
   1616 				const char *real_path,
   1617 				struct compunit_symtab *first,
   1618 				struct compunit_symtab *after_last,
   1619 				gdb::function_view<bool (symtab *)> callback);
   1620 
   1621 void iterate_over_symtabs (const char *name,
   1622 			   gdb::function_view<bool (symtab *)> callback);
   1623 
   1624 
   1625 std::vector<CORE_ADDR> find_pcs_for_symtab_line
   1626     (struct symtab *symtab, int line, struct linetable_entry **best_entry);
   1627 
   1628 /* Prototype for callbacks for LA_ITERATE_OVER_SYMBOLS.  The callback
   1629    is called once per matching symbol SYM.  The callback should return
   1630    true to indicate that LA_ITERATE_OVER_SYMBOLS should continue
   1631    iterating, or false to indicate that the iteration should end.  */
   1632 
   1633 typedef bool (symbol_found_callback_ftype) (symbol *sym);
   1634 
   1635 void iterate_over_symbols (const struct block *block, const char *name,
   1636 			   const domain_enum domain,
   1637 			   gdb::function_view<symbol_found_callback_ftype> callback);
   1638 
   1639 /* Storage type used by demangle_for_lookup.  demangle_for_lookup
   1640    either returns a const char * pointer that points to either of the
   1641    fields of this type, or a pointer to the input NAME.  This is done
   1642    this way because the underlying functions that demangle_for_lookup
   1643    calls either return a std::string (e.g., cp_canonicalize_string) or
   1644    a malloc'ed buffer (libiberty's demangled), and we want to avoid
   1645    unnecessary reallocation/string copying.  */
   1646 class demangle_result_storage
   1647 {
   1648 public:
   1649 
   1650   /* Swap the std::string storage with STR, and return a pointer to
   1651      the beginning of the new string.  */
   1652   const char *swap_string (std::string &str)
   1653   {
   1654     std::swap (m_string, str);
   1655     return m_string.c_str ();
   1656   }
   1657 
   1658   /* Set the malloc storage to now point at PTR.  Any previous malloc
   1659      storage is released.  */
   1660   const char *set_malloc_ptr (char *ptr)
   1661   {
   1662     m_malloc.reset (ptr);
   1663     return ptr;
   1664   }
   1665 
   1666 private:
   1667 
   1668   /* The storage.  */
   1669   std::string m_string;
   1670   gdb::unique_xmalloc_ptr<char> m_malloc;
   1671 };
   1672 
   1673 const char *
   1674   demangle_for_lookup (const char *name, enum language lang,
   1675 		       demangle_result_storage &storage);
   1676 
   1677 struct symbol *allocate_symbol (struct objfile *);
   1678 
   1679 void initialize_objfile_symbol (struct symbol *);
   1680 
   1681 struct template_symbol *allocate_template_symbol (struct objfile *);
   1682 
   1683 #endif /* !defined(SYMTAB_H) */
   1684