* spu-tdep.c (info_spu_dma_command): Respect TSQV (tag status
[deliverable/binutils-gdb.git] / gdb / f-lang.c
index b0189a2b2f35a615da69452f6ce96176624b4676..5dcbd33de633725f58d8bff1f452580d6af35fc8 100644 (file)
@@ -1,7 +1,7 @@
 /* Fortran language support routines for GDB, the GNU debugger.
 
    Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003,
-   2004, 2005, 2007 Free Software Foundation, Inc.
+   2004, 2005, 2007, 2008 Free Software Foundation, Inc.
 
    Contributed by Motorola.  Adapted from the C parser by Farooq Butt
    (fmbutt@engage.sps.mot.com).
@@ -70,7 +70,6 @@ static SAVED_F77_COMMON_PTR allocate_saved_f77_common_node (void);
 static void patch_common_entries (SAVED_F77_COMMON_PTR, CORE_ADDR, int);
 #endif
 
-static struct type *f_create_fundamental_type (struct objfile *, int);
 static void f_printchar (int c, struct ui_file * stream);
 static void f_emit_char (int c, struct ui_file * stream, int quoter);
 
@@ -223,170 +222,6 @@ f_printstr (struct ui_file *stream, const gdb_byte *string,
   if (force_ellipses || i < length)
     fputs_filtered ("...", stream);
 }
-
-/* FIXME:  This is a copy of c_create_fundamental_type(), before
-   all the non-C types were stripped from it.  Needs to be fixed
-   by an experienced F77 programmer. */
-
-static struct type *
-f_create_fundamental_type (struct objfile *objfile, int typeid)
-{
-  struct type *type = NULL;
-
-  switch (typeid)
-    {
-    case FT_VOID:
-      type = init_type (TYPE_CODE_VOID,
-                       TARGET_CHAR_BIT / TARGET_CHAR_BIT,
-                       0, "VOID", objfile);
-      break;
-    case FT_BOOLEAN:
-      type = init_type (TYPE_CODE_BOOL,
-                       TARGET_CHAR_BIT / TARGET_CHAR_BIT,
-                       TYPE_FLAG_UNSIGNED, "boolean", objfile);
-      break;
-    case FT_STRING:
-      type = init_type (TYPE_CODE_STRING,
-                       TARGET_CHAR_BIT / TARGET_CHAR_BIT,
-                       0, "string", objfile);
-      break;
-    case FT_CHAR:
-      type = init_type (TYPE_CODE_INT,
-                       TARGET_CHAR_BIT / TARGET_CHAR_BIT,
-                       0, "character", objfile);
-      break;
-    case FT_SIGNED_CHAR:
-      type = init_type (TYPE_CODE_INT,
-                       TARGET_CHAR_BIT / TARGET_CHAR_BIT,
-                       0, "integer*1", objfile);
-      break;
-    case FT_UNSIGNED_CHAR:
-      type = init_type (TYPE_CODE_BOOL,
-                       TARGET_CHAR_BIT / TARGET_CHAR_BIT,
-                       TYPE_FLAG_UNSIGNED, "logical*1", objfile);
-      break;
-    case FT_SHORT:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "integer*2", objfile);
-      break;
-    case FT_SIGNED_SHORT:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "short", objfile);   /* FIXME-fnf */
-      break;
-    case FT_UNSIGNED_SHORT:
-      type = init_type (TYPE_CODE_BOOL,
-                       gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       TYPE_FLAG_UNSIGNED, "logical*2", objfile);
-      break;
-    case FT_INTEGER:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "integer*4", objfile);
-      break;
-    case FT_SIGNED_INTEGER:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "integer", objfile);         /* FIXME -fnf */
-      break;
-    case FT_UNSIGNED_INTEGER:
-      type = init_type (TYPE_CODE_BOOL,
-                       gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       TYPE_FLAG_UNSIGNED, "logical*4", objfile);
-      break;
-    case FT_FIXED_DECIMAL:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "fixed decimal", objfile);
-      break;
-    case FT_LONG:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "long", objfile);
-      break;
-    case FT_SIGNED_LONG:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "long", objfile);    /* FIXME -fnf */
-      break;
-    case FT_UNSIGNED_LONG:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       TYPE_FLAG_UNSIGNED, "unsigned long", objfile);
-      break;
-    case FT_LONG_LONG:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_long_long_bit (current_gdbarch) 
-                        / TARGET_CHAR_BIT,
-                       0, "long long", objfile);
-      break;
-    case FT_SIGNED_LONG_LONG:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_long_long_bit (current_gdbarch) 
-                        / TARGET_CHAR_BIT,
-                       0, "signed long long", objfile);
-      break;
-    case FT_UNSIGNED_LONG_LONG:
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_long_long_bit (current_gdbarch) 
-                        / TARGET_CHAR_BIT,
-                       TYPE_FLAG_UNSIGNED, "unsigned long long", objfile);
-      break;
-    case FT_FLOAT:
-      type = init_type (TYPE_CODE_FLT,
-                       gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "real", objfile);
-      break;
-    case FT_DBL_PREC_FLOAT:
-      type = init_type (TYPE_CODE_FLT,
-                       gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "real*8", objfile);
-      break;
-    case FT_FLOAT_DECIMAL:
-      type = init_type (TYPE_CODE_FLT,
-                       gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "floating decimal", objfile);
-      break;
-    case FT_EXT_PREC_FLOAT:
-      type = init_type (TYPE_CODE_FLT,
-                       gdbarch_long_double_bit (current_gdbarch)
-                         / TARGET_CHAR_BIT,
-                       0, "real*16", objfile);
-      break;
-    case FT_COMPLEX:
-      type = init_type (TYPE_CODE_COMPLEX,
-                       2 * gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "complex*8", objfile);
-      TYPE_TARGET_TYPE (type) = builtin_type_f_real;
-      break;
-    case FT_DBL_PREC_COMPLEX:
-      type = init_type (TYPE_CODE_COMPLEX,
-                       2 * gdbarch_double_bit (current_gdbarch)
-                         / TARGET_CHAR_BIT,
-                       0, "complex*16", objfile);
-      TYPE_TARGET_TYPE (type) = builtin_type_f_real_s8;
-      break;
-    case FT_EXT_PREC_COMPLEX:
-      type = init_type (TYPE_CODE_COMPLEX,
-                       2 * gdbarch_long_double_bit (current_gdbarch)
-                         / TARGET_CHAR_BIT,
-                       0, "complex*32", objfile);
-      TYPE_TARGET_TYPE (type) = builtin_type_f_real_s16;
-      break;
-    default:
-      /* FIXME:  For now, if we are asked to produce a type not in this
-         language, create the equivalent of a C integer type with the
-         name "<?type?>".  When all the dust settles from the type
-         reconstruction work, this should probably become an error. */
-      type = init_type (TYPE_CODE_INT,
-                       gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
-                       0, "<?type?>", objfile);
-      warning (_("internal error: no F77 fundamental type %d"), typeid);
-      break;
-    }
-  return (type);
-}
 \f
 
 /* Table of operators and their precedences for printing expressions.  */
