gnulib: define the path to gnulib's parent dir
[binutils-gdb.git] / gdb / dbxread.c
index e0cc2597f73235afd3d5845447a85c674fb8e629..cf35880b509b48735804a9e861ad3d9232037717 100644 (file)
@@ -298,8 +298,8 @@ static void add_old_header_file (const char *, int);
 
 static void add_this_object_header_file (int);
 
-static legacy_psymtab *start_psymtab (struct objfile *, const char *,
-                                            CORE_ADDR, int);
+static legacy_psymtab *start_psymtab (psymtab_storage *, struct objfile *,
+                                     const char *, CORE_ADDR, int);
 
 /* Free up old header file tables.  */
 
@@ -545,7 +545,9 @@ dbx_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
 
   /* Read stabs data from executable file and define symbols.  */
 
-  psymtab_storage *partial_symtabs = objfile->partial_symtabs.get ();
+  psymbol_functions *psf = new psymbol_functions ();
+  psymtab_storage *partial_symtabs = psf->get_partial_symtabs ().get ();
+  objfile->qf.emplace_front (psf);
   read_dbx_symtab (reader, partial_symtabs, objfile);
 
   /* Install any minimal symbols that have been collected as the current
@@ -1291,7 +1293,7 @@ read_dbx_symtab (minimal_symbol_reader &reader,
 
            if (!pst)
              {
-               pst = start_psymtab (objfile,
+               pst = start_psymtab (partial_symtabs, objfile,
                                     namestring, valu,
                                     first_so_symnum * symbol_size);
                pst->dirname = dirname_nso;
@@ -1432,10 +1434,10 @@ read_dbx_symtab (minimal_symbol_reader &reader,
          if (!p)
            continue;           /* Not a debugging symbol.   */
 
-         sym_len = 0;
+         sym_len = 0;
          sym_name = NULL;      /* pacify "gcc -Werror" */
-         if (psymtab_language == language_cplus)
-           {
+         if (psymtab_language == language_cplus)
+           {
              std::string name (namestring, p - namestring);
              gdb::unique_xmalloc_ptr<char> new_name
                = cp_canonicalize_string (name.c_str ());
@@ -1447,11 +1449,11 @@ read_dbx_symtab (minimal_symbol_reader &reader,
                }
            }
 
-         if (sym_len == 0)
-           {
-             sym_name = namestring;
-             sym_len = p - namestring;
-           }
+         if (sym_len == 0)
+           {
+             sym_name = namestring;
+             sym_len = p - namestring;
+           }
 
          /* Main processing section for debugging symbols which
             the initial read through the symbol tables needs to worry
@@ -1467,7 +1469,8 @@ read_dbx_symtab (minimal_symbol_reader &reader,
                                VAR_DOMAIN, LOC_STATIC,
                                data_sect_index,
                                psymbol_placement::STATIC,
-                               nlist.n_value, psymtab_language, objfile);
+                               nlist.n_value, psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
            case 'G':
@@ -1477,7 +1480,8 @@ read_dbx_symtab (minimal_symbol_reader &reader,
                                VAR_DOMAIN, LOC_STATIC,
                                data_sect_index,
                                psymbol_placement::GLOBAL,
-                               nlist.n_value, psymtab_language, objfile);
+                               nlist.n_value, psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
            case 'T':
@@ -1494,14 +1498,16 @@ read_dbx_symtab (minimal_symbol_reader &reader,
                  pst->add_psymbol (gdb::string_view (sym_name, sym_len),
                                    true, STRUCT_DOMAIN, LOC_TYPEDEF, -1,
                                    psymbol_placement::STATIC,
-                                   0, psymtab_language, objfile);
+                                   0, psymtab_language,
+                                   partial_symtabs, objfile);
                  if (p[2] == 't')
                    {
                      /* Also a typedef with the same name.  */
                      pst->add_psymbol (gdb::string_view (sym_name, sym_len),
                                        true, VAR_DOMAIN, LOC_TYPEDEF, -1,
                                        psymbol_placement::STATIC,
-                                       0, psymtab_language, objfile);
+                                       0, psymtab_language,
+                                       partial_symtabs, objfile);
                      p += 1;
                    }
                }
