diff gcc/ada/libgnarl/s-taprop__vxworks.adb @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
line wrap: on
line diff
--- a/gcc/ada/libgnarl/s-taprop__vxworks.adb	Thu Oct 25 07:37:49 2018 +0900
+++ b/gcc/ada/libgnarl/s-taprop__vxworks.adb	Thu Feb 13 11:34:05 2020 +0900
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                  B o d y                                 --
 --                                                                          --
---         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+--         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
 --                                                                          --
 -- GNARL is free software; you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -192,7 +192,10 @@
    procedure Abort_Handler (signo : Signal) is
       pragma Unreferenced (signo);
 
-      Self_ID        : constant Task_Id := Self;
+      --  Do not call Self at this point as we're in a signal handler
+      --  and it may not be available, in particular on targets where we
+      --  support ZCX and where we don't do anything here anyway.
+      Self_ID        : Task_Id;
       Old_Set        : aliased sigset_t;
       Unblocked_Mask : aliased sigset_t;
       Result         : int;
@@ -208,6 +211,8 @@
          return;
       end if;
 
+      Self_ID := Self;
+
       if Self_ID.Deferral_Level = 0
         and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
         and then not Self_ID.Aborting