@@ -474,7 +309,6 @@ const struct language_defn f_language_defn =
 {
   "fortran",
   language_fortran,
-  NULL,
   range_check_on,
   type_check_on,
   case_sensitive_off,
@@ -486,12 +320,11 @@ const struct language_defn f_language_defn =
   f_printchar,                 /* Print character constant */
   f_printstr,                  /* function to print string constant */
   f_emit_char,                 /* Function to print a single character */
-  f_create_fundamental_type,   /* Create fundamental type in this language */
   f_print_type,                        /* Print a type using appropriate syntax */
   f_val_print,                 /* Print a value using appropriate syntax */
   c_value_print,               /* FIXME */
   NULL,                                /* Language specific skip_trampoline */
-  value_of_this,               /* value_of_this */
+  NULL,                        /* name_of_this */
   basic_lookup_symbol_nonlocal,        /* lookup_symbol_nonlocal */
   basic_lookup_transparent_type,/* lookup_transparent_type */
   NULL,                                /* Language specific symbol demangler */
@@ -499,10 +332,11 @@ const struct language_defn f_language_defn =
   f_op_print_tab,              /* expression operators for printing */
   0,                           /* arrays are first-class (not c-style) */
   1,                           /* String lower bound */
-  NULL,
   default_word_break_characters,
+  default_make_symbol_completion_list,
   f_language_arch_info,
   default_print_array_index,
+  default_pass_by_reference,
   LANG_MAGIC
 };
 
