GDB (API)
|
00001 /* Fortran language support definitions for GDB, the GNU debugger. 00002 00003 Copyright (C) 1992-2013 Free Software Foundation, Inc. 00004 00005 Contributed by Motorola. Adapted from the C definitions by Farooq Butt 00006 (fmbutt@engage.sps.mot.com). 00007 00008 This file is part of GDB. 00009 00010 This program is free software; you can redistribute it and/or modify 00011 it under the terms of the GNU General Public License as published by 00012 the Free Software Foundation; either version 3 of the License, or 00013 (at your option) any later version. 00014 00015 This program is distributed in the hope that it will be useful, 00016 but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 GNU General Public License for more details. 00019 00020 You should have received a copy of the GNU General Public License 00021 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 00022 00023 struct type_print_options; 00024 00025 extern int f_parse (void); 00026 00027 extern void f_error (char *); /* Defined in f-exp.y */ 00028 00029 extern void f_print_type (struct type *, const char *, struct ui_file *, int, 00030 int, const struct type_print_options *); 00031 00032 extern void f_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, 00033 struct ui_file *, int, 00034 const struct value *, 00035 const struct value_print_options *); 00036 00037 /* Language-specific data structures */ 00038 00039 /* In F90 subrange expression, either bound could be empty, indicating that 00040 its value is by default that of the corresponding bound of the array or 00041 string. So we have four sorts of subrange in F90. This enumeration type 00042 is to identify this. */ 00043 00044 enum f90_range_type 00045 { 00046 BOTH_BOUND_DEFAULT, /* "(:)" */ 00047 LOW_BOUND_DEFAULT, /* "(:high)" */ 00048 HIGH_BOUND_DEFAULT, /* "(low:)" */ 00049 NONE_BOUND_DEFAULT /* "(low:high)" */ 00050 }; 00051 00052 /* A common block. */ 00053 00054 struct common_block 00055 { 00056 /* The number of entries in the block. */ 00057 size_t n_entries; 00058 00059 /* The contents of the block, allocated using the struct hack. All 00060 pointers in the array are non-NULL. */ 00061 struct symbol *contents[1]; 00062 }; 00063 00064 extern int f77_get_upperbound (struct type *); 00065 00066 extern int f77_get_lowerbound (struct type *); 00067 00068 extern void f77_get_dynamic_array_length (struct type *); 00069 00070 extern int calc_f77_array_dims (struct type *); 00071 00072 00073 /* Fortran (F77) types */ 00074 00075 struct builtin_f_type 00076 { 00077 struct type *builtin_character; 00078 struct type *builtin_integer; 00079 struct type *builtin_integer_s2; 00080 struct type *builtin_logical; 00081 struct type *builtin_logical_s1; 00082 struct type *builtin_logical_s2; 00083 struct type *builtin_logical_s8; 00084 struct type *builtin_real; 00085 struct type *builtin_real_s8; 00086 struct type *builtin_real_s16; 00087 struct type *builtin_complex_s8; 00088 struct type *builtin_complex_s16; 00089 struct type *builtin_complex_s32; 00090 struct type *builtin_void; 00091 }; 00092 00093 /* Return the Fortran type table for the specified architecture. */ 00094 extern const struct builtin_f_type *builtin_f_type (struct gdbarch *gdbarch); 00095