Remove ALL_MSYMBOLS and ALL_OBJFILE_MSYMBOLS
[deliverable/binutils-gdb.git] / gdb / stabsread.c
index ad7b459d722208163eba5b6056b043061ec1f97c..daba7cb98b6946ed6d832eab97728db8aa36c881 100644 (file)
@@ -1,6 +1,6 @@
 /* Support routines for decoding "stabs" debugging information format.
 
-   Copyright (C) 1986-2018 Free Software Foundation, Inc.
+   Copyright (C) 1986-2019 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -36,7 +36,7 @@
 #include "libaout.h"
 #include "aout/aout64.h"
 #include "gdb-stabs.h"
-#include "buildsym.h"
+#include "buildsym-legacy.h"
 #include "complaints.h"
 #include "demangle.h"
 #include "gdb-demangle.h"
@@ -432,7 +432,7 @@ patch_block_stabs (struct pending *symbols, struct pending_stabs *stabs,
                {
                  SYMBOL_TYPE (sym) = read_type (&pp, objfile);
                }
-             add_symbol_to_list (sym, &global_symbols);
+             add_symbol_to_list (sym, get_global_symbols ());
            }
          else
            {
@@ -616,13 +616,9 @@ stab_reg_to_regnum (struct symbol *sym, struct gdbarch *gdbarch)
 {
   int regno = gdbarch_stab_reg_to_regnum (gdbarch, SYMBOL_VALUE (sym));
 
-  if (regno < 0
-      || regno >= (gdbarch_num_regs (gdbarch)
-                  + gdbarch_num_pseudo_regs (gdbarch)))
+  if (regno < 0 || regno >= gdbarch_num_cooked_regs (gdbarch))
     {
-      reg_value_complaint (regno,
-                          gdbarch_num_regs (gdbarch)
-                            + gdbarch_num_pseudo_regs (gdbarch),
+      reg_value_complaint (regno, gdbarch_num_cooked_regs (gdbarch),
                           SYMBOL_PRINT_NAME (sym));
 
       regno = gdbarch_sp_regnum (gdbarch); /* Known safe, though useless.  */
@@ -753,7 +749,8 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
        SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile);
 
       if (SYMBOL_LANGUAGE (sym) == language_cplus)
-       cp_scan_for_anonymous_namespaces (sym, objfile);
+       cp_scan_for_anonymous_namespaces (get_buildsym_compunit (), sym,
+                                         objfile);
 
     }
   p++;
@@ -789,7 +786,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
          SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
          SYMBOL_TYPE (sym) = error_type (&p, objfile);
          SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-         add_symbol_to_list (sym, &file_symbols);
+         add_symbol_to_list (sym, get_file_symbols ());
          return sym;
        }
       ++p;
@@ -848,7 +845,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
                SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
                SYMBOL_TYPE (sym) = error_type (&p, objfile);
                SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-               add_symbol_to_list (sym, &file_symbols);
+               add_symbol_to_list (sym, get_file_symbols ());
                return sym;
              }
 
@@ -873,7 +870,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
                SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
                SYMBOL_TYPE (sym) = error_type (&p, objfile);
                SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-               add_symbol_to_list (sym, &file_symbols);
+               add_symbol_to_list (sym, get_file_symbols ());
                return sym;
              }
 
@@ -928,7 +925,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
          }
        }
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &file_symbols);
+      add_symbol_to_list (sym, get_file_symbols ());
       return sym;
 
     case 'C':
@@ -937,7 +934,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
       SYMBOL_VALUE_ADDRESS (sym) = valu;
-      add_symbol_to_list (sym, &local_symbols);
+      add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     case 'f':
@@ -945,7 +942,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_TYPE (sym) = read_type (&p, objfile);
       SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &file_symbols);
+      add_symbol_to_list (sym, get_file_symbols ());
       /* fall into process_function_types.  */
 
     process_function_types:
@@ -1016,7 +1013,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_TYPE (sym) = read_type (&p, objfile);
       SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &global_symbols);
+      add_symbol_to_list (sym, get_global_symbols ());
       goto process_function_types;
 
     case 'G':
@@ -1037,7 +1034,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
          SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
          global_sym_chain[i] = sym;
        }
