Skip to content

Commit 8d6ddfc

Browse files
committed
Added System.Return_Stack.
* common/s-retsta.ads: new, added from GCC 13.0.1 (20230129). This is required by GCC 13, but does no harm for earlier releases (tested against GCC 11, 12).
1 parent d537c4c commit 8d6ddfc

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

common/s-retsta.ads

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
------------------------------------------------------------------------------
2+
-- --
3+
-- GNAT COMPILER COMPONENTS --
4+
-- --
5+
-- S Y S T E M . R E T U R N _ S T A C K --
6+
-- --
7+
-- S p e c --
8+
-- --
9+
-- Copyright (C) 2022-2023, Free Software Foundation, Inc. --
10+
-- --
11+
-- GNAT is free software; you can redistribute it and/or modify it under --
12+
-- terms of the GNU General Public License as published by the Free Soft- --
13+
-- ware Foundation; either version 3, or (at your option) any later ver- --
14+
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15+
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16+
-- or FITNESS FOR A PARTICULAR PURPOSE. --
17+
-- --
18+
-- As a special exception under Section 7 of GPL version 3, you are granted --
19+
-- additional permissions described in the GCC Runtime Library Exception, --
20+
-- version 3.1, as published by the Free Software Foundation. --
21+
-- --
22+
-- You should have received a copy of the GNU General Public License and --
23+
-- a copy of the GCC Runtime Library Exception along with this program; --
24+
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
25+
-- <http://www.gnu.org/licenses/>. --
26+
-- --
27+
-- GNAT was originally developed by the GNAT team at New York University. --
28+
-- Extensive contributions were provided by Ada Core Technologies Inc. --
29+
-- --
30+
------------------------------------------------------------------------------
31+
32+
-- This small package provides direct access to the return stack of the code
33+
-- generator for functions returning a by-reference type. This return stack
34+
-- is the portion of the primary stack that has been allocated by callers of
35+
-- the functions and onto which the functions put the result before returning.
36+
37+
with System.Storage_Elements;
38+
39+
package System.Return_Stack is
40+
pragma Preelaborate;
41+
42+
package SSE renames System.Storage_Elements;
43+
44+
procedure RS_Allocate
45+
(Addr : out Address;
46+
Storage_Size : SSE.Storage_Count);
47+
pragma Import (Intrinsic, RS_Allocate, "__builtin_return_slot");
48+
-- Allocate enough space on the return stack of the invoking task to
49+
-- accommodate a return of size Storage_Size. Return the address of the
50+
-- first byte of the allocation in Addr.
51+
52+
private
53+
RS_Pool : Integer;
54+
-- Unused entity that is just present to ease the sharing of the pool
55+
-- mechanism for specific allocation/deallocation in the compiler.
56+
57+
end System.Return_Stack;

0 commit comments

Comments
 (0)