gdb/fortran: Add new function to evaluate Fortran expressions
authorAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 16 Jan 2019 16:16:59 +0000 (16:16 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 6 Mar 2019 18:11:31 +0000 (18:11 +0000)
This is an initial restructure, it adds a new function in which
Fortran specific expressions can be evaluated.  No Fortran specific
expressions are added with this commit though, so for now, the new
function just forwards all expressions to the default expression
handler, as such, there should be no user visible changes after this
commit.  However, the new function will be useful in later commits.

gdb/ChangeLog:

* f-lang.c (evaluate_subexp_f): New function.
(exp_descriptor_f): New global.
(f_language_defn): Use exp_descriptor_f instead of
exp_descriptor_standard.

gdb/ChangeLog
gdb/f-lang.c

index 61c566300da42eeb1779179033f1af234a27ab16..a632de69c373862853b63b762987991a52b38a5c 100644 (file)
@@ -1,3 +1,10 @@
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * f-lang.c (evaluate_subexp_f): New function.
+       (exp_descriptor_f): New global.
+       (f_language_defn): Use exp_descriptor_f instead of
+       exp_descriptor_standard.
+
 2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * f-exp.y (struct token): Add comments.
index 6eb9b230eb7131fae4450369d400b1636596582a..5beb46c5f3174b2737bbf920a51fd6fe0804e143 100644 (file)
@@ -239,6 +239,15 @@ f_collect_symbol_completion_matches (completion_tracker &tracker,
                                                      text, word, ":", code);
 }
 
+/* Special expression evaluation cases for Fortran.  */
+struct value *
+evaluate_subexp_f (struct type *expect_type, struct expression *exp,
+                  int *pos, enum noside noside)
+{
+  /* Currently no special handling is required. */
+  return evaluate_subexp_standard (expect_type, exp, pos, noside);
+}
+
 static const char *f_extensions[] =
 {
   ".f", ".F", ".for", ".FOR", ".ftn", ".FTN", ".fpp", ".FPP",
@@ -246,6 +255,17 @@ static const char *f_extensions[] =
   NULL
 };
 
+/* Expression processing for Fortran.  */
+static const struct exp_descriptor exp_descriptor_f =
+{
+  print_subexp_standard,
+  operator_length_standard,
+  operator_check_standard,
+  op_name_standard,
+  dump_subexp_body_standard,
+  evaluate_subexp_f
+};
+
 extern const struct language_defn f_language_defn =
 {
   "fortran",
@@ -256,7 +276,7 @@ extern const struct language_defn f_language_defn =
   array_column_major,
   macro_expansion_no,
   f_extensions,
-  &exp_descriptor_standard,
+  &exp_descriptor_f,
   f_parse,                     /* parser */
   null_post_parser,
   f_printchar,                 /* Print character constant */