Add missing format for built-in floating-point types
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Tue, 6 Sep 2016 15:31:03 +0000 (17:31 +0200)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Tue, 6 Sep 2016 15:31:03 +0000 (17:31 +0200)
Many callers of init_float_type and arch_float_type still pass a NULL
floatformat.  This commit changes those callers where the floatformat
that is supposed to be use is obvious.  There are two categories where
this is the case:

- A number of built-in types are intended to match the platform ABI
  floating-point types (i.e. types that use gdbarch_float_bit etc.).
  Those places should use the platform ABI floating-point formats
  defined via gdbarch_float_format etc.

- A number of language built-in types should simply use IEEE floating-
  point formats, since the language actually defines that this is the
  format that must be used to implement floating-point types for this
  language.  (This affects Java, Go, and Rust.)  The same applies for
  to the predefined "RS/6000" stabs floating-point built-in types.

gdb/ChangeLog:

* ada-lang.c (ada_language_arch_info): Use gdbarch-provided
platform ABI floating-point formats for built-in types.
* d-lang.c (build_d_types): Likewise.
* f-lang.c (build_fortran_types): Likewise.
* m2-lang.c (build_m2_types): Likewise.
* mdebugread.c (basic_type): Likewise.

* go-lang.c (build_go_types): Use IEEE floating-point formats
for language built-in types as mandanted by the language.
* jv-lang.c (build_java_types): Likewise.
* rust-lang.c (rust_language_arch_info): Likewise.
* stabsread.c (rs6000_builtin_type): Likewise.

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
gdb/ChangeLog
gdb/ada-lang.c
gdb/d-lang.c
gdb/f-lang.c
gdb/go-lang.c
gdb/jv-lang.c
gdb/m2-lang.c
gdb/mdebugread.c
gdb/rust-lang.c
gdb/stabsread.c

index 5db0f666b00d85b50a1c2f0b9af92c33ef1905ee..1dbddac0d5cf72592ca0a4b205de8ea556b1c5d5 100644 (file)
@@ -1,3 +1,18 @@
+2016-09-05  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * ada-lang.c (ada_language_arch_info): Use gdbarch-provided
+       platform ABI floating-point formats for built-in types.
+       * d-lang.c (build_d_types): Likewise.
+       * f-lang.c (build_fortran_types): Likewise.
+       * m2-lang.c (build_m2_types): Likewise.
+       * mdebugread.c (basic_type): Likewise.
+
+       * go-lang.c (build_go_types): Use IEEE floating-point formats
+       for language built-in types as mandanted by the language.
+       * jv-lang.c (build_java_types): Likewise.
+       * rust-lang.c (rust_language_arch_info): Likewise.
+       * stabsread.c (rs6000_builtin_type): Likewise.
+
 2016-09-05  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * gdbtypes.c (init_type): Remove "char" special case.
index b8cc982a434413774efa1f682fd7ac22b5ecccd1..be2f47a6bc964d0bda001e57c9e344612055a35e 100644 (file)
@@ -14004,16 +14004,16 @@ ada_language_arch_info (struct gdbarch *gdbarch,
     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
   lai->primitive_type_vector [ada_primitive_type_float]
     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
-                      "float", NULL);
+                      "float", gdbarch_float_format (gdbarch));
   lai->primitive_type_vector [ada_primitive_type_double]
     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
-                      "long_float", NULL);
+                      "long_float", gdbarch_double_format (gdbarch));
   lai->primitive_type_vector [ada_primitive_type_long_long]
     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
                         0, "long_long_integer");
   lai->primitive_type_vector [ada_primitive_type_long_double]
     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
-                      "long_long_float", NULL);
+                      "long_long_float", gdbarch_long_double_format (gdbarch));
   lai->primitive_type_vector [ada_primitive_type_natural]
     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
                         0, "natural");
index 2eb7ffa108da054c2b5f5bec3cb988e617610d70..5fbc2429feb81eb965d8f6ad380ebf347c3f68a1 100644 (file)
@@ -287,13 +287,13 @@ build_d_types (struct gdbarch *gdbarch)
     = arch_integer_type (gdbarch, 128, 1, "ucent");
   builtin_d_type->builtin_float
     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
-                      "float", NULL);
+                      "float", gdbarch_float_format (gdbarch));
   builtin_d_type->builtin_double
     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
-                      "double", NULL);
+                      "double", gdbarch_double_format (gdbarch));
   builtin_d_type->builtin_real
     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
-                      "real", NULL);
+                      "real", gdbarch_long_double_format (gdbarch));
 
   TYPE_INSTANCE_FLAGS (builtin_d_type->builtin_byte)
     |= TYPE_INSTANCE_FLAG_NOTTEXT;
@@ -303,13 +303,13 @@ build_d_types (struct gdbarch *gdbarch)
   /* Imaginary and complex types.  */
   builtin_d_type->builtin_ifloat
     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
-                      "ifloat", NULL);
+                      "ifloat", gdbarch_float_format (gdbarch));
   builtin_d_type->builtin_idouble
     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
-                      "idouble", NULL);
+                      "idouble", gdbarch_double_format (gdbarch));
   builtin_d_type->builtin_ireal
     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
