[PATCHv2,06/13] gdb: Convert language la_lookup_transparent_type field to a method

Message ID afb1ba05c41f596f144aefd0f63cc9efe0e539e3.1589555076.git.andrew.burgess@embecosm.com
State New
Headers show
Series
  • Starting to convert languages to separate classes
Related show

Commit Message

Andrew Burgess May 15, 2020, 3:06 p.m.
This commit changes the language_data::la_lookup_transparent_type
function pointer member variable into a member function of
language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* ada-lang.c (ada_language_data): Delete
	la_lookup_transparent_type initializer.
	* c-lang.c (c_language_data): Likewise.
	(cplus_language_data): Likewise.
	(cplus_language::lookup_transparent_type): New member function.
	(asm_language_data): Delete la_lookup_transparent_type
	initializer.
	(minimal_language_data): Likewise.
	* d-lang.c (d_language_data): Likewise.
	* f-lang.c (f_language_data): Likewise.
	* go-lang.c (go_language_data): Likewise.
	* language.c (unknown_language_data): Likewise.
	(auto_language_data): Likewise.
	* language.h (struct language_data): Delete
	la_lookup_transparent_type field.
	(language_defn::lookup_transparent_type): New member function.
	* m2-lang.c (m2_language_data): Delete la_lookup_transparent_type
	initializer.
	* objc-lang.c (objc_language_data): Likewise.
	* opencl-lang.c (opencl_language_data): Likewise.
	* p-lang.c (pascal_language_data): Likewise.
	* rust-lang.c (rust_language_data): Likewise.
	* symtab.c (symbol_matches_domain): Update call.
---
 gdb/ChangeLog     | 26 ++++++++++++++++++++++++++
 gdb/ada-lang.c    |  1 -
 gdb/c-lang.c      | 10 ++++++----
 gdb/d-lang.c      |  1 -
 gdb/f-lang.c      |  1 -
 gdb/go-lang.c     |  1 -
 gdb/language.c    |  2 --
 gdb/language.h    | 10 +++++++---
 gdb/m2-lang.c     |  1 -
 gdb/objc-lang.c   |  1 -
 gdb/opencl-lang.c |  1 -
 gdb/p-lang.c      |  1 -
 gdb/rust-lang.c   |  1 -
 gdb/symtab.c      |  2 +-
 14 files changed, 40 insertions(+), 19 deletions(-)

-- 
2.25.4

Patch

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 7e6ee9e5757..e2d9aa7ab3a 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -13985,7 +13985,6 @@  extern const struct language_data ada_language_data =
   NULL,                         /* name_of_this */
   true,                         /* la_store_sym_names_in_linkage_form_p */
   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
-  basic_lookup_transparent_type,        /* lookup_transparent_type */
   ada_la_decode,                /* Language specific symbol demangler */
   ada_sniff_from_mangled_name,
   NULL,                         /* Language specific
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
index 84303954dd7..2eead3d8305 100644
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -911,7 +911,6 @@  extern const struct language_data c_language_data =
   NULL,				/* name_of_this */
   true,				/* la_store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   NULL,				/* Language specific symbol demangler */
   NULL,
   NULL,				/* Language specific
@@ -1012,7 +1011,6 @@  extern const struct language_data cplus_language_data =
   "this",                       /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
   cp_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  cp_lookup_transparent_type,   /* lookup_transparent_type */
   gdb_demangle,			/* Language specific symbol demangler */
   gdb_sniff_from_mangled_name,
   cp_class_name_from_physname,  /* Language specific
@@ -1112,6 +1110,12 @@  class cplus_language : public language_defn
     lai->bool_type_symbol = "bool";
     lai->bool_type_default = builtin->builtin_bool;
   }
+
+  /* See language.h.  */
+  struct type *lookup_transparent_type (const char *name) const override
+  {
+    return cp_lookup_transparent_type (name);
+  }
 };
 
 /* The single instance of the C++ language class.  */
@@ -1149,7 +1153,6 @@  extern const struct language_data asm_language_data =
   NULL,				/* name_of_this */
   true,				/* la_store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   NULL,				/* Language specific symbol demangler */
   NULL,
   NULL,				/* Language specific
@@ -1221,7 +1224,6 @@  extern const struct language_data minimal_language_data =
   NULL,				/* name_of_this */
   true,				/* la_store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   NULL,				/* Language specific symbol demangler */
   NULL,
   NULL,				/* Language specific
diff --git a/gdb/d-lang.c b/gdb/d-lang.c
index 778d77313c9..8c4ee44ac97 100644
--- a/gdb/d-lang.c
+++ b/gdb/d-lang.c
@@ -165,7 +165,6 @@  extern const struct language_data d_language_data =
   "this",
   false,			/* la_store_sym_names_in_linkage_form_p */
   d_lookup_symbol_nonlocal,
