From: Joffrey Huguet <[email protected]>
This patch adds an abstract state defined in Ada.Command_Line and
global contracts to subprograms defined in this unit.
gcc/ada/ChangeLog:
* libgnat/a-comlin.ads (Argument_Count): Add global contract.
(Argument): Likewise.
(Command_Name): Likewise.
(Set_Exit_Status): Likewise.
* libgnat/a-comlin.adb: Refine abstract state.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/libgnat/a-comlin.adb | 4 +++-
gcc/ada/libgnat/a-comlin.ads | 17 ++++++++++++-----
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/gcc/ada/libgnat/a-comlin.adb b/gcc/ada/libgnat/a-comlin.adb
index e4a814dd1d0..3aa389aea7f 100644
--- a/gcc/ada/libgnat/a-comlin.adb
+++ b/gcc/ada/libgnat/a-comlin.adb
@@ -31,7 +31,9 @@
with System; use System;
-package body Ada.Command_Line is
+package body Ada.Command_Line with
+ Refined_State => (Program_Exit_Status => null)
+is
function Arg_Count return Natural;
pragma Import (C, Arg_Count, "__gnat_arg_count");
diff --git a/gcc/ada/libgnat/a-comlin.ads b/gcc/ada/libgnat/a-comlin.ads
index f6e2cf2a6fb..cb1e8fe47e5 100644
--- a/gcc/ada/libgnat/a-comlin.ads
+++ b/gcc/ada/libgnat/a-comlin.ads
@@ -37,10 +37,14 @@
-- command line arguments and to set the exit status of the program as defined
-- by ARM A.15.
-package Ada.Command_Line is
+package Ada.Command_Line with
+ Abstract_State => (Program_Exit_Status),
+ Initializes => (Program_Exit_Status)
+is
pragma Preelaborate;
- function Argument_Count return Natural;
+ function Argument_Count return Natural with
+ Global => null;
-- If the external execution environment supports passing arguments to a
-- program, then Argument_Count returns the number of arguments passed to
-- the program invoking the function. Otherwise it return 0.
@@ -54,7 +58,8 @@ package Ada.Command_Line is
-- SPARK does not yet support raise expressions.
function Argument (Number : Positive) return String with
- Pre => Number <= Argument_Count;
+ Pre => Number <= Argument_Count,
+ Global => null;
-- If the external execution environment supports passing arguments to
-- a program, then Argument returns an implementation-defined value
-- corresponding to the argument at relative position Number. If Number
@@ -63,7 +68,8 @@ package Ada.Command_Line is
--
-- in GNAT: Corresponds to argv [n] (for n > 0) in C.
- function Command_Name return String;
+ function Command_Name return String with
+ Global => null;
-- If the external execution environment supports passing arguments to
-- a program, then Command_Name returns an implementation-defined value
-- corresponding to the name of the command invoking the program.
@@ -76,7 +82,8 @@ package Ada.Command_Line is
Success : constant Exit_Status;
Failure : constant Exit_Status;
- procedure Set_Exit_Status (Code : Exit_Status);
+ procedure Set_Exit_Status (Code : Exit_Status) with
+ Global => (Output => Program_Exit_Status);
------------------------------------
-- Note on Interface Requirements --
--
2.53.0