Make "show remote exec-file" inferior-aware
[deliverable/binutils-gdb.git] / gdb / coffread.c
index 12f36b7917b0ea958948ec4047d23479d433a3c5..60efb59b1a341a89bae56ffde667aa9669efc1fa 100644 (file)
@@ -1,5 +1,5 @@
 /* Read coff symbol tables and convert to internal format, for GDB.
-   Copyright (C) 1987-2019 Free Software Foundation, Inc.
+   Copyright (C) 1987-2020 Free Software Foundation, Inc.
    Contributed by David D. Johnson, Brown University (ddj@cs.brown.edu).
 
    This file is part of GDB.
@@ -462,8 +462,7 @@ record_minimal_symbol (minimal_symbol_reader &reader,
       return NULL;
     }
 
-  return reader.record_full (cs->c_name, strlen (cs->c_name), true, address,
-                            type, section);
+  return reader.record_full (cs->c_name, true, address, type, section);
 }
 \f
 /* coff_symfile_init ()
@@ -641,7 +640,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
     {
       for (minimal_symbol *msym : objfile->msymbols ())
        {
-         const char *name = MSYMBOL_LINKAGE_NAME (msym);
+         const char *name = msym->linkage_name ();
 
          /* If the minimal symbols whose name are prefixed by "__imp_"
             or "_imp_", get rid of the prefix, and search the minimal
@@ -920,8 +919,8 @@ coff_symtab_read (minimal_symbol_reader &reader,
                     file with no symbols.  */
                  if (in_source_file)
                    complete_symtab (filestring,
-                   cs->c_value + ANOFFSET (objfile->section_offsets,
-                                           SECT_OFF_TEXT (objfile)),
+                                    (cs->c_value
+                                     + objfile->section_offsets[SECT_OFF_TEXT (objfile)]),
                                     main_aux.x_scn.x_scnlen);
                  in_source_file = 0;
                }
@@ -987,7 +986,7 @@ coff_symtab_read (minimal_symbol_reader &reader,
                    || cs->c_sclass == C_THUMBEXTFUNC
                    || cs->c_sclass == C_THUMBEXT
                    || (pe_file && (cs->c_sclass == C_STAT)))
-                 offset = ANOFFSET (objfile->section_offsets, sec);
+                 offset = objfile->section_offsets[sec];
 
                if (bfd_section->flags & SEC_CODE)
                  {
@@ -1114,8 +1113,7 @@ coff_symtab_read (minimal_symbol_reader &reader,
                            NULL, cstk.start_addr,
                            fcn_cs_saved.c_value
                            + fcn_aux_saved.x_sym.x_misc.x_fsize
-                           + ANOFFSET (objfile->section_offsets,
-                                       SECT_OFF_TEXT (objfile)));
+                           + objfile->section_offsets[SECT_OFF_TEXT (objfile)]);
              within_function = 0;
            }
          break;
