1 /* Fortran language support routines for GDB, the GNU debugger.
3 Copyright (C) 1993-2020 Free Software Foundation, Inc.
5 Contributed by Motorola. Adapted from the C parser by Farooq Butt
6 (fmbutt@engage.sps.mot.com).
8 This file is part of GDB.
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3 of the License, or
13 (at your option) any later version.
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
26 #include "expression.h"
27 #include "parser-defs.h"
34 #include "cp-support.h"
37 #include "target-float.h"
44 static void f_printchar (int c
, struct type
*type
, struct ui_file
* stream
);
46 /* Return the encoding that should be used for the character type
50 f_get_encoding (struct type
*type
)
54 switch (TYPE_LENGTH (type
))
57 encoding
= target_charset (get_type_arch (type
));
60 if (type_byte_order (type
) == BFD_ENDIAN_BIG
)
61 encoding
= "UTF-32BE";
63 encoding
= "UTF-32LE";
67 error (_("unrecognized character type"));
73 /* Implementation of la_printchar. */
76 f_printchar (int c
, struct type
*type
, struct ui_file
*stream
)
78 fputs_filtered ("'", stream
);
79 LA_EMIT_CHAR (c
, type
, stream
, '\'');
80 fputs_filtered ("'", stream
);
83 /* Print the character string STRING, printing at most LENGTH characters.
84 Printing stops early if the number hits print_max; repeat counts
85 are printed as appropriate. Print ellipses at the end if we
86 had to stop before printing LENGTH characters, or if FORCE_ELLIPSES.
87 FIXME: This is a copy of the same function from c-exp.y. It should
88 be replaced with a true F77 version. */
91 f_printstr (struct ui_file
*stream
, struct type
*type
, const gdb_byte
*string
,
92 unsigned int length
, const char *encoding
, int force_ellipses
,
93 const struct value_print_options
*options
)
95 const char *type_encoding
= f_get_encoding (type
);
97 if (TYPE_LENGTH (type
) == 4)
98 fputs_filtered ("4_", stream
);
100 if (!encoding
|| !*encoding
)
101 encoding
= type_encoding
;
103 generic_printstr (stream
, type
, string
, length
, encoding
,
104 force_ellipses
, '\'', 0, options
);
108 /* Table of operators and their precedences for printing expressions. */
110 static const struct op_print f_op_print_tab
[] =
112 {"+", BINOP_ADD
, PREC_ADD
, 0},
113 {"+", UNOP_PLUS
, PREC_PREFIX
, 0},
114 {"-", BINOP_SUB
, PREC_ADD
, 0},
115 {"-", UNOP_NEG
, PREC_PREFIX
, 0},
116 {"*", BINOP_MUL
, PREC_MUL
, 0},
117 {"/", BINOP_DIV
, PREC_MUL
, 0},
118 {"DIV", BINOP_INTDIV
, PREC_MUL
, 0},
119 {"MOD", BINOP_REM
, PREC_MUL
, 0},
120 {"=", BINOP_ASSIGN
, PREC_ASSIGN
, 1},
121 {".OR.", BINOP_LOGICAL_OR
, PREC_LOGICAL_OR
, 0},
122 {".AND.", BINOP_LOGICAL_AND
, PREC_LOGICAL_AND
, 0},
123 {".NOT.", UNOP_LOGICAL_NOT
, PREC_PREFIX
, 0},
124 {".EQ.", BINOP_EQUAL
, PREC_EQUAL
, 0},
125 {".NE.", BINOP_NOTEQUAL
, PREC_EQUAL
, 0},
126 {".LE.", BINOP_LEQ
, PREC_ORDER
, 0},
127 {".GE.", BINOP_GEQ
, PREC_ORDER
, 0},
128 {".GT.", BINOP_GTR
, PREC_ORDER
, 0},
129 {".LT.", BINOP_LESS
, PREC_ORDER
, 0},
130 {"**", UNOP_IND
, PREC_PREFIX
, 0},
131 {"@", BINOP_REPEAT
, PREC_REPEAT
, 0},
132 {NULL
, OP_NULL
, PREC_REPEAT
, 0}
135 enum f_primitive_types
{
136 f_primitive_type_character
,
137 f_primitive_type_logical
,
138 f_primitive_type_logical_s1
,
139 f_primitive_type_logical_s2
,
140 f_primitive_type_logical_s8
,
141 f_primitive_type_integer
,
142 f_primitive_type_integer_s2
,
143 f_primitive_type_real
,
144 f_primitive_type_real_s8
,
145 f_primitive_type_real_s16
,
146 f_primitive_type_complex_s8
,
147 f_primitive_type_complex_s16
,
148 f_primitive_type_void
,
152 /* Special expression evaluation cases for Fortran. */
154 static struct value
*
155 evaluate_subexp_f (struct type
*expect_type
, struct expression
*exp
,
156 int *pos
, enum noside noside
)
158 struct value
*arg1
= NULL
, *arg2
= NULL
;
165 op
= exp
->elts
[pc
].opcode
;
171 return evaluate_subexp_standard (expect_type
, exp
, pos
, noside
);
174 arg1
= evaluate_subexp (NULL_TYPE
, exp
, pos
, noside
);
175 if (noside
== EVAL_SKIP
)
176 return eval_skip_value (exp
);
177 type
= value_type (arg1
);
178 switch (type
->code ())
183 = fabs (target_float_to_host_double (value_contents (arg1
),
185 return value_from_host_double (type
, d
);
189 LONGEST l
= value_as_long (arg1
);
191 return value_from_longest (type
, l
);
194 error (_("ABS of type %s not supported"), TYPE_SAFE_NAME (type
));
197 arg1
= evaluate_subexp (NULL_TYPE
, exp
, pos
, noside
);
198 arg2
= evaluate_subexp (value_type (arg1
), exp
, pos
, noside
);
199 if (noside
== EVAL_SKIP
)
200 return eval_skip_value (exp
);
201 type
= value_type (arg1
);
202 if (type
->code () != value_type (arg2
)->code ())
203 error (_("non-matching types for parameters to MOD ()"));
204 switch (type
->code ())
209 = target_float_to_host_double (value_contents (arg1
),
212 = target_float_to_host_double (value_contents (arg2
),
214 double d3
= fmod (d1
, d2
);
215 return value_from_host_double (type
, d3
);
219 LONGEST v1
= value_as_long (arg1
);
220 LONGEST v2
= value_as_long (arg2
);
222 error (_("calling MOD (N, 0) is undefined"));
223 LONGEST v3
= v1
- (v1
/ v2
) * v2
;
224 return value_from_longest (value_type (arg1
), v3
);
227 error (_("MOD of type %s not supported"), TYPE_SAFE_NAME (type
));
229 case UNOP_FORTRAN_CEILING
:
231 arg1
= evaluate_subexp (NULL_TYPE
, exp
, pos
, noside
);
232 if (noside
== EVAL_SKIP
)
233 return eval_skip_value (exp
);
234 type
= value_type (arg1
);
235 if (type
->code () != TYPE_CODE_FLT
)
236 error (_("argument to CEILING must be of type float"));
238 = target_float_to_host_double (value_contents (arg1
),
241 return value_from_host_double (type
, val
);
244 case UNOP_FORTRAN_FLOOR
:
246 arg1
= evaluate_subexp (NULL_TYPE
, exp
, pos
, noside
);
247 if (noside
== EVAL_SKIP
)
248 return eval_skip_value (exp
);
249 type
= value_type (arg1
);
250 if (type
->code () != TYPE_CODE_FLT
)
251 error (_("argument to FLOOR must be of type float"));
253 = target_float_to_host_double (value_contents (arg1
),
256 return value_from_host_double (type
, val
);
259 case BINOP_FORTRAN_MODULO
:
261 arg1
= evaluate_subexp (NULL_TYPE
, exp
, pos
, noside
);
262 arg2
= evaluate_subexp (value_type (arg1
), exp
, pos
, noside
);
263 if (noside
== EVAL_SKIP
)
264 return eval_skip_value (exp
);
265 type
= value_type (arg1
);
266 if (type
->code () != value_type (arg2
)->code ())
267 error (_("non-matching types for parameters to MODULO ()"));
268 /* MODULO(A, P) = A - FLOOR (A / P) * P */
269 switch (type
->code ())
273 LONGEST a
= value_as_long (arg1
);
274 LONGEST p
= value_as_long (arg2
);
275 LONGEST result
= a
- (a
/ p
) * p
;
276 if (result
!= 0 && (a
< 0) != (p
< 0))
278 return value_from_longest (value_type (arg1
), result
);
283 = target_float_to_host_double (value_contents (arg1
),
286 = target_float_to_host_double (value_contents (arg2
),
288 double result
= fmod (a
, p
);
289 if (result
!= 0 && (a
< 0.0) != (p
< 0.0))
291 return value_from_host_double (type
, result
);
294 error (_("MODULO of type %s not supported"), TYPE_SAFE_NAME (type
));
297 case BINOP_FORTRAN_CMPLX
:
298 arg1
= evaluate_subexp (NULL_TYPE
, exp
, pos
, noside
);
299 arg2
= evaluate_subexp (value_type (arg1
), exp
, pos
, noside
);
300 if (noside
== EVAL_SKIP
)
301 return eval_skip_value (exp
);
302 type
= builtin_f_type(exp
->gdbarch
)->builtin_complex_s16
;
303 return value_literal_complex (arg1
, arg2
, type
);
305 case UNOP_FORTRAN_KIND
:
306 arg1
= evaluate_subexp (NULL
, exp
, pos
, EVAL_AVOID_SIDE_EFFECTS
);
307 type
= value_type (arg1
);
309 switch (type
->code ())
311 case TYPE_CODE_STRUCT
:
312 case TYPE_CODE_UNION
:
313 case TYPE_CODE_MODULE
:
315 error (_("argument to kind must be an intrinsic type"));
318 if (!TYPE_TARGET_TYPE (type
))
319 return value_from_longest (builtin_type (exp
->gdbarch
)->builtin_int
,
321 return value_from_longest (builtin_type (exp
->gdbarch
)->builtin_int
,
322 TYPE_LENGTH (TYPE_TARGET_TYPE (type
)));
325 /* Should be unreachable. */
329 /* Return true if TYPE is a string. */
332 f_is_string_type_p (struct type
*type
)
334 type
= check_typedef (type
);
335 return (type
->code () == TYPE_CODE_STRING
336 || (type
->code () == TYPE_CODE_ARRAY
337 && TYPE_TARGET_TYPE (type
)->code () == TYPE_CODE_CHAR
));
340 /* Special expression lengths for Fortran. */
343 operator_length_f (const struct expression
*exp
, int pc
, int *oplenp
,
349 switch (exp
->elts
[pc
- 1].opcode
)
352 operator_length_standard (exp
, pc
, oplenp
, argsp
);
355 case UNOP_FORTRAN_KIND
:
356 case UNOP_FORTRAN_FLOOR
:
357 case UNOP_FORTRAN_CEILING
:
362 case BINOP_FORTRAN_CMPLX
:
363 case BINOP_FORTRAN_MODULO
:
373 /* Helper for PRINT_SUBEXP_F. Arguments are as for PRINT_SUBEXP_F, except
374 the extra argument NAME which is the text that should be printed as the
375 name of this operation. */
378 print_unop_subexp_f (struct expression
*exp
, int *pos
,
379 struct ui_file
*stream
, enum precedence prec
,
383 fprintf_filtered (stream
, "%s(", name
);
384 print_subexp (exp
, pos
, stream
, PREC_SUFFIX
);
385 fputs_filtered (")", stream
);
388 /* Helper for PRINT_SUBEXP_F. Arguments are as for PRINT_SUBEXP_F, except
389 the extra argument NAME which is the text that should be printed as the
390 name of this operation. */
393 print_binop_subexp_f (struct expression
*exp
, int *pos
,
394 struct ui_file
*stream
, enum precedence prec
,
398 fprintf_filtered (stream
, "%s(", name
);
399 print_subexp (exp
, pos
, stream
, PREC_SUFFIX
);
400 fputs_filtered (",", stream
);
401 print_subexp (exp
, pos
, stream
, PREC_SUFFIX
);
402 fputs_filtered (")", stream
);
405 /* Special expression printing for Fortran. */
408 print_subexp_f (struct expression
*exp
, int *pos
,
409 struct ui_file
*stream
, enum precedence prec
)
412 enum exp_opcode op
= exp
->elts
[pc
].opcode
;
417 print_subexp_standard (exp
, pos
, stream
, prec
);
420 case UNOP_FORTRAN_KIND
:
421 print_unop_subexp_f (exp
, pos
, stream
, prec
, "KIND");
424 case UNOP_FORTRAN_FLOOR
:
425 print_unop_subexp_f (exp
, pos
, stream
, prec
, "FLOOR");
428 case UNOP_FORTRAN_CEILING
:
429 print_unop_subexp_f (exp
, pos
, stream
, prec
, "CEILING");
432 case BINOP_FORTRAN_CMPLX
:
433 print_binop_subexp_f (exp
, pos
, stream
, prec
, "CMPLX");
436 case BINOP_FORTRAN_MODULO
:
437 print_binop_subexp_f (exp
, pos
, stream
, prec
, "MODULO");
442 /* Special expression names for Fortran. */
445 op_name_f (enum exp_opcode opcode
)
450 return op_name_standard (opcode
);
455 #include "fortran-operator.def"
460 /* Special expression dumping for Fortran. */
463 dump_subexp_body_f (struct expression
*exp
,
464 struct ui_file
*stream
, int elt
)
466 int opcode
= exp
->elts
[elt
].opcode
;
472 return dump_subexp_body_standard (exp
, stream
, elt
);
474 case UNOP_FORTRAN_KIND
:
475 case UNOP_FORTRAN_FLOOR
:
476 case UNOP_FORTRAN_CEILING
:
477 case BINOP_FORTRAN_CMPLX
:
478 case BINOP_FORTRAN_MODULO
:
479 operator_length_f (exp
, (elt
+ 1), &oplen
, &nargs
);
484 for (i
= 0; i
< nargs
; i
+= 1)
485 elt
= dump_subexp (exp
, stream
, elt
);
490 /* Special expression checking for Fortran. */
493 operator_check_f (struct expression
*exp
, int pos
,
494 int (*objfile_func
) (struct objfile
*objfile
,
498 const union exp_element
*const elts
= exp
->elts
;
500 switch (elts
[pos
].opcode
)
502 case UNOP_FORTRAN_KIND
:
503 case UNOP_FORTRAN_FLOOR
:
504 case UNOP_FORTRAN_CEILING
:
505 case BINOP_FORTRAN_CMPLX
:
506 case BINOP_FORTRAN_MODULO
:
507 /* Any references to objfiles are held in the arguments to this
508 expression, not within the expression itself, so no additional
509 checking is required here, the outer expression iteration code
510 will take care of checking each argument. */
514 return operator_check_standard (exp
, pos
, objfile_func
, data
);
520 static const char *f_extensions
[] =
522 ".f", ".F", ".for", ".FOR", ".ftn", ".FTN", ".fpp", ".FPP",
523 ".f90", ".F90", ".f95", ".F95", ".f03", ".F03", ".f08", ".F08",
527 /* Expression processing for Fortran. */
528 static const struct exp_descriptor exp_descriptor_f
=
538 /* Constant data that describes the Fortran language. */
540 extern const struct language_data f_language_data
=
551 f_printchar
, /* Print character constant */
552 f_printstr
, /* function to print string constant */
553 f_print_typedef
, /* Print a typedef using appropriate syntax */
554 NULL
, /* name_of_this */
555 false, /* la_store_sym_names_in_linkage_form_p */
556 f_op_print_tab
, /* expression operators for printing */
557 0, /* arrays are first-class (not c-style) */
558 1, /* String lower bound */
561 "(...)" /* la_struct_too_deep_ellipsis */
564 /* Class representing the Fortran language. */
566 class f_language
: public language_defn
570 : language_defn (language_fortran
, f_language_data
)
573 /* See language.h. */
574 void language_arch_info (struct gdbarch
*gdbarch
,
575 struct language_arch_info
*lai
) const override
577 const struct builtin_f_type
*builtin
= builtin_f_type (gdbarch
);
579 lai
->string_char_type
= builtin
->builtin_character
;
580 lai
->primitive_type_vector
581 = GDBARCH_OBSTACK_CALLOC (gdbarch
, nr_f_primitive_types
+ 1,
584 lai
->primitive_type_vector
[f_primitive_type_character
]
585 = builtin
->builtin_character
;
586 lai
->primitive_type_vector
[f_primitive_type_logical
]
587 = builtin
->builtin_logical
;
588 lai
->primitive_type_vector
[f_primitive_type_logical_s1
]
589 = builtin
->builtin_logical_s1
;
590 lai
->primitive_type_vector
[f_primitive_type_logical_s2
]
591 = builtin
->builtin_logical_s2
;
592 lai
->primitive_type_vector
[f_primitive_type_logical_s8
]
593 = builtin
->builtin_logical_s8
;
594 lai
->primitive_type_vector
[f_primitive_type_real
]
595 = builtin
->builtin_real
;
596 lai
->primitive_type_vector
[f_primitive_type_real_s8
]
597 = builtin
->builtin_real_s8
;
598 lai
->primitive_type_vector
[f_primitive_type_real_s16
]
599 = builtin
->builtin_real_s16
;
600 lai
->primitive_type_vector
[f_primitive_type_complex_s8
]
601 = builtin
->builtin_complex_s8
;
602 lai
->primitive_type_vector
[f_primitive_type_complex_s16
]
603 = builtin
->builtin_complex_s16
;
604 lai
->primitive_type_vector
[f_primitive_type_void
]
605 = builtin
->builtin_void
;
607 lai
->bool_type_symbol
= "logical";
608 lai
->bool_type_default
= builtin
->builtin_logical_s2
;
611 /* See language.h. */
612 unsigned int search_name_hash (const char *name
) const override
614 return cp_search_name_hash (name
);
617 /* See language.h. */
619 char *demangle (const char *mangled
, int options
) const override
621 /* We could support demangling here to provide module namespaces
622 also for inferiors with only minimal symbol table (ELF symbols).
623 Just the mangling standard is not standardized across compilers
624 and there is no DW_AT_producer available for inferiors with only
625 the ELF symbols to check the mangling kind. */
629 /* See language.h. */
631 void print_type (struct type
*type
, const char *varstring
,
632 struct ui_file
*stream
, int show
, int level
,
633 const struct type_print_options
*flags
) const override
635 f_print_type (type
, varstring
, stream
, show
, level
, flags
);
638 /* See language.h. This just returns default set of word break
639 characters but with the modules separator `::' removed. */
641 const char *word_break_characters (void) const override
649 retval
= xstrdup (language_defn::word_break_characters ());
650 s
= strchr (retval
, ':');
653 char *last_char
= &s
[strlen (s
) - 1];
663 /* See language.h. */
665 void collect_symbol_completion_matches (completion_tracker
&tracker
,
666 complete_symbol_mode mode
,
667 symbol_name_match_type name_match_type
,
668 const char *text
, const char *word
,
669 enum type_code code
) const override
671 /* Consider the modules separator :: as a valid symbol name character
673 default_collect_symbol_completion_matches_break_on (tracker
, mode
,
679 /* See language.h. */
681 void value_print_inner
682 (struct value
*val
, struct ui_file
*stream
, int recurse
,
683 const struct value_print_options
*options
) const override
685 return f_value_print_inner (val
, stream
, recurse
, options
);
688 /* See language.h. */
690 struct block_symbol lookup_symbol_nonlocal
691 (const char *name
, const struct block
*block
,
692 const domain_enum domain
) const override
694 return cp_lookup_symbol_nonlocal (this, name
, block
, domain
);
697 /* See language.h. */
699 int parser (struct parser_state
*ps
) const override
704 /* See language.h. */
706 void emitchar (int ch
, struct type
*chtype
,
707 struct ui_file
*stream
, int quoter
) const override
709 const char *encoding
= f_get_encoding (chtype
);
710 generic_emit_char (ch
, chtype
, stream
, quoter
, encoding
);
715 /* See language.h. */
717 symbol_name_matcher_ftype
*get_symbol_name_matcher_inner
718 (const lookup_name_info
&lookup_name
) const override
720 return cp_get_symbol_name_matcher (lookup_name
);
724 /* Single instance of the Fortran language class. */
726 static f_language f_language_defn
;
729 build_fortran_types (struct gdbarch
*gdbarch
)
731 struct builtin_f_type
*builtin_f_type
732 = GDBARCH_OBSTACK_ZALLOC (gdbarch
, struct builtin_f_type
);
734 builtin_f_type
->builtin_void
735 = arch_type (gdbarch
, TYPE_CODE_VOID
, TARGET_CHAR_BIT
, "void");
737 builtin_f_type
->builtin_character
738 = arch_type (gdbarch
, TYPE_CODE_CHAR
, TARGET_CHAR_BIT
, "character");
740 builtin_f_type
->builtin_logical_s1
741 = arch_boolean_type (gdbarch
, TARGET_CHAR_BIT
, 1, "logical*1");
743 builtin_f_type
->builtin_integer_s2
744 = arch_integer_type (gdbarch
, gdbarch_short_bit (gdbarch
), 0,
747 builtin_f_type
->builtin_integer_s8
748 = arch_integer_type (gdbarch
, gdbarch_long_long_bit (gdbarch
), 0,
751 builtin_f_type
->builtin_logical_s2
752 = arch_boolean_type (gdbarch
, gdbarch_short_bit (gdbarch
), 1,
755 builtin_f_type
->builtin_logical_s8
756 = arch_boolean_type (gdbarch
, gdbarch_long_long_bit (gdbarch
), 1,
759 builtin_f_type
->builtin_integer
760 = arch_integer_type (gdbarch
, gdbarch_int_bit (gdbarch
), 0,
763 builtin_f_type
->builtin_logical
764 = arch_boolean_type (gdbarch
, gdbarch_int_bit (gdbarch
), 1,
767 builtin_f_type
->builtin_real
768 = arch_float_type (gdbarch
, gdbarch_float_bit (gdbarch
),
769 "real", gdbarch_float_format (gdbarch
));
770 builtin_f_type
->builtin_real_s8
771 = arch_float_type (gdbarch
, gdbarch_double_bit (gdbarch
),
772 "real*8", gdbarch_double_format (gdbarch
));
773 auto fmt
= gdbarch_floatformat_for_type (gdbarch
, "real(kind=16)", 128);
775 builtin_f_type
->builtin_real_s16
776 = arch_float_type (gdbarch
, 128, "real*16", fmt
);
777 else if (gdbarch_long_double_bit (gdbarch
) == 128)
778 builtin_f_type
->builtin_real_s16
779 = arch_float_type (gdbarch
, gdbarch_long_double_bit (gdbarch
),
780 "real*16", gdbarch_long_double_format (gdbarch
));
782 builtin_f_type
->builtin_real_s16
783 = arch_type (gdbarch
, TYPE_CODE_ERROR
, 128, "real*16");
785 builtin_f_type
->builtin_complex_s8
786 = init_complex_type ("complex*8", builtin_f_type
->builtin_real
);
787 builtin_f_type
->builtin_complex_s16
788 = init_complex_type ("complex*16", builtin_f_type
->builtin_real_s8
);
790 if (builtin_f_type
->builtin_real_s16
->code () == TYPE_CODE_ERROR
)
791 builtin_f_type
->builtin_complex_s32
792 = arch_type (gdbarch
, TYPE_CODE_ERROR
, 256, "complex*32");
794 builtin_f_type
->builtin_complex_s32
795 = init_complex_type ("complex*32", builtin_f_type
->builtin_real_s16
);
797 return builtin_f_type
;
800 static struct gdbarch_data
*f_type_data
;
802 const struct builtin_f_type
*
803 builtin_f_type (struct gdbarch
*gdbarch
)
805 return (const struct builtin_f_type
*) gdbarch_data (gdbarch
, f_type_data
);
808 void _initialize_f_language ();
810 _initialize_f_language ()
812 f_type_data
= gdbarch_data_register_post_init (build_fortran_types
);
818 fortran_argument_convert (struct value
*value
, bool is_artificial
)
822 /* If the value is not in the inferior e.g. registers values,
823 convenience variables and user input. */
824 if (VALUE_LVAL (value
) != lval_memory
)
826 struct type
*type
= value_type (value
);
827 const int length
= TYPE_LENGTH (type
);
829 = value_as_long (value_allocate_space_in_inferior (length
));
830 write_memory (addr
, value_contents (value
), length
);
832 = value_from_contents_and_address (type
, value_contents (value
),
834 return value_addr (val
);
837 return value_addr (value
); /* Program variables, e.g. arrays. */
845 fortran_preserve_arg_pointer (struct value
*arg
, struct type
*type
)
847 if (value_type (arg
)->code () == TYPE_CODE_PTR
)
848 return value_type (arg
);