re PR ada/54040 ([x32] Incorrect timeval and timespec)
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 9 Apr 2014 23:18:28 +0000 (23:18 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 9 Apr 2014 23:18:28 +0000 (23:18 +0000)
PR ada/54040
PR ada/59346
* s-osinte-x32.adb (To_Timespec): Add use directive.
* s-osprim-x32.ads (Clock): Adjust.
(To_Timespec): Likewise.

Co-Authored-By: Svante Signell <svante.signell@gmail.com>
From-SVN: r209257

gcc/ada/ChangeLog
gcc/ada/s-osinte-x32.adb
gcc/ada/s-osprim-x32.adb

index c977770..b89bfec 100644 (file)
@@ -12,6 +12,8 @@
        * s-linux-sparc.ads (Time): Likewise.
        * s-linux-x32.ads (Time): Likewise.
        * s-osprim-x32.ads (timespec): Adjust.
+       (Clock): Likewise.
+       (To_Timespec): Likewise.
        * s-osinte-linux.ads (Time): Define local subtypes for those defined
        in System.Linux.
        * s-taprop-linux.adb (Monotonic_Clock): Do not define timeval.
index 17989cd..467970b 100644 (file)
@@ -90,6 +90,7 @@ package body System.OS_Interface is
       S : time_t;
       F : Duration;
 
+      use type System.Linux.time_t;
    begin
       S := time_t (Long_Long_Integer (D));
       F := D - Duration (S);
index fb00e78..e0c020c 100644 (file)
@@ -54,7 +54,7 @@ package body System.OS_Primitives is
    -----------
 
    function Clock return Duration is
-      type timeval is array (1 .. 2) of time_t;
+      type timeval is array (1 .. 2) of Long_Long_Integer;
 
       procedure timeval_to_duration
         (T    : not null access timeval;
@@ -118,7 +118,7 @@ package body System.OS_Primitives is
 
       return
         timespec'(tv_sec  => S,
-                  tv_nsec => time_t (Long_Long_Integer (F * 10#1#E9)));
+                  tv_nsec => Long_Long_Integer (F * 10#1#E9));
    end To_Timespec;
 
    -----------------