diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-05-01 17:33:22 +0100 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-06-02 13:53:10 +0100 |
commit | 15e5fd35569d555ca53f074c571d4a3d06da67b0 (patch) | |
tree | 49ec3f10077bb48996a59c472b36f87660caf3f6 /gdb/language.h | |
parent | 5bd40f2a3feb273e92b640544f6e5307c8124d90 (diff) | |
download | gdb-15e5fd35569d555ca53f074c571d4a3d06da67b0.zip gdb-15e5fd35569d555ca53f074c571d4a3d06da67b0.tar.gz gdb-15e5fd35569d555ca53f074c571d4a3d06da67b0.tar.bz2 |
gdb: Convert language la_read_var_value field to a method
This commit changes the language_data::la_read_var_value function
pointer member variable into a member function of language_defn.
An interesting aspect of this change is that the implementation of
language_defn::read_var_value is actually in findvar.c. This is
partly historical, the new language_defn::read_var_value is a rename
of default_read_var_value, which was already in that file, but also,
that is the file that contains the helper functions needed by the
read_var_value method, so it makes sens that the method implementation
should continue to live there (I think).
There should be no user visible changes after this commit.
gdb/ChangeLog:
* ada-lang.c (ada_read_var_value): Delete function, move
implementation to...
(ada_language::read_var_value): ...here.
(ada_language_data): Delete la_read_var_value initializer.
* c-lang.c (c_language_data): Likewise.
(cplus_language_data): Likewise.
(minimal_language_data): Likewise.
* d-lang.c (d_language_data): Likewise.
* f-lang.c (f_language_data): Likewise.
* findvar.c (default_read_var_value): Rename to...
(language_defn::read_var_value): ...this.
* findvar.c (read_var_value): Update header comment, and change to
call member function instead of function pointer.
* go-lang.c (go_language_data): Likewise.
* language.c (unknown_language_data): Delete la_read_var_value
initializer.
(auto_language_data): Likewise.
* language.h (struct language_data): Delete la_read_var_value
field.
(language_defn::read_var_value): New member function.
(default_read_var_value): Delete declaration.
* m2-lang.c (m2_language_data): Delete la_read_var_value
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.
* value.h (default_read_var_value): Delete declaration.
Diffstat (limited to 'gdb/language.h')
-rw-r--r-- | gdb/language.h | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/gdb/language.h b/gdb/language.h index 8960f1e..56260fb 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -272,21 +272,6 @@ struct language_data void (*la_value_print) (struct value *, struct ui_file *, const struct value_print_options *); - /* Given a symbol VAR, the corresponding block VAR_BLOCK (if any) and a - stack frame id FRAME, read the value of the variable and return (pointer - to a) struct value containing the value. - - VAR_BLOCK is needed if there's a possibility for VAR to be outside - FRAME. This is what happens if FRAME correspond to a nested function - and VAR is defined in the outer function. If callers know that VAR is - located in FRAME or is global/static, NULL can be passed as VAR_BLOCK. - - Throw an error if the variable cannot be found. */ - - struct value *(*la_read_var_value) (struct symbol *var, - const struct block *var_block, - struct frame_info *frame); - /* PC is possibly an unknown languages trampoline. If that PC falls in a trampoline belonging to this language, return the address of the first pc in the real function, or 0 @@ -497,6 +482,21 @@ struct language_defn : language_data struct ui_file *stream, const value_print_options *options) const; + /* Given a symbol VAR, the corresponding block VAR_BLOCK (if any) and a + stack frame id FRAME, read the value of the variable and return (pointer + to a) struct value containing the value. + + VAR_BLOCK is needed if there's a possibility for VAR to be outside + FRAME. This is what happens if FRAME correspond to a nested function + and VAR is defined in the outer function. If callers know that VAR is + located in FRAME or is global/static, NULL can be passed as VAR_BLOCK. + + Throw an error if the variable cannot be found. */ + + virtual struct value *read_var_value (struct symbol *var, + const struct block *var_block, + struct frame_info *frame) const; + /* List of all known languages. */ static const struct language_defn *languages[nr_languages]; }; |