Get rid of -Wodr warning (PR build/23399)
[deliverable/binutils-gdb.git] / gdb / mdebugread.c
index d9f119af40c9e0a5934f96691830c9f6ad70902b..39276ab3bd450dc89dea00bd8b929ddfeda7e574 100644 (file)
@@ -46,7 +46,7 @@
 #include "filenames.h"
 #include "objfiles.h"
 #include "gdb_obstack.h"
-#include "buildsym.h"
+#include "buildsym-legacy.h"
 #include "stabsread.h"
 #include "complaints.h"
 #include "demangle.h"
@@ -125,40 +125,39 @@ struct symloc
 static void
 index_complaint (const char *arg1)
 {
-  complaint (&symfile_complaints, _("bad aux index at symbol %s"), arg1);
+  complaint (_("bad aux index at symbol %s"), arg1);
 }
 
 static void
 unknown_ext_complaint (const char *arg1)
 {
-  complaint (&symfile_complaints, _("unknown external symbol %s"), arg1);
+  complaint (_("unknown external symbol %s"), arg1);
 }
 
 static void
 basic_type_complaint (int arg1, const char *arg2)
 {
-  complaint (&symfile_complaints, _("cannot map ECOFF basic type 0x%x for %s"),
+  complaint (_("cannot map ECOFF basic type 0x%x for %s"),
             arg1, arg2);
 }
 
 static void
 bad_tag_guess_complaint (const char *arg1)
 {
-  complaint (&symfile_complaints,
-            _("guessed tag type of %s incorrectly"), arg1);
+  complaint (_("guessed tag type of %s incorrectly"), arg1);
 }
 
 static void
 bad_rfd_entry_complaint (const char *arg1, int arg2, int arg3)
 {
-  complaint (&symfile_complaints, _("bad rfd entry for %s: file %d, index %d"),
+  complaint (_("bad rfd entry for %s: file %d, index %d"),
             arg1, arg2, arg3);
 }
 
 static void
 unexpected_type_code_complaint (const char *arg1)
 {
-  complaint (&symfile_complaints, _("unexpected type code for %s"), arg1);
+  complaint (_("unexpected type code for %s"), arg1);
 }
 
 /* Macros and extra defs.  */
@@ -345,7 +344,6 @@ mdebug_build_psymtabs (minimal_symbol_reader &reader,
   debug_info = info;
 
   stabsread_new_init ();
-  buildsym_new_init ();
   free_header_files ();
   init_header_files ();
         
@@ -356,9 +354,8 @@ mdebug_build_psymtabs (minimal_symbol_reader &reader,
       char *fdr_end;
       FDR *fdr_ptr;
 
-      info->fdr = (FDR *) obstack_alloc (&objfile->objfile_obstack,
-                                        (info->symbolic_header.ifdMax
-                                         * sizeof (FDR)));
+      info->fdr = (FDR *) XOBNEWVEC (&objfile->objfile_obstack, FDR,
+                                    info->symbolic_header.ifdMax);
       fdr_src = (char *) info->external_fdr;
       fdr_end = (fdr_src
                 + info->symbolic_header.ifdMax * swap->external_fdr_size);
@@ -508,9 +505,7 @@ add_pending (FDR *fh, char *sh, struct type *t)
   /* Make sure we do not make duplicates.  */
   if (!p)
     {
-      p = ((struct mdebug_pending *)
-          obstack_alloc (&mdebugread_objfile->objfile_obstack,
-                         sizeof (struct mdebug_pending)));
+      p = XOBNEW (&mdebugread_objfile->objfile_obstack, mdebug_pending);
       p->s = sh;
       p->t = t;
       p->next = pending_list[f_idx];
@@ -524,8 +519,7 @@ add_pending (FDR *fh, char *sh, struct type *t)
 static void
 reg_value_complaint (int regnum, int num_regs, const char *sym)
 {
-  complaint (&symfile_complaints,
-            _("bad register number %d (max %d) in symbol %s"),
+  complaint (_("bad register number %d (max %d) in symbol %s"),
              regnum, num_regs - 1, sym);
 }
 
@@ -750,8 +744,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
                     keep_counting = 0;
                     break;
                   default:
-                    complaint (&symfile_complaints,
-                               _("unknown symbol type 0x%x"), sh->st);
+                    complaint (_("unknown symbol type 0x%x"), sh->st);
                     break;
                 }
             }
@@ -968,8 +961,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
                break;
 
              default:
-               complaint (&symfile_complaints,
-                          _("declaration block contains "
+               complaint (_("declaration block contains "
                             "unhandled symbol type %d"),
                           tsym.st);
              }
@@ -1031,10 +1023,10 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
           (.Fxx or .xxfake or empty) for unnamed struct/union/enums.
           Alpha cc puts out an sh->iss of zero for those.  */
        if (sh->iss == 0 || name[0] == '.' || name[0] == '\0')
-         TYPE_TAG_NAME (t) = NULL;
+         TYPE_NAME (t) = NULL;
        else
-         TYPE_TAG_NAME (t) = obconcat (&mdebugread_objfile->objfile_obstack,
-                                       name, (char *) NULL);
+         TYPE_NAME (t) = obconcat (&mdebugread_objfile->objfile_obstack,
+                                   name, (char *) NULL);
 
        TYPE_CODE (t) = type_code;
        TYPE_LENGTH (t) = sh->value;
@@ -1174,10 +1166,8 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
          SYMBOL_DOMAIN (s) = LABEL_DOMAIN;
          SYMBOL_ACLASS_INDEX (s) = LOC_CONST;
          SYMBOL_TYPE (s) = objfile_type (mdebugread_objfile)->builtin_void;
-         e = ((struct mdebug_extra_func_info *)
-              obstack_alloc (&mdebugread_objfile->objfile_obstack,
-                             sizeof (struct mdebug_extra_func_info)));
-         memset (e, 0, sizeof (struct mdebug_extra_func_info));
+         e = OBSTACK_ZALLOC (&mdebugread_objfile->objfile_obstack,
+                             mdebug_extra_func_info);
          SYMBOL_VALUE_BYTES (s) = (gdb_byte *) e;
          e->numargs = top_stack->numargs;
          e->pdr.framereg = -1;
@@ -1250,8 +1240,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
          ;
        }
       else
-       complaint (&symfile_complaints,
-                  _("stEnd with storage class %d not handled"), sh->sc);
+       complaint (_("stEnd with storage class %d not handled"), sh->sc);
 
       pop_parse_stack ();      /* Restore previous lexical context.  */
       break;
@@ -1363,7 +1352,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
     case stConstant:
       break;                   /* constant */
     default:
-      complaint (&symfile_complaints, _("unknown symbol type 0x%x"), sh->st);
+      complaint (_("unknown symbol type 0x%x"), sh->st);
       break;
     }
 
@@ -1604,8 +1593,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
          else if (t->bt == btEnum)
            ;
          else
-           complaint (&symfile_complaints,
-                      _("can't handle TIR fBitfield for %s"),
+           complaint (_("can't handle TIR fBitfield for %s"),
                       sym_name);
        }
       else
@@ -1634,8 +1622,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 
       if (rf == -1)
        {
-         complaint (&symfile_complaints,
-                    _("unable to cross ref btIndirect for %s"), sym_name);
+         complaint (_("unable to cross ref btIndirect for %s"), sym_name);
          return basic_type (btInt, mdebugread_objfile);
        }
       xref_fh = get_rfd (fd, rf);
@@ -1699,10 +1686,10 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
          /* Do not set the tag name if it is a compiler generated tag name
             (.Fxx or .xxfake or empty) for unnamed struct/union/enums.  */
          if (name[0] == '.' || name[0] == '\0')
-           TYPE_TAG_NAME (tp) = NULL;
-         else if (TYPE_TAG_NAME (tp) == NULL
-                  || strcmp (TYPE_TAG_NAME (tp), name) != 0)
-           TYPE_TAG_NAME (tp)
+           TYPE_NAME (tp) = NULL;
+         else if (TYPE_NAME (tp) == NULL
+                  || strcmp (TYPE_NAME (tp), name) != 0)
+           TYPE_NAME (tp)
              = ((const char *)
                 obstack_copy0 (&mdebugread_objfile->objfile_obstack,
                                name, strlen (name)));
@@ -1754,8 +1741,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
       ax += cross_ref (fd, ax, &tp, type_code, &name, bigend, sym_name);
       if (tp == (struct type *) NULL)
        {
-         complaint (&symfile_complaints,
-                    _("unable to cross ref btTypedef for %s"), sym_name);
+         complaint (_("unable to cross ref btTypedef for %s"), sym_name);
          tp = basic_type (btInt, mdebugread_objfile);
        }
     }
@@ -1801,8 +1787,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
 
   /* Complain for illegal continuations due to corrupt aux entries.  */
   if (t->continued)
-    complaint (&symfile_complaints,
-              _("illegal TIR continued for %s"), sym_name);
+    complaint (_("illegal TIR continued for %s"), sym_name);
 
   return tp;
 }
@@ -1864,8 +1849,7 @@ upgrade_type (int fd, struct type **tpp, int tq, union aux_ext *ax, int bigend,
          else due to corrupt aux entries.  */
       if (TYPE_CODE (indx) != TYPE_CODE_INT)
        {
-         complaint (&symfile_complaints,
-                    _("illegal array index type for %s, assuming int"),
+         complaint (_("illegal array index type for %s, assuming int"),
                     sym_name);
          indx = objfile_type (mdebugread_objfile)->builtin_int;
        }
@@ -1913,7 +1897,7 @@ upgrade_type (int fd, struct type **tpp, int tq, union aux_ext *ax, int bigend,
       return 0;
 
     default:
-      complaint (&symfile_complaints, _("unknown type qualifier 0x%x"), tq);
+      complaint (_("unknown type qualifier 0x%x"), tq);
       return 0;
     }
 }
@@ -1945,8 +1929,7 @@ parse_procedure (PDR *pr, struct compunit_symtab *search_symtab,
        {
          /* Static procedure at address pr->adr.  Sigh.  */
          /* FIXME-32x64.  assuming pr->adr fits in long.  */
-         complaint (&symfile_complaints,
-                    _("can't handle PDR for static proc at 0x%lx"),
+         complaint (_("can't handle PDR for static proc at 0x%lx"),
                     (unsigned long) pr->adr);
          return;
        }
@@ -2009,7 +1992,7 @@ parse_procedure (PDR *pr, struct compunit_symtab *search_symtab,
     }
   else
     {
-      complaint (&symfile_complaints, _("PDR for %s, but no symbol"), sh_name);
+      complaint (_("PDR for %s, but no symbol"), sh_name);
 #if 1
       return;
 #else
@@ -2177,12 +2160,9 @@ parse_external (EXTR *es, int bigend, struct section_offsets *section_offsets,
    numbers can go back and forth, apparently we can live
    with that and do not need to reorder our linetables.  */
 
-static void parse_lines (FDR *, PDR *, struct linetable *, int,
-                        struct partial_symtab *, CORE_ADDR);
-
 static void
 parse_lines (FDR *fh, PDR *pr, struct linetable *lt, int maxlines,
-            struct partial_symtab *pst, CORE_ADDR lowest_pdr_addr)
+            CORE_ADDR textlow, CORE_ADDR lowest_pdr_addr)
 {
   unsigned char *base;
   int j, k;
@@ -2213,7 +2193,7 @@ parse_lines (FDR *fh, PDR *pr, struct linetable *lt, int maxlines,
        halt = base + fh->cbLine;
       base += pr->cbLineOffset;
 
-      adr = pst->textlow + pr->adr - lowest_pdr_addr;
+      adr = textlow + pr->adr - lowest_pdr_addr;
 
       l = adr >> 2;            /* in words */
       for (lineno = pr->lnLow; base < halt;)
@@ -2235,8 +2215,7 @@ parse_lines (FDR *fh, PDR *pr, struct linetable *lt, int maxlines,
             with corrupt binaries.  */
          if (lt->nitems >= maxlines)
            {
-             complaint (&symfile_complaints,
-                        _("guessed size of linetable for %s incorrectly"),
+             complaint (_("guessed size of linetable for %s incorrectly"),
                         fdr_name (fh));
              break;
            }
@@ -2249,8 +2228,7 @@ parse_lines (FDR *fh, PDR *pr, struct linetable *lt, int maxlines,
 static void
 function_outside_compilation_unit_complaint (const char *arg1)
 {
-  complaint (&symfile_complaints,
-            _("function `%s' appears to be defined "
+  complaint (_("function `%s' appears to be defined "
               "outside of all compilation units"),
             arg1);
 }
@@ -2370,8 +2348,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
       && (bfd_get_section_flags (cur_bfd, text_sect) & SEC_RELOC))
     relocatable = 1;
 
-  extern_tab = (EXTR *) obstack_alloc (&objfile->objfile_obstack,
-                                      sizeof (EXTR) * hdr->iextMax);
+  extern_tab = XOBNEWVEC (&objfile->objfile_obstack, EXTR, hdr->iextMax);
 
   includes_allocated = 30;
   includes_used = 0;
@@ -2413,10 +2390,8 @@ parse_partial_symbols (minimal_symbol_reader &reader,
   }
 
   /* Allocate the global pending list.  */
-  pending_list =
-    ((struct mdebug_pending **)
-     obstack_alloc (&objfile->objfile_obstack,
-                   hdr->ifdMax * sizeof (struct mdebug_pending *)));
+  pending_list = XOBNEWVEC (&objfile->objfile_obstack, mdebug_pending *,
+                           hdr->ifdMax);
   memset (pending_list, 0,
          hdr->ifdMax * sizeof (struct mdebug_pending *));
 
@@ -2494,15 +2469,13 @@ parse_partial_symbols (minimal_symbol_reader &reader,
          external symbols.  */
       if (ext_in->ifd < -1 || ext_in->ifd >= hdr->ifdMax)
        {
-         complaint (&symfile_complaints,
-                    _("bad ifd for external symbol: %d (max %ld)"),
+         complaint (_("bad ifd for external symbol: %d (max %ld)"),
                     ext_in->ifd, hdr->ifdMax);
          continue;
        }
       if (ext_in->asym.iss < 0 || ext_in->asym.iss >= hdr->issExtMax)
        {
-         complaint (&symfile_complaints,
-                    _("bad iss for external symbol: %ld (max %ld)"),
+         complaint (_("bad iss for external symbol: %ld (max %ld)"),
                     ext_in->asym.iss, hdr->issExtMax);
          continue;
        }
@@ -2643,12 +2616,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
       /* Determine the start address for this object file from the
          file header and relocate it, except for Irix 5.2 zero fh->adr.  */
       if (fh->cpd)
-       {
-         textlow = fh->adr;
-         if (relocatable || textlow != 0)
-           textlow += ANOFFSET (objfile->section_offsets,
-                                SECT_OFF_TEXT (objfile));
-       }
+       textlow = fh->adr;
       else
        textlow = 0;
       pst = start_psymtab_common (objfile,
@@ -2656,8 +2624,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                                  textlow,
                                  objfile->global_psymbols,
                                  objfile->static_psymbols);
-      pst->read_symtab_private = obstack_alloc (&objfile->objfile_obstack,
-                                               sizeof (struct symloc));
+      pst->read_symtab_private = XOBNEW (&objfile->objfile_obstack, symloc);
       memset (pst->read_symtab_private, 0, sizeof (struct symloc));
 
       save_pst = pst;
@@ -2696,7 +2663,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
        psymtab_language = prev_language;
       PST_PRIVATE (pst)->pst_language = psymtab_language;
 
-      pst->texthigh = pst->textlow;
+      pst->set_text_high (pst->raw_text_low ());
 
       /* For stabs-in-ecoff files, the second symbol must be @stab.
          This symbol is emitted by mips-tfile to signal that the
@@ -2742,8 +2709,6 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                                                  mst_file_text, sh.sc,
                                                  objfile);
                        }
-                     sh.value += ANOFFSET (objfile->section_offsets,
-                                           SECT_OFF_TEXT (objfile));
                      procaddr = sh.value;
 
                      isym = AUX_GET_ISYM (fh->fBigendian,
@@ -2761,10 +2726,11 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 
                          /* Kludge for Irix 5.2 zero fh->adr.  */
                          if (!relocatable
-                         && (pst->textlow == 0 || procaddr < pst->textlow))
-                           pst->textlow = procaddr;
-                         if (high > pst->texthigh)
-                           pst->texthigh = high;
+                             && (!pst->text_low_valid
+                                 || procaddr < pst->raw_text_low ()))
+                           pst->set_text_low (procaddr);
+                         if (high > pst->raw_text_high ())
+                           pst->set_text_high (high);
                        }
                    }
                  else if (sh.st == stStatic)
@@ -2786,8 +2752,6 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                           record_minimal_symbol (reader, namestring, sh.value,
                                                  mst_file_data, sh.sc,
                                                  objfile);
-                         sh.value += ANOFFSET (objfile->section_offsets,
-                                               SECT_OFF_DATA (objfile));
                          break;
 
                        default:
@@ -2797,8 +2761,6 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                           record_minimal_symbol (reader, namestring, sh.value,
                                                  mst_file_bss, sh.sc,
                                                  objfile);
-                         sh.value += ANOFFSET (objfile->section_offsets,
-                                               SECT_OFF_BSS (objfile));
                          break;
                        }
                    }
@@ -2851,22 +2813,16 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 
                  case N_TEXT | N_EXT:
                  case N_NBTEXT | N_EXT:
-                   sh.value += ANOFFSET (objfile->section_offsets,
-                                         SECT_OFF_TEXT (objfile));
                    goto record_it;
 
                  case N_DATA | N_EXT:
                  case N_NBDATA | N_EXT:
-                   sh.value += ANOFFSET (objfile->section_offsets,
-                                         SECT_OFF_DATA (objfile));
                    goto record_it;
 
                  case N_BSS:
                  case N_BSS | N_EXT:
                  case N_NBBSS | N_EXT:
                  case N_SETV | N_EXT:          /* FIXME, is this in BSS?  */
-                   sh.value += ANOFFSET (objfile->section_offsets,
-                                         SECT_OFF_BSS (objfile));
                    goto record_it;
 
                  case N_ABS | N_EXT:
@@ -2889,8 +2845,6 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                    continue;
 
                  case N_DATA:
-                   sh.value += ANOFFSET (objfile->section_offsets,
-                                         SECT_OFF_DATA (objfile));
                    goto record_it;
 
                  case N_UNDF | N_EXT:
@@ -3091,27 +3045,24 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                    switch (p[1])
                      {
                      case 'S':
-                       sh.value += ANOFFSET (objfile->section_offsets,
-                                             SECT_OFF_DATA (objfile));
-
                        if (gdbarch_static_transform_name_p (gdbarch))
                          namestring = gdbarch_static_transform_name
                                         (gdbarch, namestring);
 
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_STATIC,
+                                            SECT_OFF_DATA (objfile),
                                             &objfile->static_psymbols,
                                             sh.value,
                                             psymtab_language, objfile);
                        continue;
                      case 'G':
-                       sh.value += ANOFFSET (objfile->section_offsets,
-                                             SECT_OFF_DATA (objfile));
                        /* The addresses in these entries are reported
                           to be wrong.  See the code that reads 'G's
                           for symtabs.  */
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_STATIC,
+                                            SECT_OFF_DATA (objfile),
                                             &objfile->global_psymbols,
                                             sh.value,
                                             psymtab_language, objfile);
@@ -3130,6 +3081,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                          {
                            add_psymbol_to_list (namestring, p - namestring, 1,
                                                 STRUCT_DOMAIN, LOC_TYPEDEF,
+                                                -1,
                                                 &objfile->static_psymbols,
                                                 0, psymtab_language, objfile);
                            if (p[2] == 't')
@@ -3138,6 +3090,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                                add_psymbol_to_list (namestring,
                                                     p - namestring, 1,
                                                     VAR_DOMAIN, LOC_TYPEDEF,
+                                                    -1,
                                                     &objfile->static_psymbols,
                                                     0, psymtab_language,
                                                     objfile);
@@ -3151,6 +3104,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                          {
                            add_psymbol_to_list (namestring, p - namestring, 1,
                                                 VAR_DOMAIN, LOC_TYPEDEF,
+                                                -1,
                                                 &objfile->static_psymbols,
                                                 0, psymtab_language, objfile);
                          }
@@ -3215,6 +3169,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                                   symtabs.  */
                                add_psymbol_to_list (p, q - p, 1,
                                                     VAR_DOMAIN, LOC_CONST,
+                                                    -1,
                                                     &objfile->static_psymbols,
                                                     0, psymtab_language,
                                                     objfile);
@@ -3232,7 +3187,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                      case 'c':
                        /* Constant, e.g. from "const" in Pascal.  */
                        add_psymbol_to_list (namestring, p - namestring, 1,
-                                            VAR_DOMAIN, LOC_CONST,
+                                            VAR_DOMAIN, LOC_CONST, -1,
                                             &objfile->static_psymbols,
                                             0, psymtab_language, objfile);
                        continue;
@@ -3248,10 +3203,9 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                            function_outside_compilation_unit_complaint (name);
                            xfree (name);
                          }
-                       sh.value += ANOFFSET (objfile->section_offsets,
-                                             SECT_OFF_TEXT (objfile));
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_BLOCK,
+                                            SECT_OFF_TEXT (objfile),
                                             &objfile->static_psymbols,
                                             sh.value,
                                             psymtab_language, objfile);
@@ -3272,10 +3226,9 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                            function_outside_compilation_unit_complaint (name);
                            xfree (name);
                          }
-                       sh.value += ANOFFSET (objfile->section_offsets,
-                                             SECT_OFF_TEXT (objfile));
                        add_psymbol_to_list (namestring, p - namestring, 1,
                                             VAR_DOMAIN, LOC_BLOCK,
+                                            SECT_OFF_TEXT (objfile),
                                             &objfile->global_psymbols,
                                             sh.value,
                                             psymtab_language, objfile);
@@ -3321,8 +3274,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                           searching to the end of every string looking for
                           a backslash.  */
 
-                       complaint (&symfile_complaints,
-                                  _("unknown symbol descriptor `%c'"), p[1]);
+                       complaint (_("unknown symbol descriptor `%c'"), p[1]);
 
                        /* Ignore it; perhaps it is an extension that we don't
                           know about.  */
@@ -3334,9 +3286,9 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 
                  case N_ENDM:
                    /* Solaris 2 end of module, finish current partial
-                      symbol table.  dbx_end_psymtab will set
-                      pst->texthigh to the proper value, which is
-                      necessary if a module compiled without
+                      symbol table.  dbx_end_psymtab will set the
+                      high text address of PST to the proper value,
+                      which is necessary if a module compiled without
                       debugging info follows this module.  */
                    if (pst
                        && gdbarch_sofun_address_maybe_missing (gdbarch))
@@ -3348,8 +3300,8 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                    continue;
 
                  case N_RBRAC:
-                   if (sh.value > save_pst->texthigh)
-                     save_pst->texthigh = sh.value;
+                   if (sh.value > save_pst->raw_text_high ())
+                     save_pst->set_text_high (sh.value);
                    continue;
                  case N_EINCL:
                  case N_DSLINE:
@@ -3386,8 +3338,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                  default:
                    /* If we haven't found it yet, ignore it.  It's
                       probably some new type we don't know about yet.  */
-                   complaint (&symfile_complaints,
-                              _("unknown symbol type %s"),
+                   complaint (_("unknown symbol type %s"),
                               hex_string (type_code)); /* CUR_SYMBOL_TYPE */
                    continue;
                  }
@@ -3405,6 +3356,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
              char *name;
              enum address_class theclass;
              CORE_ADDR minsym_value;
+             short section = -1;
 
              (*swap_sym_in) (cur_bfd,
                              ((char *) debug_info->external_sym
@@ -3439,21 +3391,18 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                  /* The value of a stEnd symbol is the displacement from the
                     corresponding start symbol value, do not relocate it.  */
                  if (sh.st != stEnd)
-                   sh.value += ANOFFSET (objfile->section_offsets,
-                                         SECT_OFF_TEXT (objfile));
+                   section = SECT_OFF_TEXT (objfile);
                  break;
                case scData:
                case scSData:
                case scRData:
                case scPData:
                case scXData:
-                 sh.value += ANOFFSET (objfile->section_offsets,
-                                       SECT_OFF_DATA (objfile));
+                 section = SECT_OFF_DATA (objfile);
                  break;
                case scBss:
                case scSBss:
-                 sh.value += ANOFFSET (objfile->section_offsets,
-                                       SECT_OFF_BSS (objfile));
+                 section = SECT_OFF_BSS (objfile);
                  break;
                }
 
@@ -3488,8 +3437,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                  if (new_sdx <= cur_sdx)
                    {
                      /* This should not happen either... FIXME.  */
-                     complaint (&symfile_complaints,
-                                _("bad proc end in aux found from symbol %s"),
+                     complaint (_("bad proc end in aux found from symbol %s"),
                                 name);
                      new_sdx = cur_sdx + 1;    /* Don't skip backward.  */
                    }
@@ -3518,11 +3466,13 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                  if (sh.st == stProc)
                    add_psymbol_to_list (name, strlen (name), 1,
                                         VAR_DOMAIN, LOC_BLOCK,
+                                        section,
                                         &objfile->global_psymbols,
                                         sh.value, psymtab_language, objfile);
                  else
                    add_psymbol_to_list (name, strlen (name), 1,
                                         VAR_DOMAIN, LOC_BLOCK,
+                                        section,
                                         &objfile->static_psymbols,
                                         sh.value, psymtab_language, objfile);
 
@@ -3539,12 +3489,13 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 
                  /* Kludge for Irix 5.2 zero fh->adr.  */
                  if (!relocatable
-                     && (pst->textlow == 0 || procaddr < pst->textlow))
-                   pst->textlow = procaddr;
+                     && (!pst->text_low_valid
+                         || procaddr < pst->raw_text_low ()))
+                   pst->set_text_low (procaddr);
 
                  high = procaddr + sh.value;
-                 if (high > pst->texthigh)
-                   pst->texthigh = high;
+                 if (high > pst->raw_text_high ())
+                   pst->set_text_high (high);
                  continue;
 
                case stStatic:  /* Variable */
@@ -3587,7 +3538,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                      && sh.index != cur_sdx + 2)
                    {
                      add_psymbol_to_list (name, strlen (name), 1,
-                                          STRUCT_DOMAIN, LOC_TYPEDEF,
+                                          STRUCT_DOMAIN, LOC_TYPEDEF, -1,
                                           &objfile->static_psymbols,
                                           0, psymtab_language, objfile);
                    }
@@ -3598,8 +3549,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                  if (new_sdx <= cur_sdx)
                    {
                      /* This happens with the Ultrix kernel.  */
-                     complaint (&symfile_complaints,
-                                _("bad aux index at block symbol %s"), name);
+                     complaint (_("bad aux index at block symbol %s"), name);
                      new_sdx = cur_sdx + 1;    /* Don't skip backward.  */
                    }
                  cur_sdx = new_sdx;
@@ -3619,15 +3569,15 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                default:
                  /* Both complaints are valid:  one gives symbol name,
                     the other the offending symbol type.  */
-                 complaint (&symfile_complaints, _("unknown local symbol %s"),
+                 complaint (_("unknown local symbol %s"),
                             name);
-                 complaint (&symfile_complaints, _("with type %d"), sh.st);
+                 complaint (_("with type %d"), sh.st);
                  cur_sdx++;
                  continue;
                }
              /* Use this gdb symbol.  */
              add_psymbol_to_list (name, strlen (name), 1,
-                                  VAR_DOMAIN, theclass,
+                                  VAR_DOMAIN, theclass, section,
                                   &objfile->static_psymbols,
                                   sh.value, psymtab_language, objfile);
            skip:
@@ -3645,6 +3595,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
              SYMR *psh;
              char *name;
              CORE_ADDR svalue;
+             short section;
 
              if (ext_ptr->ifd != f_idx)
                internal_error (__FILE__, __LINE__,
@@ -3658,23 +3609,21 @@ parse_partial_symbols (minimal_symbol_reader &reader,
              svalue = psh->value;
              switch (psh->sc)
                {
+               default:
                case scText:
                case scRConst:
-                 svalue += ANOFFSET (objfile->section_offsets,
-                                     SECT_OFF_TEXT (objfile));
+                 section = SECT_OFF_TEXT (objfile);
                  break;
                case scData:
                case scSData:
                case scRData:
                case scPData:
                case scXData:
-                 svalue += ANOFFSET (objfile->section_offsets,
-                                     SECT_OFF_DATA (objfile));
+                 section = SECT_OFF_DATA (objfile);
                  break;
                case scBss:
                case scSBss:
-                 svalue += ANOFFSET (objfile->section_offsets,
-                                     SECT_OFF_BSS (objfile));
+                 section = SECT_OFF_BSS (objfile);
                  break;
                }
 
@@ -3709,6 +3658,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
              name = debug_info->ssext + psh->iss;
              add_psymbol_to_list (name, strlen (name), 1,
                                   VAR_DOMAIN, theclass,
+                                  section,
                                   &objfile->global_psymbols,
                                   svalue, psymtab_language, objfile);
            }
@@ -3719,7 +3669,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
       fdr_to_pst[f_idx].pst
        = dbx_end_psymtab (objfile, save_pst,
                           psymtab_include_list, includes_used,
-                          -1, save_pst->texthigh,
+                          -1, save_pst->raw_text_high (),
                           dependency_list, dependencies_used,
                           textlow_not_set);
       includes_used = 0;
@@ -3738,15 +3688,15 @@ parse_partial_symbols (minimal_symbol_reader &reader,
          other cases.  */
       save_pst = fdr_to_pst[f_idx].pst;
       if (save_pst != NULL
-         && save_pst->textlow != 0
+         && save_pst->text_low_valid
          && !(objfile->flags & OBJF_REORDERED))
        {
          ALL_OBJFILE_PSYMTABS (objfile, pst)
          {
            if (save_pst != pst
-               && save_pst->textlow >= pst->textlow
-               && save_pst->textlow < pst->texthigh
-               && save_pst->texthigh > pst->texthigh)
+               && save_pst->raw_text_low () >= pst->raw_text_low ()
+               && save_pst->raw_text_low () < pst->raw_text_high ()
+               && save_pst->raw_text_high () > pst->raw_text_high ())
              {
                objfile->flags |= OBJF_REORDERED;
                break;
@@ -3771,11 +3721,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 =
-       ((struct partial_symtab **)
-        obstack_alloc (&objfile->objfile_obstack,
-                       ((fh->crfd - 1)
-                        * sizeof (struct partial_symtab *))));
+      pst->dependencies = XOBNEWVEC (&objfile->objfile_obstack,
+                                    partial_symtab *, (fh->crfd - 1));
       for (s_idx = 1; s_idx < fh->crfd; s_idx++)
        {
          RFDT rh;
@@ -3786,7 +3733,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
                          &rh);
          if (rh < 0 || rh >= hdr->ifdMax)
            {
-             complaint (&symfile_complaints, _("bad file number %ld"), rh);
+             complaint (_("bad file number %ld"), rh);
              continue;
            }
 
@@ -3872,9 +3819,9 @@ handle_psymbol_enumerators (struct objfile *objfile, FDR *fh, int stype,
       /* Note that the value doesn't matter for enum constants
          in psymtabs, just in symtabs.  */
       add_psymbol_to_list (name, strlen (name), 1,
-                          VAR_DOMAIN, LOC_CONST,
-                          &objfile->static_psymbols,
-                          0, psymtab_language, objfile);
+                          VAR_DOMAIN, LOC_CONST, -1,
+                          &objfile->static_psymbols, 0,
+                          psymtab_language, objfile);
       ext_sym += external_sym_size;
     }
 }
@@ -3952,7 +3899,7 @@ psymtab_to_symtab_1 (struct objfile *objfile,
   /* Do nothing if this is a dummy psymtab.  */
 
   if (pst->n_global_syms == 0 && pst->n_static_syms == 0
-      && pst->textlow == 0 && pst->texthigh == 0)
+      && !pst->text_low_valid && !pst->text_high_valid)
     return;
 
   /* Now read the symbols for this symtab.  */
@@ -4061,19 +4008,17 @@ psymtab_to_symtab_1 (struct objfile *objfile,
                {
                  /* Make up special symbol to contain
                     procedure specific info.  */
-                 struct mdebug_extra_func_info *e =
-                   ((struct mdebug_extra_func_info *)
-                    obstack_alloc (&mdebugread_objfile->objfile_obstack,
-                                   sizeof (struct mdebug_extra_func_info)));
+                 mdebug_extra_func_info *e
+                   = OBSTACK_ZALLOC (&mdebugread_objfile->objfile_obstack,
+                                     mdebug_extra_func_info);
                  struct symbol *s = new_symbol (MDEBUG_EFI_SYMBOL_NAME);
 
-                 memset (e, 0, sizeof (struct mdebug_extra_func_info));
                  SYMBOL_DOMAIN (s) = LABEL_DOMAIN;
                  SYMBOL_ACLASS_INDEX (s) = LOC_CONST;
                  SYMBOL_TYPE (s) = objfile_type (objfile)->builtin_void;
                  SYMBOL_VALUE_BYTES (s) = (gdb_byte *) e;
                  e->pdr.framereg = -1;
-                 add_symbol_to_list (s, &local_symbols);
+                 add_symbol_to_list (s, get_local_symbols ());
                }
            }
          else if (sh.st == stLabel)
@@ -4089,7 +4034,7 @@ psymtab_to_symtab_1 (struct objfile *objfile,
                  /* Handle encoded stab line number.  */
                  valu += ANOFFSET (section_offsets,
                                    SECT_OFF_TEXT (objfile));
-                 record_line (current_subfile, sh.index,
+                 record_line (get_current_subfile (), sh.index,
                               gdbarch_addr_bits_remove (gdbarch, valu));
                }
            }
@@ -4098,13 +4043,12 @@ psymtab_to_symtab_1 (struct objfile *objfile,
            /* These are generated by gcc-2.x, do not complain.  */
            ;
          else
-           complaint (&symfile_complaints,
-                      _("unknown stabs symbol %s"), name);
+           complaint (_("unknown stabs symbol %s"), name);
        }
 
       if (! last_symtab_ended)
        {
-         cust = end_symtab (pst->texthigh, SECT_OFF_TEXT (objfile));
+         cust = end_symtab (pst->raw_text_high (), SECT_OFF_TEXT (objfile));
          end_stabs ();
        }
 
@@ -4180,7 +4124,7 @@ psymtab_to_symtab_1 (struct objfile *objfile,
       top_stack->cur_st = COMPUNIT_FILETABS (cust);
       top_stack->cur_block
        = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), STATIC_BLOCK);
-      BLOCK_START (top_stack->cur_block) = pst->textlow;
+      BLOCK_START (top_stack->cur_block) = pst->text_low (objfile);
       BLOCK_END (top_stack->cur_block) = 0;
       top_stack->blocktype = stFile;
       top_stack->cur_type = 0;
@@ -4241,7 +4185,7 @@ psymtab_to_symtab_1 (struct objfile *objfile,
                }
 
              parse_lines (fh, pr_block.data (), lines, maxlines,
-                          pst, lowest_pdr_addr);
+                          pst->text_low (objfile), lowest_pdr_addr);
              if (lines->nitems < fh->cline)
                lines = shrink_linetable (lines);
 
@@ -4458,8 +4402,7 @@ cross_ref (int fd, union aux_ext *ax, struct type **tpp,
                                        + fh->iauxBase + sh.index)->a_ti,
                                      &tir);
          if (tir.tq0 != tqNil)
-           complaint (&symfile_complaints,
-                      _("illegal tq0 in forward typedef for %s"), sym_name);
+           complaint (_("illegal tq0 in forward typedef for %s"), sym_name);
          switch (tir.bt)
            {
            case btVoid:
@@ -4495,8 +4438,7 @@ cross_ref (int fd, union aux_ext *ax, struct type **tpp,
              break;
 
            default:
-             complaint (&symfile_complaints,
-                        _("illegal bt %d in forward typedef for %s"), tir.bt,
+             complaint (_("illegal bt %d in forward typedef for %s"), tir.bt,
                         sym_name);
              *tpp = init_type (mdebugread_objfile, type_code, 0, NULL);
              break;
@@ -4736,9 +4678,8 @@ new_psymtab (const char *name, struct objfile *objfile)
 
   /* Keep a backpointer to the file's symbols.  */
 
-  psymtab->read_symtab_private = obstack_alloc (&objfile->objfile_obstack,
-                                               sizeof (struct symloc));
-  memset (psymtab->read_symtab_private, 0, sizeof (struct symloc));
+  psymtab->read_symtab_private
+    = OBSTACK_ZALLOC (&objfile->objfile_obstack, symloc);
   CUR_BFD (psymtab) = cur_bfd;
   DEBUG_SWAP (psymtab) = debug_swap;
   DEBUG_INFO (psymtab) = debug_info;
@@ -4863,9 +4804,7 @@ elfmdebug_build_psymtabs (struct objfile *objfile,
 
   minimal_symbol_reader reader (objfile);
 
-  info = ((struct ecoff_debug_info *)
-         obstack_alloc (&objfile->objfile_obstack,
-                        sizeof (struct ecoff_debug_info)));
+  info = XOBNEW (&objfile->objfile_obstack, ecoff_debug_info);
 
   if (!(*swap->read_debug_info) (abfd, sec, info))
     error (_("Error reading ECOFF debugging information: %s"),
This page took 0.036199 seconds and 4 git commands to generate.