]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/gdb-stabs.h
Automatic date update in version.in
[thirdparty/binutils-gdb.git] / gdb / gdb-stabs.h
index 402cc16973dd02ac509ff6496532034547b08c2c..6a64f98141c091649c535b4fc38e048ba0f075d6 100644 (file)
@@ -1,6 +1,5 @@
 /* Definitions for symbol-reading containing "stabs", for GDB.
-   Copyright (C) 1992-1993, 1995-1997, 1999-2000, 2007-2012 Free
-   Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
    Contributed by Cygnus Support.  Written by John Gilmore.
 
    This file is part of GDB.
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#ifndef GDB_STABS_H
+#define GDB_STABS_H
+
 /* This file exists to hold the common definitions required of most of
    the symbol-readers that end up using stabs.  The common use of
    these `symbol-type-specific' customizations of the generic data
    structures makes the stabs-oriented symbol readers able to call
    each others' functions as required.  */
 
-#if !defined (GDBSTABS_H)
-#define GDBSTABS_H
-
-/* The stab_section_info chain remembers info from the ELF symbol table,
-   while psymtabs are being built for the other symbol tables in the 
-   objfile.  It is destroyed at the complation of psymtab-reading.
-   Any info that was used from it has been copied into psymtabs.  */
-
-struct stab_section_info
-  {
-    char *filename;
-    struct stab_section_info *next;
-    int found;                 /* Count of times it's found in searching.  */
-    size_t num_sections;
-    CORE_ADDR sections[1];
-  };
 
 /* Information is passed among various dbxread routines for accessing
-   symbol files.  A pointer to this structure is kept in the
-   deprecated_sym_stab_info field of the objfile struct.  */
+   symbol files.  A pointer to this structure is kept in the objfile,
+   using the dbx_objfile_data_key.  */
 
 struct dbx_symfile_info
   {
-    CORE_ADDR text_addr;       /* Start of text section */
-    int text_size;             /* Size of text section */
-    int symcount;              /* How many symbols are there in the file */
-    char *stringtab;           /* The actual string table */
-    int stringtab_size;                /* Its size */
-    file_ptr symtab_offset;    /* Offset in file to symbol table */
-    int symbol_size;           /* Bytes in a single symbol */
-    struct stab_section_info *stab_section_info;    /* Section starting points
-                                                      of the original .o files
-                                                      before linking.  */
+    ~dbx_symfile_info ();
+
+    CORE_ADDR text_addr = 0;   /* Start of text section */
+    int text_size = 0;         /* Size of text section */
+    int symcount = 0;          /* How many symbols are there in the file */
+    char *stringtab = nullptr;         /* The actual string table */
+    int stringtab_size = 0;            /* Its size */
+    file_ptr symtab_offset = 0;        /* Offset in file to symbol table */
+    int symbol_size = 0;               /* Bytes in a single symbol */
 
     /* See stabsread.h for the use of the following.  */
-    struct header_file *header_files;
-    int n_header_files;
-    int n_allocated_header_files;
+    struct header_file *header_files = nullptr;
+    int n_header_files = 0;
+    int n_allocated_header_files = 0;
 
     /* Pointers to BFD sections.  These are used to speed up the building of
        minimal symbols.  */
-    asection *text_section;
-    asection *data_section;
-    asection *bss_section;
+    asection *text_section = nullptr;
+    asection *data_section = nullptr;
+    asection *bss_section = nullptr;
 
     /* Pointer to the separate ".stab" section, if there is one.  */
-    asection *stab_section;
+    asection *stab_section = nullptr;
   };
 
-#define DBX_SYMFILE_INFO(o)    ((o)->deprecated_sym_stab_info)
+/* The tag used to find the DBX info attached to an objfile.  This is
+   global because it is referenced by several modules.  */
+extern objfile_key<dbx_symfile_info> dbx_objfile_data_key;
+
+#define DBX_SYMFILE_INFO(o)    (dbx_objfile_data_key.get (o))
 #define DBX_TEXT_ADDR(o)       (DBX_SYMFILE_INFO(o)->text_addr)
 #define DBX_TEXT_SIZE(o)       (DBX_SYMFILE_INFO(o)->text_size)
 #define DBX_SYMCOUNT(o)                (DBX_SYMFILE_INFO(o)->symcount)
@@ -86,4 +75,4 @@ struct dbx_symfile_info
 #define DBX_BSS_SECTION(o)     (DBX_SYMFILE_INFO(o)->bss_section)
 #define DBX_STAB_SECTION(o)    (DBX_SYMFILE_INFO(o)->stab_section)
 
-#endif /* GDBSTABS_H */
+#endif /* GDB_STABS_H */