Remove unnecessary casts of NULL
[deliverable/binutils-gdb.git] / gdb / mdebugread.c
index 0583ce2f3ac123f66bed9ec4bef30ee0aa635219..7d0cbb71a911e52bd70407686e956a83a082582e 100644 (file)
@@ -348,7 +348,7 @@ mdebug_build_psymtabs (minimal_symbol_reader &reader,
   init_header_files ();
         
   /* Make sure all the FDR information is swapped in.  */
-  if (info->fdr == (FDR *) NULL)
+  if (info->fdr == NULL)
     {
       char *fdr_src;
       char *fdr_end;
@@ -377,7 +377,6 @@ mdebug_build_psymtabs (minimal_symbol_reader &reader,
                           objfile->name);
       printf_unfiltered (_("You should compile with -g2 or "
                           "-g3 for best debugging support.\n"));
-      gdb_flush (gdb_stdout);
     }
 #endif
 }
@@ -594,7 +593,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
   long svalue = sh->value;
   int bitsize;
 
-  if (ext_sh == (char *) NULL)
+  if (ext_sh == NULL)
     name = debug_info->ssext + sh->iss;
   else
     name = debug_info->ss + cur_fdr->issBase + sh->iss;
@@ -1006,7 +1005,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 
        /* Create a new type or use the pending type.  */
        pend = is_pending_symbol (cur_fdr, ext_sh);