-      add_symbol_to_list (sym, &global_symbols);
+      add_symbol_to_list (sym, get_global_symbols ());
       break;
 
       /* This case is faked by a conditional above,
@@ -1049,7 +1046,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_ACLASS_INDEX (sym) = LOC_LOCAL;
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &local_symbols);
+      add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     case 'p':
@@ -1070,7 +1067,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
       SYMBOL_IS_ARGUMENT (sym) = 1;
-      add_symbol_to_list (sym, &local_symbols);
+      add_symbol_to_list (sym, get_local_symbols ());
 
       if (gdbarch_byte_order (gdbarch) != BFD_ENDIAN_BIG)
        {
@@ -1119,7 +1116,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_IS_ARGUMENT (sym) = 1;
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &local_symbols);
+      add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     case 'r':
@@ -1150,6 +1147,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
             but this case is considered pathological and causes a warning
             from a decent compiler.  */
 
+         struct pending *local_symbols = *get_local_symbols ();
          if (local_symbols
              && local_symbols->nsyms > 0
              && gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym)))
@@ -1171,10 +1169,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
                  break;
                }
            }
-         add_symbol_to_list (sym, &local_symbols);
+         add_symbol_to_list (sym, get_local_symbols ());
        }
       else
-       add_symbol_to_list (sym, &file_symbols);
+       add_symbol_to_list (sym, get_file_symbols ());
       break;
 
     case 'S':
@@ -1201,7 +1199,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
            }
        }
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &file_symbols);
+      add_symbol_to_list (sym, get_file_symbols ());
       break;
 
     case 't':
@@ -1305,7 +1303,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
            TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_LINKAGE_NAME (sym);
        }
 
-      add_symbol_to_list (sym, &file_symbols);
+      add_symbol_to_list (sym, get_file_symbols ());
 
       if (synonym)
         {
@@ -1321,7 +1319,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
              = obconcat (&objfile->objfile_obstack,
                          SYMBOL_LINKAGE_NAME (sym),
                          (char *) NULL);
-          add_symbol_to_list (struct_sym, &file_symbols);
+          add_symbol_to_list (struct_sym, get_file_symbols ());
         }
       
       break;
@@ -1349,7 +1347,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
          = obconcat (&objfile->objfile_obstack,
                      SYMBOL_LINKAGE_NAME (sym),
                      (char *) NULL);
-      add_symbol_to_list (sym, &file_symbols);
+      add_symbol_to_list (sym, get_file_symbols ());
 
       if (synonym)
        {
@@ -1365,7 +1363,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
              = obconcat (&objfile->objfile_obstack,
                          SYMBOL_LINKAGE_NAME (sym),
                          (char *) NULL);
-         add_symbol_to_list (typedef_sym, &file_symbols);
+         add_symbol_to_list (typedef_sym, get_file_symbols ());
        }
       break;
 
@@ -1393,7 +1391,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
            }
        }
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-       add_symbol_to_list (sym, &local_symbols);
+       add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     case 'v':
@@ -1403,7 +1401,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_IS_ARGUMENT (sym) = 1;
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &local_symbols);
+      add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     case 'a':
@@ -1413,7 +1411,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_IS_ARGUMENT (sym) = 1;
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &local_symbols);
+      add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     case 'X':
@@ -1425,7 +1423,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_ACLASS_INDEX (sym) = LOC_LOCAL;
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &local_symbols);
+      add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     default:
@@ -1433,7 +1431,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
       SYMBOL_VALUE (sym) = 0;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      add_symbol_to_list (sym, &file_symbols);
+      add_symbol_to_list (sym, get_file_symbols ());
       break;
     }
 
@@ -1675,7 +1673,7 @@ again:
            type, rather than allocating a new one.  This saves some
            memory.  */
 
