forked from Imagelibrary/binutils-gdb
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:
@@ -392,16 +392,6 @@ struct language_data
|
||||
/* Various operations on varobj. */
|
||||
const struct lang_varobj_ops *la_varobj_ops;
|
||||
|
||||
/* If this language allows compilation from the gdb command line,
|
||||
this method should be non-NULL. When called it should return
|
||||
an instance of struct gcc_context appropriate to the language.
|
||||
When defined this method must never return NULL; instead it
|
||||
should throw an exception on failure. The returned compiler
|
||||
instance is owned by its caller and must be deallocated by
|
||||
calling its 'destroy' method. */
|
||||
|
||||
compile_instance *(*la_get_compile_instance) (void);
|
||||
|
||||
/* This method must be defined if 'la_get_gcc_context' is defined.
|
||||
If 'la_get_gcc_context' is not defined, then this method is
|
||||
ignored.
|
||||
@@ -511,6 +501,19 @@ struct language_defn : language_data
|
||||
return ::iterate_over_symbols (block, name, domain, callback);
|
||||
}
|
||||
|
||||
/* If this language allows compilation from the gdb command line, then
|
||||
this method will return an instance of struct gcc_context appropriate
|
||||
to the language. If compilation for this language is generally
|
||||
supported, but something goes wrong then an exception is thrown. The
|
||||
returned compiler instance is owned by its caller and must be
|
||||
deallocated by the caller. If compilation is not supported for this
|
||||
language then this method returns NULL. */
|
||||
|
||||
virtual compile_instance *get_compile_instance () const
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/* List of all known languages. */
|
||||
static const struct language_defn *languages[nr_languages];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user