-       if (pend == (struct mdebug_pending *) NULL)
+       if (pend == NULL)
          {
            t = new_type (NULL);
            add_pending (cur_fdr, ext_sh, t);
@@ -1268,9 +1267,9 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 
       /* Parse the type or use the pending type.  */
       pend = is_pending_symbol (cur_fdr, ext_sh);
-      if (pend == (struct mdebug_pending *) NULL)
+      if (pend == NULL)
        {
-         t = parse_type (cur_fd, ax, sh->index, (int *) NULL, bigend, name);
+         t = parse_type (cur_fd, ax, sh->index, NULL, bigend, name);
          add_pending (cur_fdr, ext_sh, t);
        }
       else
@@ -1359,14 +1358,15 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
 
 /* Basic types.  */
 
-static const struct objfile_data *basic_type_data;
+static const struct objfile_key<struct type *,
+                               gdb::noop_deleter<struct type *>>
+  basic_type_data;
 
 static struct type *
 basic_type (int bt, struct objfile *objfile)
 {
   struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct type **map_bt
-    = (struct type **) objfile_data (objfile, basic_type_data);
+  struct type **map_bt = basic_type_data.get (objfile);
   struct type *tp;
 
   if (bt >= btMax)
@@ -1376,7 +1376,7 @@ basic_type (int bt, struct objfile *objfile)
     {
       map_bt = OBSTACK_CALLOC (&objfile->objfile_obstack,
                               btMax, struct type *);
-      set_objfile_data (objfile, basic_type_data, map_bt);
+      basic_type_data.set (objfile, map_bt);
     }
 
   if (map_bt[bt])
@@ -1579,7 +1579,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
       int width = AUX_GET_WIDTH (bigend, ax);
 
       /* Inhibit core dumps if TIR is corrupted.  */
-      if (bs == (int *) NULL)
+      if (bs == NULL)
        {
          /* Alpha cc -migrate encodes char and unsigned char types
             as short and unsigned short types with a field width of 8.
@@ -1626,7 +1626,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
       xref_fh = get_rfd (fd, rf);
       xref_fd = xref_fh - debug_info->fdr;
       tp = parse_type (xref_fd, debug_info->external_aux + xref_fh->iauxBase,
-                   rn->index, (int *) NULL, xref_fh->fBigendian, sym_name);
+                   rn->index, NULL, xref_fh->fBigendian, sym_name);
     }
 
   /* All these types really point to some (common) MIPS type
@@ -1644,7 +1644,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 
       /* Try to cross reference this type, build new type on failure.  */
       ax += cross_ref (fd, ax, &tp, type_code, &name, bigend, sym_name);
-      if (tp == (struct type *) NULL)
+      if (tp == NULL)
        tp = init_type (mdebugread_objfile, type_code, 0, NULL);
 
       /* DEC c89 produces cross references to qualified aggregate types,
@@ -1704,7 +1704,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 
       /* Try to cross reference this type, build new type on failure.  */
       ax += cross_ref (fd, ax, &tp, type_code, &name, bigend, sym_name);
-      if (tp == (struct type *) NULL)
+      if (tp == NULL)
        tp = init_type (mdebugread_objfile, type_code, 0, NULL);
 
       /* Make sure that TYPE_CODE(tp) has an expected type code.
@@ -1737,7 +1737,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 
       /* Try to cross reference this type, it should succeed.  */
       ax += cross_ref (fd, ax, &tp, type_code, &name, bigend, sym_name);
-      if (tp == (struct type *) NULL)
+      if (tp == NULL)
        {
          complaint (_("unable to cross ref btTypedef for %s"), sym_name);
          tp = basic_type (btInt, mdebugread_objfile);
@@ -1841,7 +1841,7 @@ upgrade_type (int fd, struct type **tpp, int tq, union aux_ext *ax, int bigend,
 
       indx = parse_type (fh - debug_info->fdr,
                         debug_info->external_aux + fh->iauxBase,
-                        id, (int *) NULL, bigend, sym_name);
+                        id, NULL, bigend, sym_name);
 
       /* The bounds type should be an integer type, but might be anything
          else due to corrupt aux entries.  */
@@ -1860,10 +1860,9 @@ upgrade_type (int fd, struct type **tpp, int tq, union aux_ext *ax, int bigend,
       ax++;
       rf = AUX_GET_WIDTH (bigend, ax); /* bit size of array element */
 
-      range = create_static_range_type ((struct type *) NULL, indx,
-                                       lower, upper);
+      range = create_static_range_type (NULL, indx, lower, upper);
 
-      t = create_array_type ((struct type *) NULL, *tpp, range);
+      t = create_array_type (NULL, *tpp, range);
 
       /* We used to fill in the supplied array element bitsize
          here if the TYPE_LENGTH of the target type was zero.
@@ -2144,7 +2143,7 @@ parse_external (EXTR *es, int bigend, struct section_offsets *section_offsets,
 
       /* Note that the case of a symbol with indexNil must be handled
          anyways by parse_symbol().  */
-      parse_symbol (&es->asym, ax, (char *) NULL,
+      parse_symbol (&es->asym, ax, NULL,
                    bigend, section_offsets, objfile);
       break;
     default:
@@ -2619,9 +2618,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
        textlow = 0;
       pst = start_psymtab_common (objfile,
                                  fdr_name (fh),
-                                 textlow,
-                                 objfile->global_psymbols,
-                                 objfile->static_psymbols);
+                                 textlow);
       pst->read_symtab_private = XOBNEW (&objfile->objfile_obstack, symloc);
       memset (pst->read_symtab_private, 0, sizeof (struct symloc));
 
@@ -2767,6 +2764,9 @@ parse_partial_symbols (minimal_symbol_reader &reader,
              /* Handle stabs continuation.  */
              {
                char *stabstring = debug_info->ss + fh->issBase + sh.iss;
+               /* If we need to heap-allocate STABSTRING, this owns
+                  it.  */
+               gdb::unique_xmalloc_ptr<char> stabstring_storage;
                int len = strlen (stabstring);
 
                while (stabstring[len - 1] == '\\')
@@ -2789,14 +2789,19 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                    stabstring2 = debug_info->ss + fh->issBase + sh2.iss;
                    len2 = strlen (stabstring2);
 
-                   /* Concatinate stabstring2 with stabstring1.  */
-                   if (stabstring
-                    && stabstring != debug_info->ss + fh->issBase + sh.iss)
-                     stabstring
-                       = (char *) xrealloc (stabstring, len + len2 + 1);
+                   /* Concatenate stabstring2 with stabstring1.  */
+                   if (stabstring_storage != nullptr)
+                     {
+                       stabstring_storage.reset
+                         ((char *) xrealloc (stabstring_storage.release (),
+                                             len + len2 + 1));
+                       stabstring = stabstring_storage.get ();
+                     }
                    else
                      {
-                       stabstring = (char *) xmalloc (len + len2 + 1);
+                       stabstring_storage.reset
+                         ((char *) xmalloc (len + len2 + 1));
+                       stabstring = stabstring_storage.get ();
                        strcpy (stabstring, stabstring1);
                      }
                    strcpy (stabstring + len, stabstring2);
@@ -3050,7 +3055,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_STATIC,
                                             SECT_OFF_DATA (objfile),
-                                            &objfile->static_psymbols,
+                                            psymbol_placement::STATIC,
                                             sh.value,
                                             psymtab_language, objfile);
                        continue;
@@ -3061,7 +3066,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_STATIC,
                                             SECT_OFF_DATA (objfile),
-                                            &objfile->global_psymbols,
+                                            psymbol_placement::GLOBAL,
                                             sh.value,
                                             psymtab_language, objfile);
                        continue;
@@ -3080,7 +3085,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                            add_psymbol_to_list (namestring, p - namestring, 1,
                                                 STRUCT_DOMAIN, LOC_TYPEDEF,
                                                 -1,
-                                                &objfile->static_psymbols,
+                                                psymbol_placement::STATIC,
                                                 0, psymtab_language, objfile);
                            if (p[2] == 't')
                              {
@@ -3089,7 +3094,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                                                     p - namestring, 1,
                                                     VAR_DOMAIN, LOC_TYPEDEF,
                                                     -1,
-                                                    &objfile->static_psymbols,
+                                                    psymbol_placement::STATIC,
                                                     0, psymtab_language,
                                                     objfile);
                                p += 1;
@@ -3103,7 +3108,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                            add_psymbol_to_list (namestring, p - namestring, 1,
                                                 VAR_DOMAIN, LOC_TYPEDEF,
                                                 -1,
-                                                &objfile->static_psymbols,
+                                                psymbol_placement::STATIC,
                                                 0, psymtab_language, objfile);
                          }
                      check_enum:
@@ -3168,7 +3173,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                                add_psymbol_to_list (p, q - p, 1,
                                                     VAR_DOMAIN, LOC_CONST,
                                                     -1,
-                                                    &objfile->static_psymbols,
+                                                    psymbol_placement::STATIC,
                                                     0, psymtab_language,
                                                     objfile);
                                /* Point past the name.  */
@@ -3186,7 +3191,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                        /* Constant, e.g. from "const" in Pascal.  */
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_CONST, -1,
-                                            &objfile->static_psymbols,
+                                            psymbol_placement::STATIC,
                                             0, psymtab_language, objfile);
                        continue;
 
@@ -3200,7 +3205,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_BLOCK,
                                             SECT_OFF_TEXT (objfile),
-                                            &objfile->static_psymbols,
+                                            psymbol_placement::STATIC,
                                             sh.value,
                                             psymtab_language, objfile);
                        continue;
@@ -3219,7 +3224,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_BLOCK,
                                             SECT_OFF_TEXT (objfile),
-                                            &objfile->global_psymbols,
+                                            psymbol_placement::GLOBAL,
                                             sh.value,
                                             psymtab_language, objfile);
                        continue;
@@ -3332,9 +3337,6 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                               hex_string (type_code)); /* CUR_SYMBOL_TYPE */
                    continue;
                  }