-       for (ppt = file_symbols; ppt; ppt = ppt->next)
+       for (ppt = *get_file_symbols (); ppt; ppt = ppt->next)
          for (i = 0; i < ppt->nsyms; i++)
            {
              struct symbol *sym = ppt->symbol[i];
@@ -2554,7 +2552,6 @@ read_member_functions (struct field_info *fip, const char **pp,
        }
       else
        {
-         int has_stub = 0;
          int has_destructor = 0, has_other = 0;
          int is_v3 = 0;
          struct next_fnfield *tmp_sublist;
@@ -2618,8 +2615,6 @@ read_member_functions (struct field_info *fip, const char **pp,
          tmp_sublist = sublist;
          while (tmp_sublist != NULL)
            {
-             if (tmp_sublist->fn_field.is_stub)
-               has_stub = 1;
              if (tmp_sublist->fn_field.physname[0] == '_'
                  && tmp_sublist->fn_field.physname[1] == 'Z')
                is_v3 = 1;
@@ -2706,23 +2701,6 @@ read_member_functions (struct field_info *fip, const char **pp,
                          "~", main_fn_name, (char *)NULL);
              xfree (main_fn_name);
            }
-         else if (!has_stub)
-           {
-             char dem_opname[256];
-             int ret;
-
-             ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name,
-                                             dem_opname, DMGL_ANSI);
-             if (!ret)
-               ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name,
-                                            dem_opname, 0);
-             if (ret)
-               new_fnlist->fn_fieldlist.name
-                 = ((const char *)
-                    obstack_copy0 (&objfile->objfile_obstack, dem_opname,
-                                   strlen (dem_opname)));
-             xfree (main_fn_name);
-           }
 
          new_fnlist->fn_fieldlist.fn_fields
            = OBSTACK_CALLOC (&objfile->objfile_obstack, length, fn_field);
@@ -3642,10 +3620,10 @@ read_enum_type (const char **pp, struct type *type,
      to be file-scope, between N_FN entries, using N_LSYM.  What's a mother
      to do?  For now, force all enum values to file scope.  */
   if (within_function)
-    symlist = &local_symbols;
+    symlist = get_local_symbols ();
   else
 #endif
-    symlist = &file_symbols;
+    symlist = get_file_symbols ();
   osyms = *symlist;
   o_nsyms = osyms ? osyms->nsyms : 0;
 
@@ -4316,8 +4294,8 @@ common_block_start (const char *name, struct objfile *objfile)
     {
       complaint (_("Invalid symbol data: common block within common block"));
     }
-  common_block = local_symbols;
-  common_block_i = local_symbols ? local_symbols->nsyms : 0;
+  common_block = *get_local_symbols ();
+  common_block_i = common_block ? common_block->nsyms : 0;
   common_block_name = (char *) obstack_copy0 (&objfile->objfile_obstack, name,
                                              strlen (name));
 }
@@ -4352,7 +4330,7 @@ common_block_end (struct objfile *objfile)
   /* Now we copy all the symbols which have been defined since the BCOMM.  */
 
   /* Copy all the struct pendings before common_block.  */
-  for (next = local_symbols;
+  for (next = *get_local_symbols ();
        next != NULL && next != common_block;
        next = next->next)
     {
@@ -4545,7 +4523,7 @@ cleanup_undefined_types_1 (void)
                    complaint (_("need a type name"));
                    break;
                  }
-               for (ppt = file_symbols; ppt; ppt = ppt->next)
+               for (ppt = *get_file_symbols (); ppt; ppt = ppt->next)
                  {
                    for (i = 0; i < ppt->nsyms; i++)
                      {
@@ -4595,7 +4573,6 @@ void
 scan_file_globals (struct objfile *objfile)
 {
   int hash;
-  struct minimal_symbol *msymbol;
   struct symbol *sym, *prev;
   struct objfile *resolve_objfile;
 
@@ -4621,7 +4598,7 @@ scan_file_globals (struct objfile *objfile)
       if (hash >= HASHSIZE)
        return;
 
-      ALL_OBJFILE_MSYMBOLS (resolve_objfile, msymbol)
+      for (minimal_symbol *msymbol : objfile_msymbols (resolve_objfile))
        {
          QUIT;
 
@@ -4781,7 +4758,7 @@ finish_global_stabs (struct objfile *objfile)
 {
   if (global_stabs)
     {
-      patch_block_stabs (global_symbols, global_stabs, objfile);
+      patch_block_stabs (*get_global_symbols (), global_stabs, objfile);
       xfree (global_stabs);
       global_stabs = NULL;
     }
This page took 0.037165 seconds and 4 git commands to generate.