This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR ada/54040: [x32] Incorrect timeval and timespec


On Thu, Nov 14, 2013 at 2:02 AM, Arnaud Charlet <charlet@adacore.com> wrote:
>> > No, introducing all these extra/almost duplicated files is not OK, you'd
>> > need to find a way to share the existing files instead, thanks.
>>
>> I am not familiar with Ada.  Can you recommend how to fix it?
>
> Can you send a diff between the *-linux files and your new files? This
> should help giving some options.
>

This is the total diff.

Thanks.

-- 
H.J.
--
--- s-osinte-linux.ads    2013-11-13 09:34:14.214149918 -0800
+++ s-osinte-linux-x32.ads    2013-11-13 15:23:14.710394049 -0800
@@ -596,11 +596,11 @@ private

    type pid_t is new int;

-   type time_t is new long;
+   type time_t is new Long_Long_Integer;

    type timespec is record
       tv_sec  : time_t;
-      tv_nsec : long;
+      tv_nsec : Long_Long_Integer;
    end record;
    pragma Convention (C, timespec);

--- s-osinte-posix.adb    2011-10-14 10:59:25.705507873 -0700
+++ s-osinte-linux-x32.adb    2013-11-13 15:23:14.709394072 -0800
@@ -104,7 +104,7 @@ package body System.OS_Interface is
       end if;

       return timespec'(tv_sec => S,
-                       tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+                       tv_nsec => Long_Long_Integer (F * 10#1#E9));
    end To_Timespec;

 end System.OS_Interface;
--- s-osprim-posix.adb    2010-02-22 14:11:20.000000000 -0800
+++ s-osprim-linux-x32.adb    2013-11-13 15:23:14.710394049 -0800
@@ -38,11 +38,11 @@ package body System.OS_Primitives is
    --  these declarations in System.OS_Interface and move these ones in
    --  the spec.

-   type time_t is new Long_Integer;
+   type time_t is new Long_Long_Integer;

    type timespec is record
       tv_sec  : time_t;
-      tv_nsec : Long_Integer;
+      tv_nsec : Long_Long_Integer;
    end record;
    pragma Convention (C, timespec);

@@ -54,7 +54,7 @@ package body System.OS_Primitives is
    -----------

    function Clock return Duration is
-      type timeval is array (1 .. 2) of Long_Integer;
+      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 => Long_Integer (Long_Long_Integer (F * 10#1#E9)));
+                  tv_nsec => Long_Long_Integer (F * 10#1#E9));
    end To_Timespec;

    -----------------
--- s-taprop-linux.adb    2013-11-13 09:34:14.220149775 -0800
+++ s-taprop-linux-x32.adb    2013-11-13 15:23:14.710394049 -0800
@@ -627,7 +627,7 @@ package body System.Task_Primitives.Oper
    function Monotonic_Clock return Duration is
       use Interfaces;

-      type timeval is array (1 .. 2) of C.long;
+      type timeval is array (1 .. 2) of Long_Long_Integer;

       procedure timeval_to_duration
         (T    : not null access timeval;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]