Use ui_file_as_string in gdb/compile/
[deliverable/binutils-gdb.git] / gdb / stabsread.c
index 6a4734cc2f1aab340c01edd06bcef13de6285eda..e8ebadd20455966fbe8d7de694bafe7ece55b160 100644 (file)
@@ -353,6 +353,24 @@ dbx_alloc_type (int typenums[2], struct objfile *objfile)
   return (*type_addr);
 }
 
+/* Allocate a floating-point type of size BITS.  */
+
+static struct type *
+dbx_init_float_type (struct objfile *objfile, int bits)
+{
+  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  const struct floatformat **format;
+  struct type *type;
+
+  format = gdbarch_floatformat_for_type (gdbarch, NULL, bits);
+  if (format)
+    type = init_float_type (objfile, bits, NULL, format);
+  else
+    type = init_type (objfile, TYPE_CODE_ERROR, bits / TARGET_CHAR_BIT, NULL);
+
+  return type;
+}
+
 /* for all the stabs in a given stab vector, build appropriate types 
    and fix their symbols in given symbol vector.  */
 
@@ -2133,17 +2151,20 @@ rs6000_builtin_type (int typenum, struct objfile *objfile)
       break;
     case 12:
       /* IEEE single precision (32 bit).  */
-      rettype = init_float_type (objfile, 32, "float", NULL);
+      rettype = init_float_type (objfile, 32, "float",
+                                floatformats_ieee_single);
       break;
     case 13:
       /* IEEE double precision (64 bit).  */
-      rettype = init_float_type (objfile, 64, "double", NULL);
+      rettype = init_float_type (objfile, 64, "double",
+                                floatformats_ieee_double);
       break;
     case 14:
       /* This is an IEEE double on the RS/6000, and different machines with
          different sizes for "long double" should use different negative
          type numbers.  See stabs.texinfo.  */
-      rettype = init_float_type (objfile, 64, "long double", NULL);
+      rettype = init_float_type (objfile, 64, "long double",
+                                floatformats_ieee_double);
       break;
     case 15:
       rettype = init_integer_type (objfile, 32, 0, "integer");
@@ -2152,10 +2173,12 @@ rs6000_builtin_type (int typenum, struct objfile *objfile)
       rettype = init_boolean_type (objfile, 32, 1, "boolean");
       break;
     case 17:
-      rettype = init_float_type (objfile, 32, "short real", NULL);
+      rettype = init_float_type (objfile, 32, "short real",
+                                floatformats_ieee_single);
       break;
     case 18:
-      rettype = init_float_type (objfile, 64, "real", NULL);
+      rettype = init_float_type (objfile, 64, "real",
+                                floatformats_ieee_double);
       break;
     case 19:
       rettype = init_type (objfile, TYPE_CODE_ERROR, 0, "stringptr");
@@ -3842,11 +3865,11 @@ read_sun_floating_type (char **pp, int typenums[2], struct objfile *objfile)
   if (details == NF_COMPLEX || details == NF_COMPLEX16
       || details == NF_COMPLEX32)
     {
-      rettype = init_float_type (objfile, nbits / 2, NULL, NULL);
+      rettype = dbx_init_float_type (objfile, nbits / 2);
       return init_complex_type (objfile, NULL, rettype);
     }
 
-  return init_float_type (objfile, nbits, NULL, NULL);
+  return dbx_init_float_type (objfile, nbits);
 }
 
 /* Read a number from the string pointed to by *PP.
@@ -4133,7 +4156,7 @@ read_range_type (char **pp, int typenums[2], int type_size,
   if (n3 == 0 && n2 > 0)
     {
       struct type *float_type
-       = init_float_type (objfile, n2 * TARGET_CHAR_BIT, NULL, NULL);
+       = dbx_init_float_type (objfile, n2 * TARGET_CHAR_BIT);
 
       if (self_subrange)
        return init_complex_type (objfile, NULL, float_type);
This page took 0.025588 seconds and 4 git commands to generate.