gdb: remove SYMTAB_LANGUAGE macro, add getter/setter
authorSimon Marchi <simon.marchi@efficios.com>
Sat, 20 Nov 2021 13:47:30 +0000 (08:47 -0500)
committerSimon Marchi <simon.marchi@efficios.com>
Sun, 6 Feb 2022 21:03:44 +0000 (16:03 -0500)
Add a getter and a setter for a symtab's language.  Remove the
corresponding macro and adjust all callers.

Change-Id: I9f4d840b11c19f80f39bac1bce020fdd1739e11f

gdb/buildsym.c
gdb/dwarf2/read.c
gdb/linespec.c
gdb/mdebugread.c
gdb/source-cache.c
gdb/source.c
gdb/stack.c
gdb/symfile.c
gdb/symmisc.c
gdb/symtab.c
gdb/symtab.h

index 2a99a96e2e600b6485dde3f34b3e80a81e9a58ff..27206f97b2b0a5bd5c9232d1b9c0c42335bd291f 100644 (file)
@@ -991,7 +991,7 @@ buildsym_compunit::end_symtab_with_blockvector (struct block *static_block,
         we created the subfile, and we may have altered our
         opinion of what language it is from things we found in
         the symbols.  */
-      symtab->language = subfile->language;
+      symtab->set_language (subfile->language);
     }
 
   /* Make sure the filetab of main_subfile is the primary filetab of the CU.  */
index fb138de86adcb8e5bcb3aea0405b8d95cbe58761..3bbd253d841333fd0bf1cb036c8e044b2c98f5f2 100644 (file)
@@ -9477,8 +9477,8 @@ process_full_comp_unit (dwarf2_cu *cu, enum language pretend_language)
         compilation is from a C file generated by language preprocessors, do
         not set the language if it was already deduced by start_subfile.  */
       if (!(cu->per_cu->lang == language_c
-           && cust->primary_filetab ()->language != language_unknown))
-       cust->primary_filetab ()->language = cu->per_cu->lang;
+           && cust->primary_filetab ()->language () != language_unknown))
+       cust->primary_filetab ()->set_language (cu->per_cu->lang);
 
       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
         produce DW_AT_location with location lists but it can be possibly
@@ -9562,8 +9562,8 @@ process_full_type_unit (dwarf2_cu *cu,
             do not set the language if it was already deduced by
             start_subfile.  */
          if (!(cu->per_cu->lang == language_c
-               && cust->primary_filetab ()->language != language_c))
-           cust->primary_filetab ()->language = cu->per_cu->lang;
+               && cust->primary_filetab ()->language () != language_c))
+           cust->primary_filetab ()->set_language (cu->per_cu->lang);
        }
     }
   else
index d50251578338a48d303a459dc9a02edd2986418c..acbcc0916cc57e6bf4f23be10111761b6dcf5d0e 100644 (file)
@@ -4424,7 +4424,7 @@ add_matching_symbols_to_info (const char *name,
             which we don't have debug info.  Check for a minimal symbol in
             this case.  */
          if (prev_len == info->result.symbols->size ()
-             && elt->language == language_asm)
+             && elt->language () == language_asm)
            search_minsyms_for_name (info, lookup_name, pspace, elt);
        }
     }
index 3dc6a8b72971e18f16346af8ad8bc104e2c10ade..192fafa5d02ab5ff61d002fff620a4cbf049811d 100644 (file)
@@ -4084,10 +4084,11 @@ mdebug_expand_psymtab (legacy_psymtab *pst, struct objfile *objfile)
 
          /* The proper language was already determined when building
             the psymtab, use it.  */
-         cust->primary_filetab ()->language = PST_PRIVATE (pst)->pst_language;
+         cust->primary_filetab ()->set_language
+           (PST_PRIVATE (pst)->pst_language);
        }
 
-      psymtab_language = cust->primary_filetab ()->language;
+      psymtab_language = cust->primary_filetab ()->language ();
 
       lines = cust->primary_filetab ()->linetable ();
 