-                      "ireal", NULL);
+                      "ireal", gdbarch_long_double_format (gdbarch));
   builtin_d_type->builtin_cfloat
     = arch_complex_type (gdbarch, "cfloat",
                         builtin_d_type->builtin_float);
index 58f58ddaf9957c3d49c3eb3ce959f9c363496679..29fdb3b90e0d859081ab1bb2e8714adca10715eb 100644 (file)
@@ -332,13 +332,13 @@ build_fortran_types (struct gdbarch *gdbarch)
 
   builtin_f_type->builtin_real
     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
-                      "real", NULL);
+                      "real", gdbarch_float_format (gdbarch));
   builtin_f_type->builtin_real_s8
     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
-                      "real*8", NULL);
+                      "real*8", gdbarch_double_format (gdbarch));
   builtin_f_type->builtin_real_s16
     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
-                      "real*16", NULL);
+                      "real*16", gdbarch_long_double_format (gdbarch));
 
   builtin_f_type->builtin_complex_s8
     = arch_complex_type (gdbarch, "complex*8",
index 0a0101d86daff3e4e48b4651eb199a00d77b3851..4fba8a092f2071324aa72586296c5421bd723512 100644 (file)
@@ -648,9 +648,9 @@ build_go_types (struct gdbarch *gdbarch)
   builtin_go_type->builtin_uint64
     = arch_integer_type (gdbarch, 64, 1, "uint64");
   builtin_go_type->builtin_float32
-    = arch_float_type (gdbarch, 32, "float32", NULL);
+    = arch_float_type (gdbarch, 32, "float32", floatformats_ieee_single);
   builtin_go_type->builtin_float64
-    = arch_float_type (gdbarch, 64, "float64", NULL);
+    = arch_float_type (gdbarch, 64, "float64", floatformats_ieee_double);
   builtin_go_type->builtin_complex64
     = arch_complex_type (gdbarch, "complex64",
                         builtin_go_type->builtin_float32);
index bc2fc626e027c01cb37c584d595d7a55e637739a..6bf72b9429d5b30f5ecd0393482bfb1cba74bda7 100644 (file)
@@ -1241,9 +1241,9 @@ build_java_types (struct gdbarch *gdbarch)
   builtin_java_type->builtin_char
     = arch_character_type (gdbarch, 16, 1, "char");
   builtin_java_type->builtin_float
-    = arch_float_type (gdbarch, 32, "float", NULL);
+    = arch_float_type (gdbarch, 32, "float", floatformats_ieee_single);
   builtin_java_type->builtin_double
-    = arch_float_type (gdbarch, 64, "double", NULL);
+    = arch_float_type (gdbarch, 64, "double", floatformats_ieee_double);
   builtin_java_type->builtin_void
     = arch_type (gdbarch, TYPE_CODE_VOID, 1, "void");
 
index 67d0f6b80f0ff428c219ddd49ff4a08d4e44c2da..afe211791ff2dba762f9b29ac1d4cc467b37ae44 100644 (file)
@@ -413,7 +413,8 @@ build_m2_types (struct gdbarch *gdbarch)
   builtin_m2_type->builtin_card
     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 1, "CARDINAL");
   builtin_m2_type->builtin_real
-    = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch), "REAL", NULL);
+    = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch), "REAL",
+                      gdbarch_float_format (gdbarch));
   builtin_m2_type->builtin_char
     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "CHAR");
   builtin_m2_type->builtin_bool
index 336609ac8aba8fe4b0bac01177d5f9b29cb57395..157ce77a8c96ce530209a2b9d85df49a6b953711 100644 (file)
@@ -1441,12 +1441,12 @@ basic_type (int bt, struct objfile *objfile)
 
     case btFloat:
       tp = init_float_type (objfile, gdbarch_float_bit (gdbarch),
-                           "float", NULL);
+                           "float", gdbarch_float_format (gdbarch));
       break;
 
     case btDouble:
       tp = init_float_type (objfile, gdbarch_double_bit (gdbarch),
-                           "double", NULL);
+                           "double", gdbarch_double_format (gdbarch));
       break;
 
     case btComplex:
index 481a4fc59430ca319c5b00b72382461002423915..77f7428f3ab333960fb71d64f3375a4c4bf76bfe 100644 (file)
@@ -1128,8 +1128,10 @@ rust_language_arch_info (struct gdbarch *gdbarch,
   types[rust_primitive_isize] = arch_integer_type (gdbarch, length, 0, "isize");
   types[rust_primitive_usize] = arch_integer_type (gdbarch, length, 1, "usize");
 
-  types[rust_primitive_f32] = arch_float_type (gdbarch, 32, "f32", NULL);
-  types[rust_primitive_f64] = arch_float_type (gdbarch, 64, "f64", NULL);
+  types[rust_primitive_f32] = arch_float_type (gdbarch, 32, "f32",
+                                              floatformats_ieee_single);
+  types[rust_primitive_f64] = arch_float_type (gdbarch, 64, "f64",
+                                              floatformats_ieee_double);
 
   types[rust_primitive_unit] = arch_integer_type (gdbarch, 0, 1, "()");
 
index 6a4734cc2f1aab340c01edd06bcef13de6285eda..3bad6ac85c8182a48959d35ca578c24721dd42e9 100644 (file)
@@ -2133,17 +2133,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 +2155,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");