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.
Tested on x86_64-pc-linux-gnu, committed on trunk
2018-07-31 Eric Botcazou <ebotca...@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.
--- gcc/ada/libgnarl/s-osinte__solaris.ads
+++ gcc/ada/libgnarl/s-osinte__solaris.ads
@@ -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);