https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43485

--- Comment #3 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> Still present on the mainline, but the problem directly comes from the use
> of Ada.Real_Time, i.e. this works if you replace it with Ada.Calendar.

This is apparently sufficient:

diff --git a/gcc/ada/libgnarl/a-retide.adb b/gcc/ada/libgnarl/a-retide.adb
index 80e3d31ed17..d7cac0f2124 100644
--- a/gcc/ada/libgnarl/a-retide.adb
+++ b/gcc/ada/libgnarl/a-retide.adb
@@ -31,11 +31,13 @@

 with Ada.Exceptions;

+with System.Soft_Links;
 with System.Tasking;
 with System.Task_Primitives.Operations;

 package body Ada.Real_Time.Delays is

+   package SSL  renames System.Soft_Links;
    package STPO renames System.Task_Primitives.Operations;

    ----------------
@@ -62,7 +64,9 @@ package body Ada.Real_Time.Delays is
          Ada.Exceptions.Raise_Exception
            (Program_Error'Identity, "potentially blocking operation");
       else
+         SSL.Abort_Defer.all;
          STPO.Timed_Delay (Self_Id, To_Duration (T), Absolute_RT);
+         SSL.Abort_Undefer.all;
       end if;
    end Delay_Until;

Reply via email to