Move int type methods out of dwarf2_per_cu_data
[deliverable/binutils-gdb.git] / gdb / f-lang.h
index d60cf1b95ff0ca6c3cf59e83fcd68720ebbfe6a0..84a63a8a410133194f5cb0da83789f250d9771c6 100644 (file)
@@ -1,6 +1,6 @@
 /* Fortran language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2018 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
 
    Contributed by Motorola.  Adapted from the C definitions by Farooq Butt
    (fmbutt@engage.sps.mot.com).
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#ifndef F_LANG_H
+#define F_LANG_H
+
 struct type_print_options;
 struct parser_state;
 
 extern int f_parse (struct parser_state *);
 
+/* Implement the la_print_typedef language method for Fortran.  */
+
+extern void f_print_typedef (struct type *type, struct symbol *new_symbol,
+                            struct ui_file *stream);
+
 extern void f_print_type (struct type *, const char *, struct ui_file *, int,
                          int, const struct type_print_options *);
 
-extern void f_val_print (struct type *, int, CORE_ADDR,
-                        struct ui_file *, int,
-                        struct value *,
-                        const struct value_print_options *);
+/* Implement la_value_print_inner for Fortran.  */
+
+extern void f_value_print_innner (struct value *val, struct ui_file *stream,
+                                 int recurse,
+                                 const struct value_print_options *options);
 
 /* Language-specific data structures */
 
@@ -47,9 +56,9 @@ struct common_block
   struct symbol *contents[1];
 };
 
-extern int f77_get_upperbound (struct type *);
+extern LONGEST f77_get_upperbound (struct type *);
 
-extern int f77_get_lowerbound (struct type *);
+extern LONGEST f77_get_lowerbound (struct type *);
 
 extern void f77_get_dynamic_array_length (struct type *);
 
@@ -63,6 +72,7 @@ struct builtin_f_type
   struct type *builtin_character;
   struct type *builtin_integer;
   struct type *builtin_integer_s2;
+  struct type *builtin_integer_s8;
   struct type *builtin_logical;
   struct type *builtin_logical_s1;
   struct type *builtin_logical_s2;
@@ -79,3 +89,37 @@ struct builtin_f_type
 /* Return the Fortran type table for the specified architecture.  */
 extern const struct builtin_f_type *builtin_f_type (struct gdbarch *gdbarch);
 
+/* Ensures that function argument VALUE is in the appropriate form to
+   pass to a Fortran function.  Returns a possibly new value that should
+   be used instead of VALUE.
+
+   When IS_ARTIFICIAL is true this indicates an artificial argument,
+   e.g. hidden string lengths which the GNU Fortran argument passing
+   convention specifies as being passed by value.
+
+   When IS_ARTIFICIAL is false, the argument is passed by pointer.  If the
+   value is already in target memory then return a value that is a pointer
+   to VALUE.  If VALUE is not in memory (e.g. an integer literal), allocate
+   space in the target, copy VALUE in, and return a pointer to the in
+   memory copy.  */
+
+extern struct value *fortran_argument_convert (struct value *value,
+                                              bool is_artificial);
+
+/* Ensures that function argument TYPE is appropriate to inform the debugger
+   that ARG should be passed as a pointer.  Returns the potentially updated
+   argument type.
+
+   If ARG is of type pointer then the type of ARG is returned, otherwise
+   TYPE is returned untouched.
+
+   This function exists to augment the types of Fortran function call
+   parameters to be pointers to the reported value, when the corresponding ARG
+   has also been wrapped in a pointer (by fortran_argument_convert).  This
+   informs the debugger that these arguments should be passed as a pointer
+   rather than as the pointed to type.  */
+
+extern struct type *fortran_preserve_arg_pointer (struct value *arg,
+                                                 struct type *type);
+
+#endif /* F_LANG_H */
This page took 0.028939 seconds and 4 git commands to generate.