gdb: Convert language la_get_compile_instance field to a method

This commit changes the language_data::la_get_compile_instance
function pointer member variable into a member function of
language_defn.  Unlike previous commits converting fields of
language_data to member function in language_defn, this field is NULL
for some languages.  As a result I had to change the API slightly so
that the base language_defn class provides an implementation.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* ada-lang.c (ada_language_data): Delete la_get_compile_instance
	initializer.
	* c-lang.c (class compile_instance): Declare.
	(c_language_data): Delete la_get_compile_instance initializer.
	(c_language::get_compile_instance): New member function.
	(cplus_language_data): Delete la_get_compile_instance initializer.
	(cplus_language::get_compile_instance): New member function.
	(asm_language_data): Delete la_get_compile_instance initializer.
	(minimal_language_data): Likewise.
	* c-lang.h (c_get_compile_context): Update comment.
	(cplus_get_compile_context): Update comment.
	* compile/compile.c (compile_to_object): Update calls, don't rely
	on function pointer being NULL.
	* d-lang.c (d_language_data): Delete la_get_compile_instance
	initializer.
	* 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 (language_data): Delete la_get_compile_instance field.
	(language_defn::get_compile_instance): New member function.
	* m2-lang.c (m2_language_data): Delete la_get_compile_instance
	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.
This commit is contained in:
Andrew Burgess 2020-05-02 09:12:30 +01:00
parent 4009ee92c4
commit 8e25bafe93
15 changed files with 62 additions and 32 deletions

View file

@ -37,6 +37,8 @@
#include "gdbcore.h"
#include "gdbarch.h"
class compile_instance;
/* Given a C string type, STR_TYPE, return the corresponding target
character set name. */
@ -924,7 +926,6 @@ extern const struct language_data c_language_data =
NULL, /* la_get_symbol_name_matcher */
default_search_name_hash,
&c_varobj_ops,
c_get_compile_context,
c_compute_program,
c_is_string_type_p,
"{...}" /* la_struct_too_deep_ellipsis */
@ -945,6 +946,12 @@ public:
{
c_language_arch_info (gdbarch, lai);
}
/* See language.h. */
compile_instance *get_compile_instance () const override
{
return c_get_compile_context ();
}
};
/* Single instance of the C language class. */
@ -1023,7 +1030,6 @@ extern const struct language_data cplus_language_data =
cp_get_symbol_name_matcher,
cp_search_name_hash,
&cplus_varobj_ops,
cplus_get_compile_context,
cplus_compute_program,
c_is_string_type_p,
"{...}" /* la_struct_too_deep_ellipsis */
@ -1114,6 +1120,12 @@ public:
{
return cp_lookup_transparent_type (name);
}
/* See language.h. */
compile_instance *get_compile_instance () const override
{
return cplus_get_compile_context ();
}
};
/* The single instance of the C++ language class. */
@ -1165,7 +1177,6 @@ extern const struct language_data asm_language_data =
default_search_name_hash,
&default_varobj_ops,
NULL,
NULL,
c_is_string_type_p,
"{...}" /* la_struct_too_deep_ellipsis */
};
@ -1235,7 +1246,6 @@ extern const struct language_data minimal_language_data =
default_search_name_hash,
&default_varobj_ops,
NULL,
NULL,
c_is_string_type_p,
"{...}" /* la_struct_too_deep_ellipsis */
};