-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2011, 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- --
type No_Param_Proc is access procedure;
pragma Favor_Top_Level (No_Param_Proc);
+ pragma Suppress_Initialization (No_Param_Proc);
+ -- Some uninitialized objects of that type are initialized by the Binder
+ -- so it is important that such objects are not reset to null during
+ -- elaboration.
+
type Addr_Param_Proc is access procedure (Addr : Address);
pragma Favor_Top_Level (Addr_Param_Proc);
type EO_Param_Proc is access procedure (Excep : EO);
function Check_Abort_Status_NT return Integer;
-- Returns Boolean'Pos (True) iff abort signal should raise
- -- Standard.Abort_Signal.
+ -- Standard'Abort_Signal.
procedure Task_Lock_NT;
-- Lock out other tasks (non-tasking case, does nothing)
-- Handle task termination routines for the environment task (non-tasking
-- case, does nothing).
- procedure Null_Finalize_Global_List;
- -- Finalize global list for controlled objects (does nothing)
-
procedure Adafinal_NT;
-- Shuts down the runtime system (non-tasking case)
Check_Abort_Status : Get_Integer_Call := Check_Abort_Status_NT'Access;
-- Called when Abort_Signal is delivered to the process. Checks to
- -- see if signal should result in raising Standard.Abort_Signal.
+ -- see if signal should result in raising Standard'Abort_Signal.
Lock_Task : No_Param_Proc := Task_Lock_NT'Access;
-- Locks out other tasks. Preceding a section of code by Task_Lock and
Task_Termination_Handler : EO_Param_Proc := Task_Termination_NT'Access;
-- Handle task termination routines (task/non-task case as appropriate)
- Finalize_Global_List : No_Param_Proc := Null_Finalize_Global_List'Access;
- -- Performs finalization of global list for controlled objects
+ Finalize_Library_Objects : No_Param_Proc;
+ pragma Export (C, Finalize_Library_Objects,
+ "__gnat_finalize_library_objects");
+ -- Will be initialized by the binder
Adafinal : No_Param_Proc := Adafinal_NT'Access;
-- Performs the finalization of the Ada Runtime
Get_Sec_Stack_Addr : Get_Address_Call := Get_Sec_Stack_Addr_NT'Access;
Set_Sec_Stack_Addr : Set_Address_Call := Set_Sec_Stack_Addr_NT'Access;
- function Get_Exc_Stack_Addr_NT return Address;
- Get_Exc_Stack_Addr : Get_Address_Call := Get_Exc_Stack_Addr_NT'Access;
-
function Get_Current_Excep_NT return EOA;
Get_Current_Excep : Get_EOA_Call := Get_Current_Excep_NT'Access;
-- Exception Tracebacks Soft-Links --
-------------------------------------
+ Library_Exception : EO;
+ pragma Export (Ada, Library_Exception, "__gnat_library_exception");
+ -- Library-level finalization routines use this common reference to store
+ -- the first library-level exception which occurs during finalization.
+
+ Library_Exception_Set : Boolean := False;
+ pragma Export (Ada, Library_Exception_Set, "__gnat_library_exception_set");
+ -- Used in conjunction with Library_Exception, set when an exception has
+ -- been stored.
+
Traceback_Decorator_Wrapper : Traceback_Decorator_Wrapper_Call;
-- Wrapper to the possible user specified traceback decorator to be
-- called during automatic output of exception data.
-- See the body of Tailored_Exception_Traceback in Ada.Exceptions for
-- a more detailed description of the potential problems.
+ procedure Save_Library_Occurrence (E : Ada.Exceptions.Exception_Occurrence);
+ -- When invoked, this routine saves an exception occurrence into a hidden
+ -- reference. Subsequent calls will have no effect.
+
------------------------
-- Task Specific Data --
------------------------
pragma Inline (Get_Sec_Stack_Addr_Soft);
pragma Inline (Set_Sec_Stack_Addr_Soft);
- function Get_Exc_Stack_Addr_Soft return Address;
-
-- The following is a dummy record designed to mimic Communication_Block as
-- defined in s-tpobop.ads: