aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2020-05-01 21:20:06 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2020-06-02 13:53:10 +0100
commit48448202d7e607d7423c6186438099f442732a95 (patch)
tree0427207c92ceb8622bc9930281964432a8efd4c6
parent15e5fd35569d555ca53f074c571d4a3d06da67b0 (diff)
downloadgdb-48448202d7e607d7423c6186438099f442732a95.zip
gdb-48448202d7e607d7423c6186438099f442732a95.tar.gz
gdb-48448202d7e607d7423c6186438099f442732a95.tar.bz2
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.
-rw-r--r--gdb/ChangeLog32
-rw-r--r--gdb/ada-lang.c1
-rw-r--r--gdb/c-lang.c12
-rw-r--r--gdb/cp-abi.c2
-rw-r--r--gdb/d-lang.c1
-rw-r--r--gdb/f-lang.c1
-rw-r--r--gdb/gnu-v3-abi.c3
-rw-r--r--gdb/go-lang.c1
-rw-r--r--gdb/language.c14
-rw-r--r--gdb/language.h21
-rw-r--r--gdb/m2-lang.c1
-rw-r--r--gdb/objc-lang.c1
-rw-r--r--gdb/opencl-lang.c1
-rw-r--r--gdb/p-lang.c1
-rw-r--r--gdb/rust-lang.c1
15 files changed, 54 insertions, 39 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3c2f394..1dcd649 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,37 @@
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>
+
* ada-lang.c (ada_read_var_value): Delete function, move
implementation to...
(ada_language::read_var_value): ...here.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index d69d2bb..6544479 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -14066,7 +14066,6 @@ extern const struct language_data ada_language_data =
ada_get_gdb_completer_word_break_characters,
ada_collect_symbol_completion_matches,
ada_language_arch_info,
- default_pass_by_reference,
ada_watch_location_expression,
ada_get_symbol_name_matcher, /* la_get_symbol_name_matcher */
ada_iterate_over_symbols,
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
index 8663dc1..9efcf56 100644
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -922,7 +922,6 @@ extern const struct language_data c_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
c_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
@@ -1081,7 +1080,6 @@ extern const struct language_data cplus_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
cplus_language_arch_info,
- cp_pass_by_reference,
c_watch_location_expression,
cp_get_symbol_name_matcher,
iterate_over_symbols,
@@ -1101,6 +1099,14 @@ public:
cplus_language ()
: language_defn (language_cplus, cplus_language_data)
{ /* 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. */
@@ -1149,7 +1155,6 @@ extern const struct language_data asm_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
c_language_arch_info, /* FIXME: la_language_arch_info. */
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
@@ -1214,7 +1219,6 @@ extern const struct language_data minimal_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
c_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
diff --git a/gdb/cp-abi.c b/gdb/cp-abi.c
index 3e2edad..cd6bf82 100644
--- a/gdb/cp-abi.c
+++ b/gdb/cp-abi.c
@@ -226,7 +226,7 @@ struct language_pass_by_ref_info
cp_pass_by_reference (struct type *type)
{
if ((current_cp_abi.pass_by_reference) == NULL)
- return default_pass_by_reference (type);
+ return {};
return (*current_cp_abi.pass_by_reference) (type);
}
diff --git a/gdb/d-lang.c b/gdb/d-lang.c
index e55d82e..2886442 100644
--- a/gdb/d-lang.c
+++ b/gdb/d-lang.c
@@ -243,7 +243,6 @@ extern const struct language_data d_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
d_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
diff --git a/gdb/f-lang.c b/gdb/f-lang.c
index 53e44db..78959b1 100644
--- a/gdb/f-lang.c
+++ b/gdb/f-lang.c
@@ -671,7 +671,6 @@ extern const struct language_data f_language_data =
f_word_break_characters,
f_collect_symbol_completion_matches,
f_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
cp_get_symbol_name_matcher, /* la_get_symbol_name_matcher */
iterate_over_symbols,
diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c
index 6faaca2..255cfd1 100644
--- a/gdb/gnu-v3-abi.c
+++ b/gdb/gnu-v3-abi.c
@@ -1406,8 +1406,7 @@ gnuv3_pass_by_reference (struct type *type)
type = check_typedef (type);
/* Start with the default values. */
- struct language_pass_by_ref_info info
- = default_pass_by_reference (type);
+ struct language_pass_by_ref_info info;
bool has_cc_attr = false;
bool is_pass_by_value = false;
diff --git a/gdb/go-lang.c b/gdb/go-lang.c
index caac9bd..2d17ea0 100644
--- a/gdb/go-lang.c
+++ b/gdb/go-lang.c
@@ -614,7 +614,6 @@ extern const struct language_data go_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
go_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
diff --git a/gdb/language.c b/gdb/language.c
index d541c6f..da99806 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -627,17 +627,7 @@ language_class_name_from_physname (const struct language_defn *lang,
struct language_pass_by_ref_info
language_pass_by_reference (struct type *type)
{
- return current_language->la_pass_by_reference (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 current_language->pass_by_reference_info (type);
}
/* 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_collect_symbol_completion_matches,
unknown_language_arch_info, /* la_language_arch_info. */
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
@@ -911,7 +900,6 @@ extern const struct language_data auto_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
unknown_language_arch_info, /* la_language_arch_info. */
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
diff --git a/gdb/language.h b/gdb/language.h
index 56260fb..cc0d0ff 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -372,11 +372,6 @@ struct language_data
void (*la_language_arch_info) (struct gdbarch *,
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
watchpoint. TYPE is a pointer type that points to the 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,
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. */
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. */
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. */
void default_print_typedef (struct type *type, struct symbol *new_symbol,
struct ui_file *stream);
diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c
index 1769c82..ddc63a7 100644
--- a/gdb/m2-lang.c
+++ b/gdb/m2-lang.c
@@ -412,7 +412,6 @@ extern const struct language_data m2_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
m2_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
index f6fd8f5..cf5b91b 100644
--- a/gdb/objc-lang.c
+++ b/gdb/objc-lang.c
@@ -401,7 +401,6 @@ extern const struct language_data objc_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
c_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c
index c1c498c..d7476f7 100644
--- a/gdb/opencl-lang.c
+++ b/gdb/opencl-lang.c
@@ -1078,7 +1078,6 @@ extern const struct language_data opencl_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
opencl_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,
diff --git a/gdb/p-lang.c b/gdb/p-lang.c
index e55f0b0..4a668b1 100644
--- a/gdb/p-lang.c
+++ b/gdb/p-lang.c
@@ -465,7 +465,6 @@ extern const struct language_data pascal_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
pascal_language_arch_info,
- default_pass_by_reference,
c_watch_location_expression,
NULL, /* la_compare_symbol_for_completion */
iterate_over_symbols,
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
index 3522ce5..3fdf566 100644
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
@@ -2138,7 +2138,6 @@ extern const struct language_data rust_language_data =
default_word_break_characters,
default_collect_symbol_completion_matches,
rust_language_arch_info,
- default_pass_by_reference,
rust_watch_location_expression,
NULL, /* la_get_symbol_name_matcher */
iterate_over_symbols,