-               if (stabstring
-                   && stabstring != debug_info->ss + fh->issBase + sh.iss)
-                 xfree (stabstring);
              }
              /* end - Handle continuation */
            }
@@ -3457,13 +3459,13 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                    add_psymbol_to_list (sym_name, strlen (sym_name), 1,
                                         VAR_DOMAIN, LOC_BLOCK,
                                         section,
-                                        &objfile->global_psymbols,
+                                        psymbol_placement::GLOBAL,
                                         sh.value, psymtab_language, objfile);
                  else
                    add_psymbol_to_list (sym_name, strlen (sym_name), 1,
                                         VAR_DOMAIN, LOC_BLOCK,
                                         section,
-                                        &objfile->static_psymbols,
+                                        psymbol_placement::STATIC,
                                         sh.value, psymtab_language, objfile);
 
                  procaddr = sh.value;
@@ -3529,7 +3531,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                    {
                      add_psymbol_to_list (sym_name, strlen (sym_name), 1,
                                           STRUCT_DOMAIN, LOC_TYPEDEF, -1,
-                                          &objfile->static_psymbols,
+                                          psymbol_placement::STATIC,
                                           0, psymtab_language, objfile);
                    }
                  handle_psymbol_enumerators (objfile, fh, sh.st, sh.value);
