gdb: remove COMPUNIT_DIRNAME macro, add getter/setter
authorSimon Marchi <simon.marchi@efficios.com>
Sat, 20 Nov 2021 03:15:30 +0000 (22:15 -0500)
committerSimon Marchi <simon.marchi@polymtl.ca>
Sun, 6 Feb 2022 20:48:18 +0000 (15:48 -0500)
Add a getter and a setter for a compunit_symtab's dirname.  Remove the
corresponding macro and adjust all callers.

Change-Id: If2f39b295fd26822586485e04a8b8b5aa5cc9b2e

gdb/buildsym-legacy.c
gdb/buildsym.c
gdb/dwarf2/read.c
gdb/jit.c
gdb/macrotab.c
gdb/symmisc.c
gdb/symtab.h

index aa7b8b56b89a5c05b885c7ed083ad720319f120d..7659f53cbe097a26135369675f9c17717fb6da0f 100644 (file)
@@ -303,7 +303,7 @@ restart_symtab (struct compunit_symtab *cust,
   buildsym_compunit
     = new struct buildsym_compunit (cust->objfile (),
                                    name,
-                                   COMPUNIT_DIRNAME (cust),
+                                   cust->dirname (),
                                    compunit_language (cust),
                                    start_addr,
                                    cust);
index 22727277613120e5b42531710bc8e4eb8fb5330d..b96d154331a3dac5687850c09136ce33dfc28220 100644 (file)
@@ -1005,8 +1005,8 @@ buildsym_compunit::end_symtab_with_blockvector (struct block *static_block,
     {
       /* Reallocate the dirname on the symbol obstack.  */
       const char *comp_dir = m_comp_dir.get ();
-      COMPUNIT_DIRNAME (cu) = obstack_strdup (&m_objfile->objfile_obstack,
-                                             comp_dir);
+      cu->set_dirname (obstack_strdup (&m_objfile->objfile_obstack,
+                                      comp_dir));
     }
 
   /* Save the debug format string (if any) in the symtab.  */
index 7e62d11aa2cc71be999126cc4a0f46de76ad2965..cd3e6afbe87f2e84d3baf2867144debac3eee4ba 100644 (file)
@@ -10723,7 +10723,7 @@ dwarf2_cu::setup_type_unit_groups (struct die_info *die)
          struct compunit_symtab *cust = tug_unshare->compunit_symtab;
          m_builder.reset (new struct buildsym_compunit
                           (cust->objfile (), "",
-                           COMPUNIT_DIRNAME (cust),
+                           cust->dirname (),
                            compunit_language (cust),
                            0, cust));
          list_in_scope = get_builder ()->get_file_symbols ();
@@ -10775,7 +10775,7 @@ dwarf2_cu::setup_type_unit_groups (struct die_info *die)
       struct compunit_symtab *cust = tug_unshare->compunit_symtab;
       m_builder.reset (new struct buildsym_compunit
                       (cust->objfile (), "",
-                       COMPUNIT_DIRNAME (cust),
+                       cust->dirname (),
                        compunit_language (cust),
                        0, cust));
       list_in_scope = get_builder ()->get_file_symbols ();
index 6366c7511e6b8e2b8bf33ca6d484f9a8d3d8cacb..eda96b0003f1fb1f7fdefc036362e74a4120e863 100644 (file)
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -513,7 +513,7 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
   add_compunit_symtab_to_objfile (cust);
 
   /* JIT compilers compile in memory.  */
-  COMPUNIT_DIRNAME (cust) = NULL;
+  cust->set_dirname (nullptr);
 
   /* Copy over the linetable entry if one was provided.  */
   if (stab->linetable)
index 92d68e78e71dacc6bf056818f46b7baca7a5fc38..7ca3f312d3303bb7e7179e3f33534c92fc612a15 100644 (file)
@@ -1066,7 +1066,7 @@ macro_source_fullname (struct macro_source_file *file)
   const char *comp_dir = NULL;
 
   if (file->table->compunit_symtab != NULL)
-    comp_dir = COMPUNIT_DIRNAME (file->table->compunit_symtab);
+    comp_dir = file->table->compunit_symtab->dirname ();
 
   if (comp_dir == NULL || IS_ABSOLUTE_PATH (file->filename))
     return file->filename;
index b946fc8bde0448dc4594853ba39bca4494578799..9c882a468b278b486aab5a212ab472f2b0fc3b9e 100644 (file)
@@ -782,9 +782,8 @@ maintenance_info_symtabs (const char *regexp, int from_tty)
                                         (cust->producer () != nullptr
                                          ? cust->producer () : "(null)"));
                        printf_filtered ("    dirname %s\n",
-                                        COMPUNIT_DIRNAME (cust) != NULL
-                                        ? COMPUNIT_DIRNAME (cust)
-                                        : "(null)");
+                                        (cust->dirname () != NULL
+                                         ? cust->dirname () : "(null)"));
                        printf_filtered ("    blockvector"
                                         " ((struct blockvector *) %s)\n",
                                         host_address_to_string
index 1e3f95dc92faac150b8558644661b13b65de02c9..b72abab2ab5a3c05fbd2cedbc0d7490271b858b7 100644 (file)
@@ -1413,8 +1413,7 @@ using symtab_range = next_range<symtab>;
 #define SYMTAB_OBJFILE(symtab) \
   (SYMTAB_COMPUNIT (symtab)->objfile ())
 #define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace)
-#define SYMTAB_DIRNAME(symtab) \
-  COMPUNIT_DIRNAME (SYMTAB_COMPUNIT (symtab))
+#define SYMTAB_DIRNAME(symtab) (SYMTAB_COMPUNIT (symtab)->dirname ())
 
 /* Compunit symtabs contain the actual "symbol table", aka blockvector, as well
    as the list of all source files (what gdb has historically associated with
@@ -1502,6 +1501,16 @@ struct compunit_symtab
     m_producer = producer;
   }
 
+  const char *dirname () const
+  {
+    return m_dirname;
+  }
+
+  void set_dirname (const char *dirname)
+  {
+    m_dirname = dirname;
+  }
+
   /* Make PRIMARY_FILETAB the primary filetab of this compunit symtab.
 
      PRIMARY_FILETAB must already be a filetab of this compunit symtab.  */
@@ -1551,7 +1560,7 @@ struct compunit_symtab
   const char *m_producer;
 
   /* Directory in which it was compiled, or NULL if we don't know.  */
-  const char *dirname;
+  const char *m_dirname;
 
   /* List of all symbol scope blocks for this symtab.  It is shared among
      all symtabs in a given compilation unit.  */
@@ -1597,7 +1606,6 @@ struct compunit_symtab
 
 using compunit_symtab_range = next_range<compunit_symtab>;
 
-#define COMPUNIT_DIRNAME(cust) ((cust)->dirname)
 #define COMPUNIT_BLOCKVECTOR(cust) ((cust)->blockvector)
 #define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section)
 #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid)