summaryrefslogtreecommitdiff
path: root/gcc/ada/s-taprop-vxworks.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-02 10:36:15 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-02 10:36:15 +0000
commit5236d9f4b78e6d6bd620f92334ab4a82b393a21a (patch)
tree89cb9b543c3451d8512a002e8807ce04bbc885d3 /gcc/ada/s-taprop-vxworks.adb
parentdc74650f2613d95f4ff4798d77b8e77a55e06bf8 (diff)
downloadgcc-5236d9f4b78e6d6bd620f92334ab4a82b393a21a.tar.gz
2011-08-02 Ed Schonberg <schonberg@adacore.com>
* exp_ch5.adb (Expand_N_Assignment_Statement): under restriction No_Dispatching_Calls, do not look for the Assign primitive, because predefined primitives are not created in this case. 2011-08-02 Bob Duff <duff@adacore.com> * stylesw.ads: Minor comment fixes. 2011-08-02 Robert Dewar <dewar@adacore.com> * freeze.adb (Add_To_Result): New procedure. 2011-08-02 Jose Ruiz <ruiz@adacore.com> * exp_attr.adb (Find_Stream_Subprogram): When using a configurable run time, if the specific run-time routines for handling streams of strings are not available, use the default mechanism. 2011-08-02 Arnaud Charlet <charlet@adacore.com> * s-regpat.ads: Fix typo. 2011-08-02 Vincent Celier <celier@adacore.com> * prj-conf.adb (Get_Or_Create_Configuration_File): If On_Load_Config is not null, call it to create the in memory config project file without parsing an existing default config project file. 2011-08-02 Eric Botcazou <ebotcazou@adacore.com> * atree.adb (Allocate_Initialize_Node): Remove useless temporaries. 2011-08-02 Ed Schonberg <schonberg@adacore.com> * sem_elim.adb: an abstract subprogram does not need an eliminate pragma for its descendant to be eliminable. 2011-08-02 Ed Falis <falis@adacore.com> * init.c: revert to handling before previous checkin for VxWorks * s-intman-vxworks.adb: delete unnecessary declarations related to using Ada interrupt facilities for handling signals. Delete Initialize_Interrupts. Use __gnat_install_handler instead. * s-intman-vxworks.ads: Import __gnat_install_handler as Initialize_Interrupts. * s-taprop-vxworks.adb: Delete Signal_Mask. (Abort_Handler): change construction of mask to unblock exception signals. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177130 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/s-taprop-vxworks.adb')
-rw-r--r--gcc/ada/s-taprop-vxworks.adb40
1 files changed, 27 insertions, 13 deletions
diff --git a/gcc/ada/s-taprop-vxworks.adb b/gcc/ada/s-taprop-vxworks.adb
index 207b465c579..c2b04a55c57 100644
--- a/gcc/ada/s-taprop-vxworks.adb
+++ b/gcc/ada/s-taprop-vxworks.adb
@@ -19,10 +19,10 @@
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
--- You should have received a copy of the GNU General Public License and --
--- a copy of the GCC Runtime Library Exception along with this program; --
--- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
--- <http://www.gnu.org/licenses/>. --
+-- In particular, you can freely distribute your programs built with the --
+-- GNAT Pro compiler, including any required library run-time units, using --
+-- any licensing terms of your choosing. See the AdaCore Software License --
+-- for full details. --
-- --
-- GNARL was developed by the GNARL team at Florida State University. --
-- Extensive contributions were provided by Ada Core Technologies, Inc. --
@@ -94,11 +94,6 @@ package body System.Task_Primitives.Operations is
Mutex_Protocol : Priority_Type;
- Signal_Mask : aliased sigset_t;
- pragma Import (C, Signal_Mask, "__gnat_signal_mask");
- -- Mask indicating that all exception signals are to be masked
- -- when a signal is propagated.
-
Single_RTS_Lock : aliased RTS_Lock;
-- This is a lock to allow only one thread of control in the RTS at a
-- time; it is used to execute in mutual exclusion from all other tasks.
@@ -180,11 +175,14 @@ package body System.Task_Primitives.Operations is
procedure Abort_Handler (signo : Signal) is
pragma Unreferenced (signo);
- Self_ID : constant Task_Id := Self;
- Old_Set : aliased sigset_t;
- Result : int;
+ Self_ID : constant Task_Id := Self;
+ Old_Set : aliased sigset_t;
+ Unblocked_Mask : aliased sigset_t;
+ Result : int;
pragma Warnings (Off, Result);
+ use System.Interrupt_Management;
+
begin
-- It is not safe to raise an exception when using ZCX and the GCC
-- exception handling mechanism.
@@ -201,10 +199,26 @@ package body System.Task_Primitives.Operations is
-- Make sure signals used for RTS internal purposes are unmasked
+ Result := sigemptyset (Unblocked_Mask'Access);
+ pragma Assert (Result = 0);
+ Result :=
+ sigaddset
+ (Unblocked_Mask'Access,
+ Signal (Abort_Task_Interrupt));
+ pragma Assert (Result = 0);
+ Result := sigaddset (Unblocked_Mask'Access, SIGBUS);
+ pragma Assert (Result = 0);
+ Result := sigaddset (Unblocked_Mask'Access, SIGFPE);
+ pragma Assert (Result = 0);
+ Result := sigaddset (Unblocked_Mask'Access, SIGILL);
+ pragma Assert (Result = 0);
+ Result := sigaddset (Unblocked_Mask'Access, SIGSEGV);
+ pragma Assert (Result = 0);
+
Result :=
pthread_sigmask
(SIG_UNBLOCK,
- Signal_Mask'Access,
+ Unblocked_Mask'Access,
Old_Set'Access);
pragma Assert (Result = 0);