diff options
author | Stan Shebs <shebs@codesourcery.com> | 1994-08-19 21:59:05 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 1994-08-19 21:59:05 +0000 |
commit | a91a61923d82c39ebeb9971635b76c7da494cab4 (patch) | |
tree | 5d26199b5455ca2369b432d008da29521e861908 /gdb/parse.c | |
parent | f3806e3b6ceead276a3acba85ff944fde6668e39 (diff) | |
download | gdb-a91a61923d82c39ebeb9971635b76c7da494cab4.zip gdb-a91a61923d82c39ebeb9971635b76c7da494cab4.tar.gz 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.c | 30 |
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; |