aboutsummaryrefslogtreecommitdiff
path: root/gdb/parse.c
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>1994-08-19 21:59:05 +0000
committerStan Shebs <shebs@codesourcery.com>1994-08-19 21:59:05 +0000
commita91a61923d82c39ebeb9971635b76c7da494cab4 (patch)
tree5d26199b5455ca2369b432d008da29521e861908 /gdb/parse.c
parentf3806e3b6ceead276a3acba85ff944fde6668e39 (diff)
downloadfsf-binutils-gdb-a91a61923d82c39ebeb9971635b76c7da494cab4.zip
fsf-binutils-gdb-a91a61923d82c39ebeb9971635b76c7da494cab4.tar.gz
fsf-binutils-gdb-a91a61923d82c39ebeb9971635b76c7da494cab4.tar.bz2
Initial Fortran language support, adapted from work by Farooq Butt
(fmbutt@engage.sps.mot.com). * Makefile.in: Add Fortran-related files and dependencies. * defs.h (language_fortran): New language enum. * language.h (_LANG_fortran): Define. (MAX_FORTRAN_DIMS): Define. * expression.h: Reformat to standard. (MULTI_F77_SUBSCRIPT, OP_F77_UNDETERMINED_ARGLIST, OP_F77_LITERAL_COMPLEX, OP_F77_SUBSTR): New expression opcodes. * gdbtypes.h (TYPE_CODE_COMPLEX, TYPE_CODE_LITERAL_COMPLEX, TYPE_CODE_LITERAL_STRING): New type codes. (type): New fields upper_bound_type and lower_bound_type. (TYPE_ARRAY_UPPER_BOUND_TYPE, TYPE_ARRAY_LOWER_BOUND_TYPE, TYPE_ARRAY_UPPER_BOUND_VALUE, TYPE_ARRAY_LOWER_BOUND_VALUE): New macros. (builtin_type_f_character, etc): Declare. * value.h (VALUE_LITERAL_DATA, VALUE_SUBSTRING_START): Define. * f-exp.y: New file, Fortran expression grammar. * f-lang.c: New file, Fortran language support functions. * f-lang.h: New file, Fortran language support declarations. * f-typeprint.c: New file, Fortran type printing. * f-valprint.c: New file, Fortran value printing. * eval.c (evaluate_subexp): Add code for new expression opcodes, fix wording of error message. * gdbtypes.c (f77_create_literal_complex_type, f77_create_literal_string_type): New functions. * language.c (set_language_command): Add Fortran info. (calc_f77_array_dims): New function. * parse.c (length_of_subexp, prefixify_subexp): Add cases for new expression opcodes. * symfile.c (deduce_language_from_filename): Recognize .f and .F as Fortran source files. * valops.c (f77_value_literal_string, f77_value_substring, f77_value_literal_complex): New functions.
Diffstat (limited to 'gdb/parse.c')
-rw-r--r--gdb/parse.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/gdb/parse.c b/gdb/parse.c
index 8c387c8..a16be75 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -466,7 +466,18 @@ length_of_subexp (expr, endpos)
oplen = 3;
break;
+ case OP_F77_LITERAL_COMPLEX:
+ oplen = 1;
+ args = 2;
+ break;
+
+ case OP_F77_SUBSTR:
+ oplen = 1;
+ args = 2;
+ break;
+
case OP_FUNCALL:
+ case OP_F77_UNDETERMINED_ARGLIST:
oplen = 3;
args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
break;
@@ -524,7 +535,9 @@ length_of_subexp (expr, endpos)
/* Modula-2 */
case MULTI_SUBSCRIPT:
- oplen=3;
+ /* Fortran */
+ case MULTI_F77_SUBSCRIPT:
+ oplen = 3;
args = 1 + longest_to_int (expr->elts[endpos- 2].longconst);
break;
@@ -595,7 +608,18 @@ prefixify_subexp (inexpr, outexpr, inend, outbeg)
oplen = 3;
break;
+ case OP_F77_LITERAL_COMPLEX:
+ oplen = 1;
+ args = 2;
+ break;
+
+ case OP_F77_SUBSTR:
+ oplen = 1;
+ args = 2;
+ break;
+
case OP_FUNCALL:
+ case OP_F77_UNDETERMINED_ARGLIST:
oplen = 3;
args = 1 + longest_to_int (inexpr->elts[inend - 2].longconst);
break;
@@ -657,7 +681,9 @@ prefixify_subexp (inexpr, outexpr, inend, outbeg)
/* Modula-2 */
case MULTI_SUBSCRIPT:
- oplen=3;
+ /* Fortran */
+ case MULTI_F77_SUBSCRIPT:
+ oplen = 3;
args = 1 + longest_to_int (inexpr->elts[inend - 2].longconst);
break;