index 373607fc9cb4e63b8926c744a079c419f6a5dbc8..d2447ca5007716497b7a980703340b2ef7fef35d 100644 (file)
@@ -231,7 +231,7 @@ source_cache::ensure (struct symtab *s)
     {
 #ifdef HAVE_SOURCE_HIGHLIGHT
       bool already_styled = false;
-      const char *lang_name = get_language_name (SYMTAB_LANGUAGE (s));
+      const char *lang_name = get_language_name (s->language ());
       if (lang_name != nullptr && use_gnu_source_highlight)
        {
          /* The global source highlight object, or null if one was
index ee896264277f2b779d4c2f63a46c7c711ebb16b3..e99fff8852546adcd271ba87cd0571c145b407ff 100644 (file)
@@ -722,7 +722,8 @@ info_source_command (const char *ignore, int from_tty)
     printf_filtered (_("Contains %d line%s.\n"), (int) offsets->size (),
                     offsets->size () == 1 ? "" : "s");
 
-  printf_filtered (_("Source language is %s.\n"), language_str (s->language));
+  printf_filtered (_("Source language is %s.\n"),
+                  language_str (s->language ()));
   printf_filtered (_("Producer is %s.\n"),
                   (cust->producer ()) != nullptr
                    ? cust->producer () : _("unknown"));
index c7269e2ac32617364b9f1d5669c14a63ed4b7dd2..8d5983e64391cd101d55d0492fd86a4e978999bb 100644 (file)
@@ -1638,7 +1638,7 @@ info_frame_command_core (struct frame_info *fi, bool selected_frame_p)
 
   if (s)
     printf_filtered (" source language %s.\n",
-                    language_str (s->language));
+                    language_str (s->language ()));
 
   {
     /* Address of the argument list for this frame, or 0.  */
index 46c42014a9f6b14ab4c019089b4b0ba3f5f5ac72..1a64fc797423762178dde552fff39da31a86e052 100644 (file)
@@ -2780,7 +2780,7 @@ allocate_symtab (struct compunit_symtab *cust, const char *filename)
 
   symtab->filename = objfile->intern (filename);
   symtab->fullname = NULL;
-  symtab->language = deduce_language_from_filename (filename);
+  symtab->set_language (deduce_language_from_filename (filename));
 
   /* This can be very verbose with lots of headers.
      Only print at higher debug levels.  */
index 2fdd0f6262740722f7a0e4ad2f416140fd01a7c9..24b2915a3acc03107b236210061b9208b3c0875a 100644 (file)
@@ -256,7 +256,7 @@ dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile)
                    objfile_name (objfile),
                    host_address_to_string (objfile));
   fprintf_filtered (outfile, "Language: %s\n",
-                   language_str (symtab->language));
+                   language_str (symtab->language ()));
 
   /* First print the line table.  */
   l = symtab->linetable ();
@@ -370,11 +370,11 @@ dump_symtab (struct symtab *symtab, struct ui_file *outfile)
      because certain routines used during dump_symtab() use the current
      language to print an image of the symbol.  We'll restore it later.
      But use only real languages, not placeholders.  */
-  if (symtab->language != language_unknown
-      && symtab->language != language_auto)
+  if (symtab->language () != language_unknown
+      && symtab->language () != language_auto)
     {
       scoped_restore_current_language save_lang;
-      set_language (symtab->language);
+      set_language (symtab->language ());
       dump_symtab_1 (symtab, outfile);
     }
   else
index f796ee4bd36239f38b9c270a37e3741cfbf17e36..65359374fef61081047c70077145301f6c093d01 100644 (file)
@@ -407,7 +407,7 @@ compunit_language (const struct compunit_symtab *cust)
 
 /* The language of the compunit symtab is the language of its primary
    source file.  */
-  return SYMTAB_LANGUAGE (symtab);
+  return symtab->language ();
 }
 
 /* See symtab.h.  */
@@ -3710,7 +3710,7 @@ find_function_start_sal_1 (CORE_ADDR func_addr, obj_section *section,
 
   if (funfirstline && sal.symtab != NULL
       && (sal.symtab->compunit ()->locations_valid ()
-         || SYMTAB_LANGUAGE (sal.symtab) == language_asm))
+         || sal.symtab->language () == language_asm))
     {
       struct gdbarch *gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
 
@@ -3840,7 +3840,7 @@ skip_prologue_sal (struct symtab_and_line *sal)
      is likely to be the wrong choice.  */
   if (sal->symtab != nullptr
       && sal->explicit_line
-      && SYMTAB_LANGUAGE (sal->symtab) == language_asm)
+      && sal->symtab->language () == language_asm)
     return;
 
   scoped_restore_current_pspace_and_thread restore_pspace_thread;
@@ -4023,7 +4023,7 @@ skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
         The GNU assembler emits separate line notes for each instruction
         in a multi-instruction macro, but compilers generally will not
         do this.  */
-      if (prologue_sal.symtab->language != language_asm)
+      if (prologue_sal.symtab->language () != language_asm)
        {
          struct linetable *linetable = prologue_sal.symtab->linetable ();
          int idx = 0;
index 8881f4e5c02b1898ad398f93cddea5ef5ad594cb..28309695bca361890f23ba872020b1d0d537b6d0 100644 (file)
@@ -1393,6 +1393,16 @@ struct symtab
     m_linetable = linetable;
   }
 
+  enum language language () const
+  {
+    return m_language;
+  }
+
+  void set_language (enum language language)
+  {
+    m_language = language;
+  }
+
   /* Unordered chain of all filetabs in the compunit,  with the exception
      that the "main" source file is the first entry in the list.  */
 
@@ -1413,7 +1423,7 @@ struct symtab
 
   /* Language of this source file.  */
 
-  enum language language;
+  enum language m_language;
 
   /* Full name of file as found by searching the source path.
      NULL if not yet known.  */
@@ -1425,7 +1435,6 @@ struct symtab
 
 using symtab_range = next_range<symtab>;
 
-#define SYMTAB_LANGUAGE(symtab) ((symtab)->language)
 #define SYMTAB_BLOCKVECTOR(symtab) \
   (symtab->compunit ()->blockvector ())
 #define SYMTAB_OBJFILE(symtab) \