@@ -3569,7 +3571,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
              /* Use this gdb symbol.  */
              add_psymbol_to_list (sym_name, strlen (sym_name), 1,
                                   VAR_DOMAIN, theclass, section,
-                                  &objfile->static_psymbols,
+                                  psymbol_placement::STATIC,
                                   sh.value, psymtab_language, objfile);
            skip:
              cur_sdx++;        /* Go to next file symbol.  */
@@ -3649,7 +3651,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
              add_psymbol_to_list (sym_name, strlen (sym_name), 1,
                                   VAR_DOMAIN, theclass,
                                   section,
-                                  &objfile->global_psymbols,
+                                  psymbol_placement::GLOBAL,
                                   svalue, psymtab_language, objfile);
            }
        }
@@ -3681,7 +3683,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
          && save_pst->text_low_valid
          && !(objfile->flags & OBJF_REORDERED))
        {
-         for (partial_symtab *iter : objfile_psymtabs (objfile))
+         for (partial_symtab *iter : objfile->psymtabs ())
            {
              if (save_pst != iter
                  && save_pst->raw_text_low () >= iter->raw_text_low ()
@@ -3701,7 +3703,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
       fh = f_idx + debug_info->fdr;
       pst = fdr_to_pst[f_idx].pst;
 
-      if (pst == (struct partial_symtab *) NULL)
+      if (pst == NULL)
        continue;
 
       /* This should catch stabs-in-ecoff.  */
@@ -3711,8 +3713,8 @@ parse_partial_symbols (minimal_symbol_reader &reader,
       /* Skip the first file indirect entry as it is a self dependency for
          source files or a reverse .h -> .c dependency for header files.  */
       pst->number_of_dependencies = 0;
-      pst->dependencies = XOBNEWVEC (&objfile->objfile_obstack,
-                                    partial_symtab *, (fh->crfd - 1));
+      pst->dependencies
+       = objfile->partial_symtabs->allocate_dependencies (fh->crfd - 1);
       for (s_idx = 1; s_idx < fh->crfd; s_idx++)
        {
          RFDT rh;
@@ -3732,7 +3734,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
            continue;
 
          /* Do not add to dependeny list if psymtab was empty.  */
-         if (fdr_to_pst[rh].pst == (struct partial_symtab *) NULL)
+         if (fdr_to_pst[rh].pst == NULL)
            continue;
          pst->dependencies[pst->number_of_dependencies++]
            = fdr_to_pst[rh].pst;
@@ -3741,11 +3743,12 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 
   /* Remove the dummy psymtab created for -O3 images above, if it is
      still empty, to enable the detection of stripped executables.  */
-  if (objfile->psymtabs->next == NULL
-      && objfile->psymtabs->number_of_dependencies == 0
-      && objfile->psymtabs->n_global_syms == 0
-      && objfile->psymtabs->n_static_syms == 0)
-    objfile->psymtabs = NULL;
+  pst = objfile->partial_symtabs->psymtabs;
+  if (pst->next == NULL
+      && pst->number_of_dependencies == 0
+      && pst->n_global_syms == 0
+      && pst->n_static_syms == 0)
+    objfile->partial_symtabs->psymtabs = NULL;
 }
 
 /* If the current psymbol has an enumerated type, we need to add
@@ -3810,7 +3813,7 @@ handle_psymbol_enumerators (struct objfile *objfile, FDR *fh, int stype,
          in psymtabs, just in symtabs.  */
       add_psymbol_to_list (name, strlen (name), 1,
                           VAR_DOMAIN, LOC_CONST, -1,
-                          &objfile->static_psymbols, 0,
+                          psymbol_placement::STATIC, 0,
                           psymtab_language, objfile);
       ext_sym += external_sym_size;
     }
@@ -3905,13 +3908,13 @@ psymtab_to_symtab_1 (struct objfile *objfile,
   mdebugread_objfile = objfile;
   cur_fd = FDR_IDX (pst);
   fh = ((cur_fd == -1)
-       ? (FDR *) NULL
+       ? NULL
        : debug_info->fdr + cur_fd);
   cur_fdr = fh;
 
   /* See comment in parse_partial_symbols about the @stabs sentinel.  */
   processing_gcc_compilation = 0;
-  if (fh != (FDR *) NULL && fh->csym >= 2)
+  if (fh != NULL && fh->csym >= 2)
     {
       SYMR sh;
 
@@ -4421,7 +4424,7 @@ cross_ref (int fd, union aux_ext *ax, struct type **tpp,
              *tpp = parse_type (xref_fd,
                                 debug_info->external_aux + fh->iauxBase,
                                 sh.index,
-                                (int *) NULL,
+                                NULL,
                                 fh->fBigendian,
                                 debug_info->ss + fh->issBase + sh.iss);
              add_pending (fh, esh, *tpp);
@@ -4447,7 +4450,7 @@ cross_ref (int fd, union aux_ext *ax, struct type **tpp,
          *tpp = parse_type (xref_fd,
                             debug_info->external_aux + fh->iauxBase,
                             sh.index,
-                            (int *) NULL,
+                            NULL,
                             fh->fBigendian,
                             debug_info->ss + fh->issBase + sh.iss);
        }
@@ -4502,7 +4505,7 @@ static void
 add_symbol (struct symbol *s, struct symtab *symtab, struct block *b)
 {
   symbol_set_symtab (s, symtab);
-  dict_add_symbol (BLOCK_DICT (b), s);
+  mdict_add_symbol (BLOCK_MULTIDICT (b), s);
 }
 
 /* Add a new block B to a symtab S.  */
@@ -4730,7 +4733,7 @@ new_bvect (int nblocks)
 }
 
 /* Allocate and zero a new block of language LANGUAGE, and set its
-   BLOCK_DICT.  If function is non-zero, assume the block is
+   BLOCK_MULTIDICT.  If function is non-zero, assume the block is
    associated to a function, and make sure that the symbols are stored
    linearly; otherwise, store them hashed.  */
 
@@ -4743,9 +4746,9 @@ new_block (enum block_type type, enum language language)
   struct block *retval = XCNEW (struct block);
 
   if (type == FUNCTION_BLOCK)
-    BLOCK_DICT (retval) = dict_create_linear_expandable (language);
+    BLOCK_MULTIDICT (retval) = mdict_create_linear_expandable (language);
   else
-    BLOCK_DICT (retval) = dict_create_hashed_expandable (language);
+    BLOCK_MULTIDICT (retval) = mdict_create_hashed_expandable (language);
 
   return retval;
 }
@@ -4808,8 +4811,6 @@ elfmdebug_build_psymtabs (struct objfile *objfile,
 void
 _initialize_mdebugread (void)
 {
-  basic_type_data = register_objfile_data ();
-
   mdebug_register_index
     = register_symbol_register_impl (LOC_REGISTER, &mdebug_register_funcs);
   mdebug_regparm_index
This page took 0.050937 seconds and 4 git commands to generate.