mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-04 22:15:12 +08:00
gdb: Convert language la_pass_by_reference field to a method
This commit changes the language_data::la_pass_by_reference function pointer member variable into a member function of language_defn. The interesting thing in this commit is that I have removed the default_pass_by_reference function entirely. This function only ever returned a language_pass_by_ref_info struct in its default state, so all uses of this function can be replaced by just default initialisation of a language_pass_by_ref_info variable. There should be no user visible changes after this commit. gdb/ChangeLog: * ada-lang.c (ada_language_data): Delete la_pass_by_reference initializer. * c-lang.c (c_language_data): Likewise. (cplus_language_data): Likewise. (cplus_language::pass_by_reference_info): New method. (asm_language_data): Delete la_pass_by_reference initializer. (minimal_language_data): Likewise. * cp-abi.c (cp_pass_by_reference): Remove use of default_pass_by_reference. * d-lang.c (d_language_data): Likewise. * f-lang.c (f_language_data): Likewise. * gnu-v3-abi.c (gnuv3_pass_by_reference): Remove use of default_pass_by_reference. * go-lang.c (go_language_data): Likewise. * language.c (language_pass_by_reference): Update. (default_pass_by_reference): Delete. (unknown_language_data): Delete la_pass_by_reference initializer. (auto_language_data): Likewise. * language.h (struct language_data): Delete la_pass_by_reference field. (language_defn::pass_by_reference_info): New member function. (default_pass_by_reference): Delete declaration. * m2-lang.c (m2_language_data): Delete la_pass_by_reference 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:
@ -1,3 +1,35 @@
|
|||||||
|
2020-06-02 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
|
* ada-lang.c (ada_language_data): Delete la_pass_by_reference
|
||||||
|
initializer.
|
||||||
|
* c-lang.c (c_language_data): Likewise.
|
||||||
|
(cplus_language_data): Likewise.
|
||||||
|
(cplus_language::pass_by_reference_info): New method.
|
||||||
|
(asm_language_data): Delete la_pass_by_reference initializer.
|
||||||
|
(minimal_language_data): Likewise.
|
||||||
|
* cp-abi.c (cp_pass_by_reference): Remove use of
|
||||||
|
default_pass_by_reference.
|
||||||
|
* d-lang.c (d_language_data): Likewise.
|
||||||
|
* f-lang.c (f_language_data): Likewise.
|
||||||
|
* gnu-v3-abi.c (gnuv3_pass_by_reference): Remove use of
|
||||||
|
default_pass_by_reference.
|
||||||
|
* go-lang.c (go_language_data): Likewise.
|
||||||
|
* language.c (language_pass_by_reference): Update.
|
||||||
|
(default_pass_by_reference): Delete.
|
||||||
|
(unknown_language_data): Delete la_pass_by_reference
|
||||||
|
initializer.
|
||||||
|
(auto_language_data): Likewise.
|
||||||
|
* language.h (struct language_data): Delete la_pass_by_reference
|
||||||
|
field.
|
||||||
|
(language_defn::pass_by_reference_info): New member function.
|
||||||
|
(default_pass_by_reference): Delete declaration.
|
||||||
|
* m2-lang.c (m2_language_data): Delete la_pass_by_reference
|
||||||
|
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.
|
||||||
|
|
||||||
2020-06-02 Andrew Burgess <andrew.burgess@embecosm.com>
|
2020-06-02 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
* ada-lang.c (ada_read_var_value): Delete function, move
|
* ada-lang.c (ada_read_var_value): Delete function, move
|
||||||
|
@ -14066,7 +14066,6 @@ extern const struct language_data ada_language_data =
|
|||||||
ada_get_gdb_completer_word_break_characters,
|
ada_get_gdb_completer_word_break_characters,
|
||||||
ada_collect_symbol_completion_matches,
|
ada_collect_symbol_completion_matches,
|
||||||
ada_language_arch_info,
|
ada_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
ada_watch_location_expression,
|
ada_watch_location_expression,
|
||||||
ada_get_symbol_name_matcher, /* la_get_symbol_name_matcher */
|
ada_get_symbol_name_matcher, /* la_get_symbol_name_matcher */
|
||||||
ada_iterate_over_symbols,
|
ada_iterate_over_symbols,
|
||||||
|
12
gdb/c-lang.c
12
gdb/c-lang.c
@ -922,7 +922,6 @@ extern const struct language_data c_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
c_language_arch_info,
|
c_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
@ -1081,7 +1080,6 @@ extern const struct language_data cplus_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
cplus_language_arch_info,
|
cplus_language_arch_info,
|
||||||
cp_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
cp_get_symbol_name_matcher,
|
cp_get_symbol_name_matcher,
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
@ -1101,6 +1099,14 @@ public:
|
|||||||
cplus_language ()
|
cplus_language ()
|
||||||
: language_defn (language_cplus, cplus_language_data)
|
: language_defn (language_cplus, cplus_language_data)
|
||||||
{ /* Nothing. */ }
|
{ /* Nothing. */ }
|
||||||
|
|
||||||
|
/* See language.h. */
|
||||||
|
|
||||||
|
struct language_pass_by_ref_info pass_by_reference_info
|
||||||
|
(struct type *type) const override
|
||||||
|
{
|
||||||
|
return cp_pass_by_reference (type);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The single instance of the C++ language class. */
|
/* The single instance of the C++ language class. */
|
||||||
@ -1149,7 +1155,6 @@ extern const struct language_data asm_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
c_language_arch_info, /* FIXME: la_language_arch_info. */
|
c_language_arch_info, /* FIXME: la_language_arch_info. */
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
@ -1214,7 +1219,6 @@ extern const struct language_data minimal_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
c_language_arch_info,
|
c_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -226,7 +226,7 @@ struct language_pass_by_ref_info
|
|||||||
cp_pass_by_reference (struct type *type)
|
cp_pass_by_reference (struct type *type)
|
||||||
{
|
{
|
||||||
if ((current_cp_abi.pass_by_reference) == NULL)
|
if ((current_cp_abi.pass_by_reference) == NULL)
|
||||||
return default_pass_by_reference (type);
|
return {};
|
||||||
return (*current_cp_abi.pass_by_reference) (type);
|
return (*current_cp_abi.pass_by_reference) (type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,7 +243,6 @@ extern const struct language_data d_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
d_language_arch_info,
|
d_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -671,7 +671,6 @@ extern const struct language_data f_language_data =
|
|||||||
f_word_break_characters,
|
f_word_break_characters,
|
||||||
f_collect_symbol_completion_matches,
|
f_collect_symbol_completion_matches,
|
||||||
f_language_arch_info,
|
f_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
cp_get_symbol_name_matcher, /* la_get_symbol_name_matcher */
|
cp_get_symbol_name_matcher, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -1406,8 +1406,7 @@ gnuv3_pass_by_reference (struct type *type)
|
|||||||
type = check_typedef (type);
|
type = check_typedef (type);
|
||||||
|
|
||||||
/* Start with the default values. */
|
/* Start with the default values. */
|
||||||
struct language_pass_by_ref_info info
|
struct language_pass_by_ref_info info;
|
||||||
= default_pass_by_reference (type);
|
|
||||||
|
|
||||||
bool has_cc_attr = false;
|
bool has_cc_attr = false;
|
||||||
bool is_pass_by_value = false;
|
bool is_pass_by_value = false;
|
||||||
|
@ -614,7 +614,6 @@ extern const struct language_data go_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
go_language_arch_info,
|
go_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -627,17 +627,7 @@ language_class_name_from_physname (const struct language_defn *lang,
|
|||||||
struct language_pass_by_ref_info
|
struct language_pass_by_ref_info
|
||||||
language_pass_by_reference (struct type *type)
|
language_pass_by_reference (struct type *type)
|
||||||
{
|
{
|
||||||
return current_language->la_pass_by_reference (type);
|
return current_language->pass_by_reference_info (type);
|
||||||
}
|
|
||||||
|
|
||||||
/* Return a default struct that provides pass-by-reference information
|
|
||||||
about the given TYPE. Languages should update the default values
|
|
||||||
as appropriate. */
|
|
||||||
|
|
||||||
struct language_pass_by_ref_info
|
|
||||||
default_pass_by_reference (struct type *type)
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the default string containing the list of characters
|
/* Return the default string containing the list of characters
|
||||||
@ -848,7 +838,6 @@ extern const struct language_data unknown_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
unknown_language_arch_info, /* la_language_arch_info. */
|
unknown_language_arch_info, /* la_language_arch_info. */
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
@ -911,7 +900,6 @@ extern const struct language_data auto_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
unknown_language_arch_info, /* la_language_arch_info. */
|
unknown_language_arch_info, /* la_language_arch_info. */
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -372,11 +372,6 @@ struct language_data
|
|||||||
void (*la_language_arch_info) (struct gdbarch *,
|
void (*la_language_arch_info) (struct gdbarch *,
|
||||||
struct language_arch_info *);
|
struct language_arch_info *);
|
||||||
|
|
||||||
/* Return information about whether TYPE should be passed
|
|
||||||
(and returned) by reference at the language level. */
|
|
||||||
struct language_pass_by_ref_info (*la_pass_by_reference)
|
|
||||||
(struct type *type);
|
|
||||||
|
|
||||||
/* Return an expression that can be used for a location
|
/* Return an expression that can be used for a location
|
||||||
watchpoint. TYPE is a pointer type that points to the memory
|
watchpoint. TYPE is a pointer type that points to the memory
|
||||||
to watch, and ADDR is the address of the watched memory. */
|
to watch, and ADDR is the address of the watched memory. */
|
||||||
@ -497,6 +492,17 @@ struct language_defn : language_data
|
|||||||
const struct block *var_block,
|
const struct block *var_block,
|
||||||
struct frame_info *frame) const;
|
struct frame_info *frame) const;
|
||||||
|
|
||||||
|
/* Return information about whether TYPE should be passed
|
||||||
|
(and returned) by reference at the language level. The default
|
||||||
|
implementation returns a LANGUAGE_PASS_BY_REF_INFO initialised in its
|
||||||
|
default state. */
|
||||||
|
|
||||||
|
virtual struct language_pass_by_ref_info pass_by_reference_info
|
||||||
|
(struct type *type) const
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
/* List of all known languages. */
|
/* List of all known languages. */
|
||||||
static const struct language_defn *languages[nr_languages];
|
static const struct language_defn *languages[nr_languages];
|
||||||
};
|
};
|
||||||
@ -669,11 +675,6 @@ extern const char *default_word_break_characters (void);
|
|||||||
(and returned) by reference at the language level. */
|
(and returned) by reference at the language level. */
|
||||||
struct language_pass_by_ref_info language_pass_by_reference (struct type *type);
|
struct language_pass_by_ref_info language_pass_by_reference (struct type *type);
|
||||||
|
|
||||||
/* Return a default struct that provides pass-by-reference information
|
|
||||||
about the given TYPE. Languages should update the default values
|
|
||||||
as appropriate. */
|
|
||||||
struct language_pass_by_ref_info default_pass_by_reference (struct type *type);
|
|
||||||
|
|
||||||
/* The default implementation of la_print_typedef. */
|
/* The default implementation of la_print_typedef. */
|
||||||
void default_print_typedef (struct type *type, struct symbol *new_symbol,
|
void default_print_typedef (struct type *type, struct symbol *new_symbol,
|
||||||
struct ui_file *stream);
|
struct ui_file *stream);
|
||||||
|
@ -412,7 +412,6 @@ extern const struct language_data m2_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
m2_language_arch_info,
|
m2_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -401,7 +401,6 @@ extern const struct language_data objc_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
c_language_arch_info,
|
c_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -1078,7 +1078,6 @@ extern const struct language_data opencl_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
opencl_language_arch_info,
|
opencl_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -465,7 +465,6 @@ extern const struct language_data pascal_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
pascal_language_arch_info,
|
pascal_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
c_watch_location_expression,
|
c_watch_location_expression,
|
||||||
NULL, /* la_compare_symbol_for_completion */
|
NULL, /* la_compare_symbol_for_completion */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
@ -2138,7 +2138,6 @@ extern const struct language_data rust_language_data =
|
|||||||
default_word_break_characters,
|
default_word_break_characters,
|
||||||
default_collect_symbol_completion_matches,
|
default_collect_symbol_completion_matches,
|
||||||
rust_language_arch_info,
|
rust_language_arch_info,
|
||||||
default_pass_by_reference,
|
|
||||||
rust_watch_location_expression,
|
rust_watch_location_expression,
|
||||||
NULL, /* la_get_symbol_name_matcher */
|
NULL, /* la_get_symbol_name_matcher */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
Reference in New Issue
Block a user