-  basic_lookup_transparent_type,
   d_demangle,			/* Language specific symbol demangler.  */
   d_sniff_from_mangled_name,
   NULL,				/* Language specific
diff --git a/gdb/f-lang.c b/gdb/f-lang.c
index 1eeb5070dee..32435fa856a 100644
--- a/gdb/f-lang.c
+++ b/gdb/f-lang.c
@@ -616,7 +616,6 @@  extern const struct language_data f_language_data =
   NULL,                    	/* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
   cp_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
 
   /* We could support demangling here to provide module namespaces
      also for inferiors with only minimal symbol table (ELF symbols).
diff --git a/gdb/go-lang.c b/gdb/go-lang.c
index a8b478d5a3c..edd4e7f167e 100644
--- a/gdb/go-lang.c
+++ b/gdb/go-lang.c
@@ -550,7 +550,6 @@  extern const struct language_data go_language_data =
   NULL,				/* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal, 
-  basic_lookup_transparent_type,
   go_demangle,			/* Language specific symbol demangler.  */
   go_sniff_from_mangled_name,
   NULL,				/* Language specific
diff --git a/gdb/language.c b/gdb/language.c
index 4807ab82b67..d06cf4ac71a 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -825,7 +825,6 @@  extern const struct language_data unknown_language_data =
   "this",        	    	/* name_of_this */
   true,				/* store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   unk_lang_demangle,		/* Language specific symbol demangler */
   NULL,
   unk_lang_class_name,		/* Language specific
@@ -893,7 +892,6 @@  extern const struct language_data auto_language_data =
   "this",		        /* name_of_this */
   false,			/* store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   unk_lang_demangle,		/* Language specific symbol demangler */
   NULL,
   unk_lang_class_name,		/* Language specific
diff --git a/gdb/language.h b/gdb/language.h
index b928e10bb80..a5ca641194f 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -315,9 +315,6 @@  struct language_data
        const struct block *,
        const domain_enum);
 
-    /* Find the definition of the type with the given name.  */
-    struct type *(*la_lookup_transparent_type) (const char *);
-
     /* Return demangled language symbol, or NULL.  */
     char *(*la_demangle) (const char *mangled, int options);
 
@@ -503,6 +500,13 @@  struct language_defn : language_data
   virtual void language_arch_info (struct gdbarch *,
 				   struct language_arch_info *) const = 0;
 
+  /* Find the definition of the type with the given name.  */
+
+  virtual struct type *lookup_transparent_type (const char *name) const
+  {
+    return basic_lookup_transparent_type (name);
+  }
+
   /* List of all known languages.  */
   static const struct language_defn *languages[nr_languages];
 };
diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c
index de12f30fee1..71e26869424 100644
--- a/gdb/m2-lang.c
+++ b/gdb/m2-lang.c
@@ -375,7 +375,6 @@  extern const struct language_data m2_language_data =
   NULL,		                /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   NULL,				/* Language specific symbol demangler */
   NULL,
   NULL,				/* Language specific
diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
index 87e5e681ec4..040226c81d5 100644
--- a/gdb/objc-lang.c
+++ b/gdb/objc-lang.c
@@ -390,7 +390,6 @@  extern const struct language_data objc_language_data =
   "self",		        /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   objc_demangle,		/* Language specific symbol demangler */
   objc_sniff_from_mangled_name,
   NULL,				/* Language specific
diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c
index 2b7febe7cf4..55baac56b8c 100644
--- a/gdb/opencl-lang.c
+++ b/gdb/opencl-lang.c
@@ -1050,7 +1050,6 @@  extern const struct language_data opencl_language_data =
   NULL,                         /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   NULL,				/* Language specific symbol demangler */
   NULL,
   NULL,				/* Language specific
diff --git a/gdb/p-lang.c b/gdb/p-lang.c
index 7899a656449..287c01f2009 100644
--- a/gdb/p-lang.c
+++ b/gdb/p-lang.c
@@ -406,7 +406,6 @@  extern const struct language_data pascal_language_data =
   "this",		        /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
   basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   NULL,				/* Language specific symbol demangler */
   NULL,
   NULL,				/* Language specific class_name_from_physname */
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
index a8bc2a6d9f5..e12a941afe2 100644
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
@@ -2082,7 +2082,6 @@  extern const struct language_data rust_language_data =
   NULL,				/* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
   rust_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
   gdb_demangle,			/* Language specific symbol demangler */
   rust_sniff_from_mangled_name,
   NULL,				/* Language specific
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 2043d084140..817559fec1f 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -2738,7 +2738,7 @@  symbol_matches_domain (enum language symbol_language,
 struct type *
 lookup_transparent_type (const char *name)
 {
-  return current_language->la_lookup_transparent_type (name);
+  return current_language->lookup_transparent_type (name);
 }
 
 /* A helper for basic_lookup_transparent_type that interfaces with the