[Ada] Fix alignment of mutex_t and cond_t type on 32-bit SPARC/Solaris
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 31 Jul 2018 09:56:10 +0000 (09:56 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 31 Jul 2018 09:56:10 +0000 (09:56 +0000)
The alignment of the couple of types from System.OS_Interface was wrongly
set to 4 (32-bit) instead of 8 (64-bit) in 32-bit mode.

2018-07-31  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

*  libgnarl/s-osinte__solaris.ads (upad64_t): New private type.
(mutex_t): Use it for 'lock' and 'data' components.
(cond_t): Likewise for 'data' and use single 'flags' component.

From-SVN: r263099

gcc/ada/ChangeLog
gcc/ada/libgnarl/s-osinte__solaris.ads

index 0d26bb50fdadaeb0acde5175863c4ff7a6c10e69..eab50c1e15598dbcb021c510f85e636fbea31f3a 100644 (file)
@@ -1,3 +1,9 @@
+2018-07-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+       *  libgnarl/s-osinte__solaris.ads (upad64_t): New private type.
+       (mutex_t): Use it for 'lock' and 'data' components.
+       (cond_t): Likewise for 'data' and use single 'flags' component.
+
 2018-07-31  Justin Squirek  <squirek@adacore.com>
 
        * exp_ch5.adb (Make_Field_Assign): Force temporarily generated
index 57d1d5c3ecef56b5f7430146578ff8739fa34d9d..8d53d634d35328cf957da9f7a999a4b96bc85527 100644 (file)
@@ -536,17 +536,18 @@ private
    end record;
    pragma Convention (C, record_type_3);
 
+   type upad64_t is new Interfaces.Unsigned_64;
+
    type mutex_t is record
       flags : record_type_3;
-      lock  : String (1 .. 8);
-      data  : String (1 .. 8);
+      lock  : upad64_t;
+      data  : upad64_t;
    end record;
    pragma Convention (C, mutex_t);
 
    type cond_t is record
-      flag  : array_type_9;
-      Xtype : unsigned_long;
-      data  : String (1 .. 8);
+      flags : record_type_3;
+      data  : upad64_t;
    end record;
    pragma Convention (C, cond_t);