@@ -529,45 +363,45 @@ build_fortran_types (struct gdbarch *gdbarch)
 
   builtin_f_type->builtin_integer_s2 =
     init_type (TYPE_CODE_INT,
-              gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
               0, "integer*2", (struct objfile *) NULL);
 
   builtin_f_type->builtin_logical_s2 =
     init_type (TYPE_CODE_BOOL,
-              gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
               TYPE_FLAG_UNSIGNED, "logical*2", (struct objfile *) NULL);
 
   builtin_f_type->builtin_integer =
     init_type (TYPE_CODE_INT, 
-              gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
               0, "integer", (struct objfile *) NULL);
 
   builtin_f_type->builtin_logical =
     init_type (TYPE_CODE_BOOL, 
-              gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
               TYPE_FLAG_UNSIGNED, "logical*4", (struct objfile *) NULL);
 
   builtin_f_type->builtin_real =
     init_type (TYPE_CODE_FLT,
-              gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT,
               0,
               "real", (struct objfile *) NULL);
 
   builtin_f_type->builtin_real_s8 =
     init_type (TYPE_CODE_FLT,
-              gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT,
               0,
               "real*8", (struct objfile *) NULL);
 
   builtin_f_type->builtin_real_s16 =
     init_type (TYPE_CODE_FLT,
-              gdbarch_long_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              gdbarch_long_double_bit (gdbarch) / TARGET_CHAR_BIT,
               0,
               "real*16", (struct objfile *) NULL);
 
   builtin_f_type->builtin_complex_s8 =
     init_type (TYPE_CODE_COMPLEX,
-              2 * gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              2 * gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT,
               0,
               "complex*8", (struct objfile *) NULL);
   TYPE_TARGET_TYPE (builtin_f_type->builtin_complex_s8)
@@ -575,7 +409,7 @@ build_fortran_types (struct gdbarch *gdbarch)
 
   builtin_f_type->builtin_complex_s16 =
     init_type (TYPE_CODE_COMPLEX,
-              2 * gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              2 * gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT,
               0,
               "complex*16", (struct objfile *) NULL);
   TYPE_TARGET_TYPE (builtin_f_type->builtin_complex_s16)
@@ -586,7 +420,7 @@ build_fortran_types (struct gdbarch *gdbarch)
 
   builtin_f_type->builtin_complex_s32 =
     init_type (TYPE_CODE_COMPLEX,
-              2 * gdbarch_long_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
+              2 * gdbarch_long_double_bit (gdbarch) / TARGET_CHAR_BIT,
               0,
               "complex*32", (struct objfile *) NULL);
   TYPE_TARGET_TYPE (builtin_f_type->builtin_complex_s32)
@@ -804,8 +638,8 @@ find_common_for_function (char *name, char *funcname)
 
   while (tmp != NULL)
     {
-      if (DEPRECATED_STREQ (tmp->name, name)
-         && DEPRECATED_STREQ (tmp->owning_function, funcname))
+      if (strcmp (tmp->name, name) == 0
+         && strcmp (tmp->owning_function, funcname) == 0)
        return (tmp);
       else
        tmp = tmp->next;
This page took 0.027831 seconds and 4 git commands to generate.