Blame SOURCES/gdb-rhbz1320945-float128-2of9.patch

2c2fa1
commit ae438bc5c06b770c00f37e4ed244707ce3ab9ff4
2c2fa1
Author: Ulrich Weigand <ulrich.weigand@de.ibm.com>
2c2fa1
Date:   Tue Sep 6 17:25:31 2016 +0200
2c2fa1
2c2fa1
    Fix TYPE_SPECIFIC_FIELD for types created via arch_type
2c2fa1
    
2c2fa1
    A type's TYPE_SPECIFIC_FIELD is supposed to be initialized as appropriate
2c2fa1
    for the type code.  This does happen if the type is created via init_type,
2c2fa1
    but not if it created via arch_type.
2c2fa1
    
2c2fa1
    Fixed by extracting the initialization logic into a new set_type_code
2c2fa1
    routine, which is then called from both places.
2c2fa1
    
2c2fa1
    gdb/ChangeLog:
2c2fa1
    
2c2fa1
            * gdbtypes.c (set_type_code): New function.
2c2fa1
            (init_type, arch_type): Use it.
2c2fa1
    
2c2fa1
    Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
2c2fa1
2c2fa1
### a/gdb/ChangeLog
2c2fa1
### b/gdb/ChangeLog
2c2fa1
## -1,5 +1,10 @@
2c2fa1
 2016-09-05  Ulrich Weigand  <uweigand@de.ibm.com>
2c2fa1
 
2c2fa1
+	* gdbtypes.c (set_type_code): New function.
2c2fa1
+	(init_type, arch_type): Use it.
2c2fa1
+
2c2fa1
+2016-09-05  Ulrich Weigand  <uweigand@de.ibm.com>
2c2fa1
+
2c2fa1
 	* ada-lang.c (ada_language_arch_info): Use gdbarch_long_double_bit
2c2fa1
 	instead of gdbarch_double_bit for "long_long_float".
2c2fa1
 
2c2fa1
--- a/gdb/gdbtypes.c
2c2fa1
+++ b/gdb/gdbtypes.c
2c2fa1
@@ -2681,6 +2681,30 @@ allocate_gnat_aux_type (struct type *type)
2c2fa1
   *(TYPE_GNAT_SPECIFIC (type)) = gnat_aux_default;
2c2fa1
 }
2c2fa1
 
2c2fa1
+/* Helper function to initialize a newly allocated type.  Set type code
2c2fa1
+   to CODE and initialize the type-specific fields accordingly.  */
2c2fa1
+
2c2fa1
+static void
2c2fa1
+set_type_code (struct type *type, enum type_code code)
2c2fa1
+{
2c2fa1
+  TYPE_CODE (type) = code;
2c2fa1
+
2c2fa1
+  switch (code)
2c2fa1
+    {
2c2fa1
+      case TYPE_CODE_STRUCT:
2c2fa1
+      case TYPE_CODE_UNION:
2c2fa1
+      case TYPE_CODE_NAMESPACE:
2c2fa1
+        INIT_CPLUS_SPECIFIC (type);
2c2fa1
+        break;
2c2fa1
+      case TYPE_CODE_FLT:
2c2fa1
+        TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT;
2c2fa1
+        break;
2c2fa1
+      case TYPE_CODE_FUNC:
2c2fa1
+	INIT_FUNC_SPECIFIC (type);
2c2fa1
+        break;
2c2fa1
+    }
2c2fa1
+}
2c2fa1
+
2c2fa1
 /* Helper function to initialize the standard scalar types.
2c2fa1
 
2c2fa1
    If NAME is non-NULL, then it is used to initialize the type name.
2c2fa1
@@ -2694,7 +2718,7 @@ init_type (enum type_code code, int length, int flags,
2c2fa1
   struct type *type;
2c2fa1
 
2c2fa1
   type = alloc_type (objfile);
2c2fa1
-  TYPE_CODE (type) = code;
2c2fa1
+  set_type_code (type, code);
2c2fa1
   TYPE_LENGTH (type) = length;
2c2fa1
 
2c2fa1
   gdb_assert (!(flags & (TYPE_FLAG_MIN - 1)));
2c2fa1
@@ -2730,20 +2754,6 @@ init_type (enum type_code code, int length, int flags,
2c2fa1
   if (name && strcmp (name, "char") == 0)
2c2fa1
     TYPE_NOSIGN (type) = 1;
2c2fa1
 
2c2fa1
-  switch (code)
2c2fa1
-    {
2c2fa1
-      case TYPE_CODE_STRUCT:
2c2fa1
-      case TYPE_CODE_UNION:
2c2fa1
-      case TYPE_CODE_NAMESPACE:
2c2fa1
-        INIT_CPLUS_SPECIFIC (type);
2c2fa1
-        break;
2c2fa1
-      case TYPE_CODE_FLT:
2c2fa1
-        TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT;
2c2fa1
-        break;
2c2fa1
-      case TYPE_CODE_FUNC:
2c2fa1
-	INIT_FUNC_SPECIFIC (type);
2c2fa1
-        break;
2c2fa1
-    }
2c2fa1
   return type;
2c2fa1
 }
2c2fa1
 
2c2fa1
@@ -4634,7 +4644,7 @@ arch_type (struct gdbarch *gdbarch,
2c2fa1
   struct type *type;
2c2fa1
 
2c2fa1
   type = alloc_type_arch (gdbarch);
2c2fa1
-  TYPE_CODE (type) = code;
2c2fa1
+  set_type_code (type, code);
2c2fa1
   TYPE_LENGTH (type) = length;
2c2fa1
 
2c2fa1
   if (name)