summaryrefslogtreecommitdiff
path: root/gcc/ada/lib-writ.ads
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/lib-writ.ads')
-rw-r--r--gcc/ada/lib-writ.ads67
1 files changed, 62 insertions, 5 deletions
diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads
index 977b4b38205..cdd456bfade 100644
--- a/gcc/ada/lib-writ.ads
+++ b/gcc/ada/lib-writ.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2004 Free Software Foundation, Inc. --
-- --
-- GNAT 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- --
@@ -205,12 +205,17 @@ package Lib.Writ is
-- -- R Restrictions --
-- ---------------------
+ -- Two lines are generated to record the status of restrictions that can
+ -- be specified by pragma Restrictions. The first of these lines refers
+ -- to Restriction_Id values:
+
-- R <<restriction-characters>>
- -- This line records information regarding restrictions. The
- -- parameter is a string of characters, one for each entry in
- -- Restrict.Compilation_Unit_Restrictions, in order. There are
- -- three settings possible settings for each restriction:
+ -- This line records information regarding restrictions that do
+ -- not take parameter values. Here "restriction-characters is a
+ -- string of characters, one for each value (in order) defined
+ -- in Restrict.All_Boolean_Restrictions. There are three possible
+ -- settings for each restriction:
-- r Restricted. Unit was compiled under control of a pragma
-- Restrictions for the corresponding restriction. In
@@ -231,6 +236,58 @@ package Lib.Writ is
-- has "v", which is not permitted, since these restrictions
-- are partition-wide.
+ -- The second R line refers to parameter restrictions:
+
+ -- R <<restriction-parameter-id-entries>>
+
+ -- The parameter is a string of entries, one for each value in
+ -- Restrict.All_Parameter_Restrictions. Each entry has two
+ -- components in sequence, the first indicating whether or not
+ -- there is a restriction, and the second indicating whether
+ -- or not the compiler detected violations. In the boolean case
+ -- it is not necessary to separate these, since if a restriction
+ -- is set, and violated, that is an error. But in the parameter
+ -- case, this is not true. For example, we can have a unit with
+ -- a pragma Restrictions (Max_Tasks => 4), where the compiler
+ -- can detect that there are exactly three tasks declared. Both
+ -- of these pieces of information must be passed to the binder.
+ -- The parameter of 4 is important in case the total number of
+ -- tasks in the partition is greater than 4. The parameter of
+ -- 3 is important in case some other unit has a restrictions
+ -- pragma with Max_Tasks=>2.
+
+ -- The component for the presence of restriction has one of two
+ -- possible forms:
+
+ -- n No pragma for this restriction is present in the
+ -- set of units for this ali file.
+
+ -- rN At least one pragma for this restriction is present
+ -- in the set of units for this ali file. The value N
+ -- is the minimum parameter value encountered in any
+ -- such pragma. N is in the range of Integer (a value
+ -- larger than N'Last causes the pragma to be ignored).
+
+ -- The component for the violation detection has one of three
+ -- possible forms:
+
+ -- n No violations were detected by the compiler
+
+ -- vN A violation was detected. N is either the maximum or total
+ -- count of violations (depending on the checking type) in
+ -- all the units represented by the ali file). Note that
+ -- this setting is only allowed for restrictions that are
+ -- in Checked_[Max|Sum]_Parameter_Restrictions. The value
+ -- here is known to be exact by the compiler and is in the
+ -- range of Natural.
+
+ -- vN+ A violation was detected. The compiler cannot determine
+ -- the exact count of violations, but it is at least N.
+
+ -- There are no spaces in the line, so the entry for the example
+ -- in the header of this section for Max_Tasks would appear as
+ -- the string r4v3.
+
-- ------------------------
-- -- I Interrupt States --
-- ------------------------