/* Support for printing Fortran values for GDB, the GNU debugger.
- Copyright 1993, 1994 Free Software Foundation, Inc.
+ Copyright 1993, 1994, 1995 Free Software Foundation, Inc.
Contributed by Motorola. Adapted from the C definitions by Farooq Butt
(fmbutt@engage.sps.mot.com), additionally worked over by Stan Shebs.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "defs.h"
-#include <string.h>
+#include "gdb_string.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"
#include "gdbcore.h"
#include "command.h"
-extern struct obstack dont_print_obstack;
-
-extern unsigned int print_max; /* No of array elements to print */
-
-extern int calc_f77_array_dims PARAMS ((struct type *));
+#if 0
+static int there_is_a_visible_common_named PARAMS ((char *));
+#endif
+
+static void info_common_command PARAMS ((char *, int));
+static void list_all_visible_commons PARAMS ((char *));
+static void f77_print_array PARAMS ((struct type *, char *, CORE_ADDR,
+ FILE *, int, int, int,
+ enum val_prettyprint));
+static void f77_print_array_1 PARAMS ((int, int, struct type *, char *,
+ CORE_ADDR, FILE *, int, int, int,
+ enum val_prettyprint));
+static void f77_create_arrayprint_offset_tbl PARAMS ((struct type *, FILE *));
+static void f77_get_dynamic_length_of_aggregate PARAMS ((struct type *));
int f77_array_offset_tbl[MAX_FORTRAN_DIMS+1][2];
/* Obtain F77 adjustable array dimensions */
-void
+static void
f77_get_dynamic_length_of_aggregate (type)
struct type *type;
{
/* Patch in a valid length value. */
TYPE_LENGTH (type) =
- (upper_bound - lower_bound + 1) * TYPE_LENGTH (TYPE_TARGET_TYPE (type));
+ (upper_bound - lower_bound + 1) * TYPE_LENGTH (check_typedef (TYPE_TARGET_TYPE (type)));
}
/* Function that sets up the array offset,size table for the array
type "type". */
-void
+static void
f77_create_arrayprint_offset_tbl (type, stream)
struct type *type;
FILE *stream;
/* Actual function which prints out F77 arrays, Valaddr == address in
the superior. Address == the address in the inferior. */
-void
+static void
f77_print_array_1 (nss, ndimensions, type, valaddr, address,
stream, format, deref_ref, recurse, pretty)
int nss;
int ndimensions;
- char *valaddr;
struct type *type;
+ char *valaddr;
CORE_ADDR address;
FILE *stream;
int format;
f77_print_array_1 (nss + 1, ndimensions, TYPE_TARGET_TYPE (type),
valaddr + i * F77_DIM_OFFSET (nss),
address + i * F77_DIM_OFFSET (nss),
- stream, format, deref_ref, recurse, pretty, i);
+ stream, format, deref_ref, recurse, pretty);
fprintf_filtered (stream, ") ");
}
}
/* This function gets called to print an F77 array, we set up some
stuff and then immediately call f77_print_array_1() */
-void
+static void
f77_print_array (type, valaddr, address, stream, format, deref_ref, recurse,
pretty)
struct type *type;
enum val_prettyprint pretty;
{
register unsigned int i = 0; /* Number of characters printed */
- unsigned len;
struct type *elttype;
LONGEST val;
- char *localstr;
- char *straddr;
CORE_ADDR addr;
+ CHECK_TYPEDEF (type);
switch (TYPE_CODE (type))
{
case TYPE_CODE_STRING:
else
{
addr = unpack_pointer (type, valaddr);
- elttype = TYPE_TARGET_TYPE (type);
+ elttype = check_typedef (TYPE_TARGET_TYPE (type));
if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
{
return 0;
}
-void
+static void
list_all_visible_commons (funname)
char *funname;
{
/* This function is used to determine whether there is a
F77 common block visible at the current scope called 'comname'. */
-int
+#if 0
+static int
there_is_a_visible_common_named (comname)
char *comname;
{
return (the_common ? 1 : 0);
}
+#endif
void
_initialize_f_valprint ()