This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
GNAT RTEMS Specific Patch
- From: Joel Sherrill <joel dot sherrill at oarcorp dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 21 Apr 2008 14:32:27 -0500
- Subject: GNAT RTEMS Specific Patch
The recent round of AdaCore commits to the trunk
resulted in the RTEMS targets not compiling. Only
RTEMS specific files in this patch. OK to commit?
2008-04-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* s-osinte-rtems.adb: Add sigalstack function.
* s-osinte-rtems.ads: Add SO_ONSTACK and sigalstack
function. Add Alternate_Stack and Alternate_Stack_Size.
Add missing process_shared field to pthread_condattr_t
and change ss_low_priority to int from timespec.
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill@OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
Index: gcc/ada/s-osinte-rtems.adb
===================================================================
--- gcc/ada/s-osinte-rtems.adb (revision 134514)
+++ gcc/ada/s-osinte-rtems.adb (working copy)
@@ -135,4 +135,13 @@
return 0;
end Get_Page_Size;
+ function sigaltstack
+ (ss : not null access stack_t;
+ oss : access stack_t) return int is
+ pragma Unreferenced (ss);
+ pragma Unreferenced (oss);
+ begin
+ return 0;
+ end sigaltstack;
+
end System.OS_Interface;
Index: gcc/ada/s-osinte-rtems.ads
===================================================================
--- gcc/ada/s-osinte-rtems.ads (revision 134514)
+++ gcc/ada/s-osinte-rtems.ads (working copy)
@@ -35,17 +35,21 @@
-- --
------------------------------------------------------------------------------
--- This is the RTEMS version of this package
+-- This is the RTEMS version of this package.
+--
+-- RTEMS target names are of the form CPU-rtems.
+-- This implementation is designed to work on ALL RTEMS targets.
+-- The RTEMS implementation is primarily based upon the POSIX threads
+-- API but there are also bindings to GNAT/RTEMS support routines
+-- to insulate this code from C API specific details and, in some
+-- cases, obtain target architecture and BSP specific information
+-- that is unavailable at the time this package is built.
--- These are guesses based on what I think the GNARL team will want to
--- call the rtems configurations. We use CPU-rtems for the rtems
--- configurations.
-
-- This package encapsulates all direct interfaces to OS services
-- that are needed by children of System.
-- PLEASE DO NOT add any with-clauses to this package
--- or remove the pragma Elaborate_Body.
+-- or remove the pragma Preelaborate.
-- It is designed to be a bottom-level (leaf) package.
with Interfaces.C;
@@ -141,6 +145,11 @@
SA_SIGINFO : constant := 16#02#;
+ SA_ONSTACK : constant := 16#00#;
+ -- SA_ONSTACK is not defined on RTEMS, but it is refered to in the POSIX
+ -- implementation of System.Interrupt_Management. Therefore we define a
+ -- dummy value of zero here so that setting this flag is a nop.
+
SIG_BLOCK : constant := 1;
SIG_UNBLOCK : constant := 2;
SIG_SETMASK : constant := 3;
@@ -249,6 +258,23 @@
-- Stack --
-----------
+ type stack_t is record
+ ss_sp : System.Address;
+ ss_flags : int;
+ ss_size : size_t;
+ end record;
+ pragma Convention (C, stack_t);
+
+ function sigaltstack
+ (ss : not null access stack_t;
+ oss : access stack_t) return int;
+
+ Alternate_Stack : aliased System.Address;
+ -- This is a dummy definition, never used (Alternate_Stack_Size is null)
+
+ Alternate_Stack_Size : constant := 0;
+ -- No alternate signal stack is used on this platform
+
Stack_Base_Available : constant Boolean := False;
-- Indicates whether the stack base is available on this target.
-- This allows us to share s-osinte.adb between all the FSU/RTEMS
@@ -386,7 +412,7 @@
type struct_sched_param is record
sched_priority : int;
- ss_low_priority : timespec;
+ ss_low_priority : int;
ss_replenish_period : timespec;
ss_initial_budget : timespec;
end record;
@@ -512,7 +538,8 @@
pragma Convention (C, pthread_attr_t);
type pthread_condattr_t is record
- flags : int;
+ flags : int;
+ process_shared : int;
end record;
pragma Convention (C, pthread_condattr_t);