aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/s-stache.ads
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2004-03-18 16:18:36 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2004-03-18 16:18:36 +0100
commita336eacaf1fe8e0ac28decabbc59c7972766f742 (patch)
treec005e46c28cc0d31445b8654f494f202ecaac7fd /gcc/ada/s-stache.ads
parent214ee4a2c634d178c3725178a36c341bb08c4397 (diff)
downloadgcc-a336eacaf1fe8e0ac28decabbc59c7972766f742.zip
gcc-a336eacaf1fe8e0ac28decabbc59c7972766f742.tar.gz
gcc-a336eacaf1fe8e0ac28decabbc59c7972766f742.tar.bz2
[multiple changes]
2004-03-18 Arnaud Charlet <charlet@act-europe.fr> * 5atpopsp.adb: Remove RTEMS from list of platforms using this file. Code clean up: * 5ataprop.adb, 5ftaprop.adb, 5htaprop.adb, 5itaprop.adb, 5staprop.adb, 5vtaprop.adb, 5wtaprop.adb, 7staprop.adb (Finalize_TCB): Use Specific.Set instead of direct call to e.g pthread_setspecific. 2004-03-18 Thomas Quinot <quinot@act-europe.fr> * adaint.c: Update comments. * Makefile.in: set PREFIX_OBJS, SYMLIB, THREADSLIB, and GNATLIB_SHARED for FreeBSD. 2004-03-18 Jose Ruiz <ruiz@act-europe.fr> * init.c [VxWorks]: Do not fix the stack size for the environment task. When needed (stack checking) the stack size is retrieved from the VxWorks kernel. * Makefile.in: Flag -nostdinc is required when building the run time for avoiding looking for files in the base compiler. Add the VxWorks specific version of the package body for System.Stack_checking.Operations (5zstchop.adb). * Make-lang.in: Add the object file for System.Stack_Checking.Operations. * Makefile.rtl: Add object file for the package System.Stack_Checking.Operations. * s-stchop.ads, s-stchop.adb, 5zstchop.adb: New files. * s-stache.ads, s-stache.adb: Move the operations related to stack checking from this package to package System.Stack_Checking.Operations. This way, stack checking operations are only linked in the final executable when using the -fstack-check flag. 2004-03-18 Doug Rupp <rupp@gnat.com> * Makefile.in [VMS]: Handle 64 bit specs (5qsystem.ads, 5xcrtl.ads). Reorganize ifeq's. * 5qsystem.ads, 5xcrtl.ads: New files. 2004-03-18 Vincent Celier <celier@gnat.com> * prj.adb (Reset): Reset hash table Files_Htable * prj-env.adb (Source_Paths, Object_Paths): New tables. (Add_To_Source_Path, Add_To_Object_Path): New procedures, to replace the procedures Add_To_Path_File. (Set_Ada_Paths): Accumulate source and object dirs in the tables, making sure that each directory is present only once and, for object dirs, when a directory already present is added, the duplicate is removed and the directory is always put as the last in the table. Write the path files at the end of these accumulations. * prj-nmsc.adb (Record_Source): Add source file name in hash table Files_Htable for all sources. * prj-proc.adb (Process): Remove restrictions between not directly related extending projects. 2004-03-18 Emmanuel Briot <briot@act-europe.fr> * prj-nmsc.ads, prj-nmsc.adb (Ada_Check): New parameter Trusted_Mode. (Find_Sources): Minor speed optimization. * prj-proc.ads, prj-proc.adb (Check, Recursive_Check, Process): New parameter Trusted_Mode. 2004-03-18 Sergey Rybin <rybin@act-europe.fr> * scn.adb (Determine_License): Take into account a degenerated case when the source contains only comments. 2004-03-18 Ed Schonberg <schonberg@gnat.com> * sem_warn.adb (Check_References): For a warning on a selected component that does not come from source, locate an uninitialized component of the record type to produce a more precise error message. From-SVN: r79623
Diffstat (limited to 'gcc/ada/s-stache.ads')
-rw-r--r--gcc/ada/s-stache.ads45
1 files changed, 9 insertions, 36 deletions
diff --git a/gcc/ada/s-stache.ads b/gcc/ada/s-stache.ads
index f253eb2..932ecf1 100644
--- a/gcc/ada/s-stache.ads
+++ b/gcc/ada/s-stache.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2004 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- --
@@ -33,14 +33,16 @@
-- This package provides a system-independent implementation of stack
-- checking using comparison with stack base and limit.
+-- This package defines basic types and objects. Operations related
+-- to stack checking can be found in package
+-- System.Stack_Checking.Operations.
with System.Storage_Elements;
-pragma Polling (Off);
--- Turn off polling, we do not want polling to take place during stack
--- checking operations. It causes infinite loops and other problems.
-
package System.Stack_Checking is
+
+ pragma Elaborate_Body;
+
type Stack_Info is record
Limit : System.Address := System.Null_Address;
Base : System.Address := System.Null_Address;
@@ -59,30 +61,7 @@ package System.Stack_Checking is
-- upgrowing stack) may contain any address that is part of another stack.
-- The Stack_Access may be part of a larger data structure.
- Multi_Processor : constant Boolean := False; -- Not supported yet
-
- ----------------------
- -- Client Interface --
- ----------------------
-
- procedure Set_Stack_Size
- (Stack_Size : System.Storage_Elements.Storage_Offset);
- -- Specify the stack size for the current task.
-
- procedure Update_Stack_Cache (Stack : Stack_Access);
- -- Set the stack cache for the current task. Note that this is only
- -- for optimization purposes, nothing can be assumed about the
- -- contents of the cache at any time, see Set_Stack_Info.
-
- procedure Invalidate_Stack_Cache (Any_Stack : Stack_Access);
- -- Invalidate cache entries for the task T that owns Any_Stack.
- -- This causes the Set_Stack_Info function to be called during
- -- the next stack check done by T. This can be used to interrupt
- -- task T asynchronously.
- -- Stack_Check should be called in loops for this to work reliably.
-
- function Stack_Check (Stack_Address : System.Address) return Stack_Access;
- -- This version of Stack_Check should not be inlined.
+ Multi_Processor : constant Boolean := False; -- Not supported yet
private
@@ -92,14 +71,8 @@ private
Size => 0);
-- Use explicit assignment to avoid elaboration code (call to init proc).
- Null_Stack : constant Stack_Access := Null_Stack_Info'Access;
+ Null_Stack : constant Stack_Access := Null_Stack_Info'Access;
-- Stack_Access value that will return a Stack_Base and Stack_Limit
-- that fail any stack check.
- Cache : aliased Stack_Access := Null_Stack;
-
- pragma Export (C, Cache, "_gnat_stack_cache");
- pragma Export (C, Stack_Check, "_gnat_stack_check");
- pragma Export (C, Set_Stack_Size, "__gnat_set_stack_size");
-
end System.Stack_Checking;