@@ -1513,7 +1519,8 @@ read_dbx_symtab (minimal_symbol_reader &reader,
                  pst->add_psymbol (gdb::string_view (sym_name, sym_len),
                                    true, VAR_DOMAIN, LOC_TYPEDEF, -1,
                                    psymbol_placement::STATIC,
-                                   0, psymtab_language, objfile);
+                                   0, psymtab_language,
+                                   partial_symtabs, objfile);
                }
            check_enum:
              /* If this is an enumerated type, we need to
@@ -1574,7 +1581,8 @@ read_dbx_symtab (minimal_symbol_reader &reader,
                      pst->add_psymbol (gdb::string_view (p, q - p), true,
                                        VAR_DOMAIN, LOC_CONST, -1,
                                        psymbol_placement::STATIC, 0,
-                                       psymtab_language, objfile);
+                                       psymtab_language,
+                                       partial_symtabs, objfile);
                      /* Point past the name.  */
                      p = q;
                      /* Skip over the value.  */
@@ -1592,7 +1600,8 @@ read_dbx_symtab (minimal_symbol_reader &reader,
              pst->add_psymbol (gdb::string_view (sym_name, sym_len), true,
                                VAR_DOMAIN, LOC_CONST, -1,
                                psymbol_placement::STATIC, 0,
-                               psymtab_language, objfile);
+                               psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
            case 'f':
@@ -1648,7 +1657,8 @@ read_dbx_symtab (minimal_symbol_reader &reader,
                                VAR_DOMAIN, LOC_BLOCK,
                                SECT_OFF_TEXT (objfile),
                                psymbol_placement::STATIC,
-                               nlist.n_value, psymtab_language, objfile);
+                               nlist.n_value, psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
              /* Global functions were ignored here, but now they
@@ -1707,7 +1717,8 @@ read_dbx_symtab (minimal_symbol_reader &reader,
                                VAR_DOMAIN, LOC_BLOCK,
                                SECT_OFF_TEXT (objfile),
                                psymbol_placement::GLOBAL,
-                               nlist.n_value, psymtab_language, objfile);
+                               nlist.n_value, psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
              /* Two things show up here (hopefully); static symbols of
@@ -1902,10 +1913,11 @@ read_dbx_symtab (minimal_symbol_reader &reader,
    (normal).  */
 
 static legacy_psymtab *
-start_psymtab (struct objfile *objfile, const char *filename, CORE_ADDR textlow,
-              int ldsymoff)
+start_psymtab (psymtab_storage *partial_symtabs, struct objfile *objfile,
+              const char *filename, CORE_ADDR textlow, int ldsymoff)
 {
-  legacy_psymtab *result = new legacy_psymtab (filename, objfile, textlow);
+  legacy_psymtab *result = new legacy_psymtab (filename, partial_symtabs,
+                                              objfile->per_bfd, textlow);
 
   result->read_symtab_private =
     XOBNEW (&objfile->objfile_obstack, struct symloc);
@@ -2028,7 +2040,7 @@ dbx_end_psymtab (struct objfile *objfile, psymtab_storage *partial_symtabs,
   for (i = 0; i < num_includes; i++)
     {
       legacy_psymtab *subpst =
-       new legacy_psymtab (include_list[i], objfile);
+       new legacy_psymtab (include_list[i], partial_symtabs, objfile->per_bfd);
 
       subpst->read_symtab_private =
        XOBNEW (&objfile->objfile_obstack, struct symloc);
@@ -2388,10 +2400,10 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
          struct block *block;
 
          if (outermost_context_p ())
-           {
+           {
              lbrac_mismatch_complaint (symnum);
-             break;
-           }
+             break;
+           }
 
          /* The following check is added before recording line 0 at
             end of function so as to handle hand-generated stabs