@@ -1124,8 +1122,7 @@ coff_symtab_read (minimal_symbol_reader &reader,
          if (strcmp (cs->c_name, ".bb") == 0)
            {
              tmpaddr = cs->c_value;
-             tmpaddr += ANOFFSET (objfile->section_offsets,
-                                  SECT_OFF_TEXT (objfile));
+             tmpaddr += objfile->section_offsets[SECT_OFF_TEXT (objfile)];
              push_context (++depth, tmpaddr);
            }
          else if (strcmp (cs->c_name, ".eb") == 0)
@@ -1148,9 +1145,9 @@ coff_symtab_read (minimal_symbol_reader &reader,
                }
              if (*get_local_symbols () && !outermost_context_p ())
                {
-                 tmpaddr =
-                   cs->c_value + ANOFFSET (objfile->section_offsets,
-                                           SECT_OFF_TEXT (objfile));
+                 tmpaddr
+                   = (cs->c_value
+                      + objfile->section_offsets[SECT_OFF_TEXT (objfile)]);
                  /* Make a block for the local symbols within.  */
                  finish_block (0, cstk.old_blocks, NULL,
                                cstk.start_addr, tmpaddr);
@@ -1442,8 +1439,7 @@ enter_linenos (long file_offset, int first_line,
       if (L_LNNO32 (&lptr) && L_LNNO32 (&lptr) <= last_line)
        {
          CORE_ADDR addr = lptr.l_addr.l_paddr;
-         addr += ANOFFSET (objfile->section_offsets,
-                           SECT_OFF_TEXT (objfile));
+         addr += objfile->section_offsets[SECT_OFF_TEXT (objfile)];
          record_line (get_current_subfile (),
                       first_line + L_LNNO32 (&lptr),
                       gdbarch_addr_bits_remove (gdbarch, addr));
@@ -1503,15 +1499,15 @@ patch_opaque_types (struct symtab *s)
          && TYPE_CODE (SYMBOL_TYPE (real_sym)) == TYPE_CODE_PTR
          && TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (real_sym))) != 0)
        {
-         const char *name = SYMBOL_LINKAGE_NAME (real_sym);
+         const char *name = real_sym->linkage_name ();
          int hash = hashname (name);
          struct symbol *sym, *prev;
 
          prev = 0;
          for (sym = opaque_type_chain[hash]; sym;)
            {
-             if (name[0] == SYMBOL_LINKAGE_NAME (sym)[0]
-                 && strcmp (name + 1, SYMBOL_LINKAGE_NAME (sym) + 1) == 0)
+             if (name[0] == sym->linkage_name ()[0]
+                 && strcmp (name + 1, sym->linkage_name () + 1) == 0)
                {
                  if (prev)
                    {
@@ -1567,9 +1563,9 @@ process_coff_symbol (struct coff_symbol *cs,
 
   name = cs->c_name;
   name = EXTERNAL_NAME (name, objfile->obfd);
-  SYMBOL_SET_LANGUAGE (sym, get_current_subfile ()->language,
-                      &objfile->objfile_obstack);
-  SYMBOL_SET_NAMES (sym, name, strlen (name), 1, objfile);
+  sym->set_language (get_current_subfile ()->language,
+                    &objfile->objfile_obstack);
+  sym->compute_and_set_names (name, true, objfile->per_bfd);
 
   /* default assumptions */
   SYMBOL_VALUE (sym) = cs->c_value;
@@ -1578,8 +1574,7 @@ process_coff_symbol (struct coff_symbol *cs,
 
   if (ISFCN (cs->c_type))
     {
-      SYMBOL_VALUE (sym) += ANOFFSET (objfile->section_offsets,
-                                     SECT_OFF_TEXT (objfile));
+      SYMBOL_VALUE (sym) += objfile->section_offsets[SECT_OFF_TEXT (objfile)];
       SYMBOL_TYPE (sym) =
        lookup_function_type (decode_function_type (cs, cs->c_type,
                                                    aux, objfile));
@@ -1611,8 +1606,7 @@ process_coff_symbol (struct coff_symbol *cs,
          SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
          SET_SYMBOL_VALUE_ADDRESS (sym,
                                    (CORE_ADDR) cs->c_value
-                                   + ANOFFSET (objfile->section_offsets,
-                                               SECT_OFF_TEXT (objfile)));
+                                   + objfile->section_offsets[SECT_OFF_TEXT (objfile)]);
          add_symbol_to_list (sym, get_global_symbols ());
          break;
 
@@ -1622,8 +1616,7 @@ process_coff_symbol (struct coff_symbol *cs,
          SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
          SET_SYMBOL_VALUE_ADDRESS (sym,
                                    (CORE_ADDR) cs->c_value
-                                   + ANOFFSET (objfile->section_offsets,
-                                               SECT_OFF_TEXT (objfile)));
+                                   + objfile->section_offsets[SECT_OFF_TEXT (objfile)]);
          if (within_function)
            {
              /* Static symbol of local scope.  */
@@ -1694,7 +1687,7 @@ process_coff_symbol (struct coff_symbol *cs,
                }
              else
                TYPE_NAME (SYMBOL_TYPE (sym)) =
-                 xstrdup (SYMBOL_LINKAGE_NAME (sym));
+                 xstrdup (sym->linkage_name ());
            }
 
          /* Keep track of any type which points to empty structured
@@ -1708,7 +1701,7 @@ process_coff_symbol (struct coff_symbol *cs,
              && TYPE_CODE (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym)))
                 != TYPE_CODE_UNDEF)
            {
-             int i = hashname (SYMBOL_LINKAGE_NAME (sym));
+             int i = hashname (sym->linkage_name ());
 
              SYMBOL_VALUE_CHAIN (sym) = opaque_type_chain[i];
              opaque_type_chain[i] = sym;
@@ -1726,11 +1719,10 @@ process_coff_symbol (struct coff_symbol *cs,
             names for anonymous enums, structures, and unions, like
             "~0fake" or ".0fake".  Thanks, but no thanks...  */
          if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-           if (SYMBOL_LINKAGE_NAME (sym) != NULL
-               && *SYMBOL_LINKAGE_NAME (sym) != '~'
-               && *SYMBOL_LINKAGE_NAME (sym) != '.')
-             TYPE_NAME (SYMBOL_TYPE (sym)) =
-               xstrdup (SYMBOL_LINKAGE_NAME (sym));
+           if (sym->linkage_name () != NULL
+               && *sym->linkage_name () != '~'
+               && *sym->linkage_name () != '.')
+             TYPE_NAME (SYMBOL_TYPE (sym)) = xstrdup (sym->linkage_name ());
 
          add_symbol_to_list (sym, get_file_symbols ());
          break;
@@ -2108,7 +2100,7 @@ coff_read_enum_type (int index, int length, int lastsym,
          sym = allocate_symbol (objfile);
 
          name = obstack_strdup (&objfile->objfile_obstack, name);
-         SYMBOL_SET_LINKAGE_NAME (sym, name);
+         sym->set_linkage_name (name);
          SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
          SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
          SYMBOL_VALUE (sym) = ms->c_value;
@@ -2155,7 +2147,7 @@ coff_read_enum_type (int index, int length, int lastsym,
          struct symbol *xsym = syms->symbol[j];
 
          SYMBOL_TYPE (xsym) = type;
-         TYPE_FIELD_NAME (type, n) = SYMBOL_LINKAGE_NAME (xsym);
+         TYPE_FIELD_NAME (type, n) = xsym->linkage_name ();
          SET_FIELD_ENUMVAL (TYPE_FIELD (type, n), SYMBOL_VALUE (xsym));
          if (SYMBOL_VALUE (xsym) < 0)
            unsigned_enum = 0;
This page took 0.02822 seconds and 4 git commands to generate.