[Ada] Parametrize exception message length
Arnaud Charlet
charlet@adacore.com
Thu Jun 16 09:18:00 GMT 2005
Tested on i686-linux, committed on mainline.
Exception_Msg_Max_Length is parameterized to allow it to be set to an
appropriate size depending on the target. For example, exceptions signaled
by VMS I/O condition handlers can result in verbose and detailed messages
that overflow the former non-parameterized length of 200 characters.
2005-06-14 Doug Rupp <rupp@adacore.com>
* s-parame-vms.ads, s-parame-hpux.ads, s-parame-vms-restrict.ads,
s-parame-ae653.ads, s-parame.ads, s-parame-vxworks.ads:
Default_Exception_Msg_Max_Length: new parameter.
* a-except.ads: (Exception_Msg_Max_Length): Set to
System.Parameters.Default_Exception_Msg_Max_Length
Add pragma Preelaborate_05 for AI-362
Add warnings off to allow categorization violations for AI-362
-------------- next part --------------
Index: s-parame-vms.ads
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/s-parame-vms.ads,v
retrieving revision 1.1
diff -u -p -r1.1 s-parame-vms.ads
--- s-parame-vms.ads 14 May 2004 10:02:00 -0000 1.1
+++ s-parame-vms.ads 15 Jun 2005 15:45:19 -0000
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2005 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- --
@@ -31,8 +31,7 @@
-- --
------------------------------------------------------------------------------
--- This is the OpenVMS version.
--- Blank line intentional so that it lines up exactly with default.
+-- This is the OpenVMS version
-- This package defines some system dependent parameters for GNAT. These
-- are values that are referenced by the runtime library and are therefore
@@ -199,4 +198,14 @@ pragma Pure (Parameters);
-- predefined output or not (True means that traces are output).
-- See System.Traces for more details.
+ ------------------------------
+ -- Exception Message Length --
+ ------------------------------
+
+ Default_Exception_Msg_Max_Length : constant := 512;
+ -- This constant specifies the maximum number of characters to allow in an
+ -- exception message (see RM 11.4.1(18)). The value for VMS exceeds the
+ -- default minimum of 200 to allow for the length of chained VMS condition
+ -- handling messages.
+
end System.Parameters;
Index: s-parame-hpux.ads
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/s-parame-hpux.ads,v
retrieving revision 1.1
diff -u -p -r1.1 s-parame-hpux.ads
--- s-parame-hpux.ads 14 May 2004 10:02:00 -0000 1.1
+++ s-parame-hpux.ads 15 Jun 2005 15:45:19 -0000
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2005 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- --
@@ -32,7 +32,6 @@
------------------------------------------------------------------------------
-- This is the HP version of this package
--- Blank line intentional so that it lines up exactly with default.
-- This package defines some system dependent parameters for GNAT. These
-- are values that are referenced by the runtime library and are therefore
@@ -199,4 +198,12 @@ pragma Pure (Parameters);
-- predefined output or not (True means that traces are output).
-- See System.Traces for more details.
+ ------------------------------
+ -- Exception Message Length --
+ ------------------------------
+
+ Default_Exception_Msg_Max_Length : constant := 200;
+ -- This constant specifies the default number of characters to allow
+ -- in an exception message (200 is minimum required by RM 11.4.1(18)).
+
end System.Parameters;
Index: s-parame-vms-restrict.ads
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/s-parame-vms-restrict.ads,v
retrieving revision 1.1
diff -u -p -r1.1 s-parame-vms-restrict.ads
--- s-parame-vms-restrict.ads 14 May 2004 10:02:00 -0000 1.1
+++ s-parame-vms-restrict.ads 15 Jun 2005 15:45:19 -0000
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2005 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- --
@@ -31,9 +31,7 @@
-- --
------------------------------------------------------------------------------
--- This is the OpenVMS version for restricted tasking.
-
--- Blank line intentional so that it lines up exactly with default.
+-- This is the OpenVMS version for restricted tasking
-- This package defines some system dependent parameters for GNAT. These
-- are values that are referenced by the runtime library and are therefore
@@ -200,4 +198,14 @@ pragma Pure (Parameters);
-- predefined output or not (True means that traces are output).
-- See System.Traces for more details.
+ ------------------------------
+ -- Exception Message Length --
+ ------------------------------
+
+ Default_Exception_Msg_Max_Length : constant := 512;
+ -- This constant specifies the maximum number of characters to allow in an
+ -- exception message (see RM 11.4.1(18)). The value for VMS exceeds the
+ -- default minimum of 200 to allow for the length of chained VMS condition
+ -- handling messages.
+
end System.Parameters;
Index: s-parame-ae653.ads
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/s-parame-ae653.ads,v
retrieving revision 1.1
diff -u -p -r1.1 s-parame-ae653.ads
--- s-parame-ae653.ads 14 May 2004 10:02:00 -0000 1.1
+++ s-parame-ae653.ads 15 Jun 2005 15:45:19 -0000
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2005 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- --
@@ -31,7 +31,7 @@
-- --
------------------------------------------------------------------------------
--- This is the default VxWorks AE 653 version of the package.`
+-- This is the default VxWorks AE 653 version of the package
-- This package defines some system dependent parameters for GNAT. These
-- are values that are referenced by the runtime library and are therefore
@@ -200,4 +200,12 @@ pragma Pure (Parameters);
-- predefined output or not (True means that traces are output).
-- See System.Traces for more details.
+ ------------------------------
+ -- Exception Message Length --
+ ------------------------------
+
+ Default_Exception_Msg_Max_Length : constant := 200;
+ -- This constant specifies the default number of characters to allow
+ -- in an exception message (200 is minimum required by RM 11.4.1(18)).
+
end System.Parameters;
Index: s-parame.ads
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/s-parame.ads,v
retrieving revision 1.6
diff -u -p -r1.6 s-parame.ads
--- s-parame.ads 21 Oct 2003 13:42:14 -0000 1.6
+++ s-parame.ads 15 Jun 2005 15:45:19 -0000
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2005 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- --
@@ -31,8 +31,7 @@
-- --
------------------------------------------------------------------------------
--- This is the default version used for all systems for which no special
--- target-specific version of this package is provided.
+-- Default version used when no target-specific version is provided
-- This package defines some system dependent parameters for GNAT. These
-- are values that are referenced by the runtime library and are therefore
@@ -199,4 +198,12 @@ pragma Pure (Parameters);
-- predefined output or not (True means that traces are output).
-- See System.Traces for more details.
+ ------------------------------
+ -- Exception Message Length --
+ ------------------------------
+
+ Default_Exception_Msg_Max_Length : constant := 200;
+ -- This constant specifies the default number of characters to allow
+ -- in an exception message (200 is minimum required by RM 11.4.1(18)).
+
end System.Parameters;
Index: s-parame-vxworks.ads
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/s-parame-vxworks.ads,v
retrieving revision 1.1
diff -u -p -r1.1 s-parame-vxworks.ads
--- s-parame-vxworks.ads 14 May 2004 10:02:00 -0000 1.1
+++ s-parame-vxworks.ads 15 Jun 2005 15:45:19 -0000
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2005 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- --
@@ -31,7 +31,7 @@
-- --
------------------------------------------------------------------------------
--- This is the default VxWorks version of the package.`
+-- This is the default VxWorks version of the package`
-- This package defines some system dependent parameters for GNAT. These
-- are values that are referenced by the runtime library and are therefore
@@ -200,4 +200,12 @@ pragma Pure (Parameters);
-- predefined output or not (True means that traces are output).
-- See System.Traces for more details.
+ ------------------------------
+ -- Exception Message Length --
+ ------------------------------
+
+ Default_Exception_Msg_Max_Length : constant := 200;
+ -- This constant specifies the default number of characters to allow
+ -- in an exception message (200 is minimum required by RM 11.4.1(18)).
+
end System.Parameters;
Index: a-except.ads
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/a-except.ads,v
retrieving revision 1.6
diff -u -p -r1.6 a-except.ads
--- a-except.ads 21 Oct 2003 13:41:53 -0000 1.6
+++ a-except.ads 15 Jun 2005 15:45:19 -0000
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2005 Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -39,11 +39,24 @@ pragma Polling (Off);
-- We must turn polling off for this unit, because otherwise we get
-- elaboration circularities with ourself.
+pragma Warnings (Off);
+-- Allow withing of non-Preelaborated units in Ada 2005 mode where this
+-- package will be categorized as Preelaborate. See AI-362 for details.
+-- It is safe in the context of the run-time to violate the rules!
+
with System;
+with System.Parameters;
with System.Standard_Library;
with System.Traceback_Entries;
+pragma Warnings (On);
package Ada.Exceptions is
+pragma Warnings (Off);
+pragma Preelaborate_05 (Exceptions);
+pragma Warnings (On);
+-- In accordance with Ada 2005 AI-362. The warnings pragmas are so that we can
+-- compile this using older compiler versions, which will ignore the pragma,
+-- which is fine for the bootstrap.
type Exception_Id is private;
Null_Id : constant Exception_Id;
@@ -103,10 +116,11 @@ package Ada.Exceptions is
private
package SSL renames System.Standard_Library;
+ package SP renames System.Parameters;
subtype EOA is Exception_Occurrence_Access;
- Exception_Msg_Max_Length : constant := 200;
+ Exception_Msg_Max_Length : constant := SP.Default_Exception_Msg_Max_Length;
------------------
-- Exception_Id --
@@ -288,6 +302,11 @@ private
pragma Stream_Convert (Exception_Occurrence, String_To_EO, EO_To_String);
-- Functions for implementing Exception_Occurrence stream attributes
+ pragma Warnings (Off);
+ -- Allow non-static constants in Ada 2005 mode where this package will be
+ -- implicitly categorized as Preelaborate. See AI-362 for details. It is
+ -- safe in the context of the run-time to violate the rules!
+
Null_Occurrence : constant Exception_Occurrence := (
Id => Null_Id,
Msg_Length => 0,
@@ -299,4 +318,6 @@ private
Tracebacks => (others => TBE.Null_TB_Entry),
Private_Data => System.Null_Address);
+ pragma Warnings (On);
+
end Ada.Exceptions;
More information about the Gcc-patches
mailing list