* [Ada] Remove duplicated units
@ 2011-08-01 14:38 Arnaud Charlet
0 siblings, 0 replies; only message in thread
From: Arnaud Charlet @ 2011-08-01 14:38 UTC (permalink / raw)
To: gcc-patches; +Cc: Thomas Quinot
[-- Attachment #1: Type: text/plain, Size: 582 bytes --]
This code reorganization reduces the amount of code duplication in the
GNAT runtime library.
No behaviour change, no test.
Tested on x86_64-pc-linux-gnu, committed on trunk
2011-08-01 Thomas Quinot <quinot@adacore.com>
* s-parame-ae653.ads, s-parame-vms-alpha.ads, s-parame-hpux.ads,
i-cpoint.adb, i-cstrin.adb, i-cpoint.ads, i-cstrin.ads,
s-parame-vms-ia64.ads, s-parame.ads, i-c.ads, s-parame-vxworks.ads,
s-parame-vms-restrict.ads: Remove duplicated Interfaces.C.* packages
for VMS, instead parametrize the common implementation with
System.Parameters declarations.
[-- Attachment #2: difs --]
[-- Type: text/plain, Size: 11059 bytes --]
Index: s-parame-ae653.ads
===================================================================
--- s-parame-ae653.ads (revision 176998)
+++ s-parame-ae653.ads (working copy)
@@ -112,6 +112,15 @@
-- is that this is the same as type Long_Integer, but this is not true
-- of all targets. For example, in OpenVMS long /= Long_Integer.
+ ptr_bits : constant := Standard'Address_Size;
+ subtype C_Address is System.Address;
+ -- Number of bits in Interaces.C pointers, normally a standard address,
+ -- except on 64-bit VMS where they are 32-bit addresses, for compatibility
+ -- with legacy code.
+
+ C_Malloc_Linkname : constant String := "__gnat_malloc";
+ -- Name of runtime function used to allocate such a pointer
+
----------------------------------------------
-- Behavior of Pragma Finalize_Storage_Only --
----------------------------------------------
Index: s-parame-vms-alpha.ads
===================================================================
--- s-parame-vms-alpha.ads (revision 176998)
+++ s-parame-vms-alpha.ads (working copy)
@@ -46,6 +46,8 @@
-- Note: do not introduce any pragma Inline statements into this unit, since
-- otherwise the relinking and rebinding capability would be deactivated.
+with System.Aux_DEC;
+
package System.Parameters is
pragma Pure;
@@ -110,6 +112,15 @@
-- is that this is the same as type Long_Integer, but this is not true
-- of all targets. For example, in OpenVMS long /= Long_Integer.
+ ptr_bits : constant := 32;
+ subtype C_Address is System.Short_Address;
+ -- Number of bits in Interaces.C pointers, normally a standard address,
+ -- except on 64-bit VMS where they are 32-bit addresses, for compatibility
+ -- with legacy code.
+
+ C_Malloc_Linkname : constant String := "__gnat_malloc32";
+ -- Name of runtime function used to allocate such a pointer
+
----------------------------------------------
-- Behavior of Pragma Finalize_Storage_Only --
----------------------------------------------
Index: s-parame-hpux.ads
===================================================================
--- s-parame-hpux.ads (revision 176998)
+++ s-parame-hpux.ads (working copy)
@@ -110,6 +110,15 @@
-- is that this is the same as type Long_Integer, but this is not true
-- of all targets. For example, in OpenVMS long /= Long_Integer.
+ ptr_bits : constant := Standard'Address_Size;
+ subtype C_Address is System.Address;
+ -- Number of bits in Interaces.C pointers, normally a standard address,
+ -- except on 64-bit VMS where they are 32-bit addresses, for compatibility
+ -- with legacy code.
+
+ C_Malloc_Linkname : constant String := "__gnat_malloc";
+ -- Name of runtime function used to allocate such a pointer
+
----------------------------------------------
-- Behavior of Pragma Finalize_Storage_Only --
----------------------------------------------
Index: i-cpoint.adb
===================================================================
--- i-cpoint.adb (revision 176998)
+++ i-cpoint.adb (working copy)
@@ -36,7 +36,7 @@
package body Interfaces.C.Pointers is
- type Addr is mod Memory_Size;
+ type Addr is mod 2 ** System.Parameters.ptr_bits;
function To_Pointer is new Ada.Unchecked_Conversion (Addr, Pointer);
function To_Addr is new Ada.Unchecked_Conversion (Pointer, Addr);
@@ -195,6 +195,7 @@
subtype A is Element_Array (L .. H);
type PA is access A;
+ for PA'Size use System.Parameters.ptr_bits;
function To_PA is new Ada.Unchecked_Conversion (Pointer, PA);
begin
@@ -238,6 +239,7 @@
subtype A is Element_Array (L .. H);
type PA is access A;
+ for PA'Size use System.Parameters.ptr_bits;
function To_PA is new Ada.Unchecked_Conversion (Pointer, PA);
begin
Index: i-cstrin.adb
===================================================================
--- i-cstrin.adb (revision 177030)
+++ i-cstrin.adb (working copy)
@@ -42,10 +42,10 @@
-- this type will in fact be used for aliasing values of other types.
function To_chars_ptr is
- new Ada.Unchecked_Conversion (Address, chars_ptr);
+ new Ada.Unchecked_Conversion (System.Parameters.C_Address, chars_ptr);
function To_Address is
- new Ada.Unchecked_Conversion (chars_ptr, Address);
+ new Ada.Unchecked_Conversion (chars_ptr, System.Parameters.C_Address);
-----------------------
-- Local Subprograms --
@@ -70,7 +70,7 @@
-- compatible, so we directly import here the malloc and free routines.
function Memory_Alloc (Size : size_t) return chars_ptr;
- pragma Import (C, Memory_Alloc, "__gnat_malloc");
+ pragma Import (C, Memory_Alloc, System.Parameters.C_Malloc_Linkname);
procedure Memory_Free (Address : chars_ptr);
pragma Import (C, Memory_Free, "__gnat_free");
Index: i-cpoint.ads
===================================================================
--- i-cpoint.ads (revision 176998)
+++ i-cpoint.ads (working copy)
@@ -33,6 +33,8 @@
-- --
------------------------------------------------------------------------------
+with System.Parameters;
+
generic
type Index is (<>);
type Element is private;
@@ -43,6 +45,7 @@
pragma Preelaborate;
type Pointer is access all Element;
+ for Pointer'Size use System.Parameters.ptr_bits;
pragma No_Strict_Aliasing (Pointer);
-- We turn off any strict aliasing assumptions for the pointer type,
Index: i-cstrin.ads
===================================================================
--- i-cstrin.ads (revision 176998)
+++ i-cstrin.ads (working copy)
@@ -37,6 +37,7 @@
pragma Preelaborate;
type char_array_access is access all char_array;
+ for char_array_access'Size use System.Parameters.ptr_bits;
pragma No_Strict_Aliasing (char_array_access);
-- Since this type is used for external interfacing, with the pointer
@@ -91,7 +92,7 @@
private
type chars_ptr is access all Character;
- pragma Convention (C, chars_ptr);
+ for chars_ptr'Size use System.Parameters.ptr_bits;
pragma No_Strict_Aliasing (chars_ptr);
-- Since this type is used for external interfacing, with the pointer
Index: s-parame-vms-ia64.ads
===================================================================
--- s-parame-vms-ia64.ads (revision 176998)
+++ s-parame-vms-ia64.ads (working copy)
@@ -46,6 +46,8 @@
-- Note: do not introduce any pragma Inline statements into this unit, since
-- otherwise the relinking and rebinding capability would be deactivated.
+with System.Aux_DEC;
+
package System.Parameters is
pragma Pure;
@@ -110,6 +112,15 @@
-- is that this is the same as type Long_Integer, but this is not true
-- of all targets. For example, in OpenVMS long /= Long_Integer.
+ ptr_bits : constant := 32;
+ subtype C_Address is System.Short_Address;
+ -- Number of bits in Interaces.C pointers, normally a standard address,
+ -- except on 64-bit VMS where they are 32-bit addresses, for compatibility
+ -- with legacy code.
+
+ C_Malloc_Linkname : constant String := "__gnat_malloc32";
+ -- Name of runtime function used to allocate such a pointer
+
----------------------------------------------
-- Behavior of Pragma Finalize_Storage_Only --
----------------------------------------------
Index: s-parame.ads
===================================================================
--- s-parame.ads (revision 176998)
+++ s-parame.ads (working copy)
@@ -112,6 +112,15 @@
-- is that this is the same as type Long_Integer, but this is not true
-- of all targets. For example, in OpenVMS long /= Long_Integer.
+ ptr_bits : constant := Standard'Address_Size;
+ subtype C_Address is System.Address;
+ -- Number of bits in Interaces.C pointers, normally a standard address,
+ -- except on 64-bit VMS where they are 32-bit addresses, for compatibility
+ -- with legacy code.
+
+ C_Malloc_Linkname : constant String := "__gnat_malloc";
+ -- Name of runtime function used to allocate such a pointer
+
----------------------------------------------
-- Behavior of Pragma Finalize_Storage_Only --
----------------------------------------------
Index: i-c.ads
===================================================================
--- i-c.ads (revision 176998)
+++ i-c.ads (working copy)
@@ -54,10 +54,10 @@
-- a non-private system.address type.
type ptrdiff_t is
- range -(2 ** (Standard'Address_Size - Integer'(1))) ..
- +(2 ** (Standard'Address_Size - Integer'(1)) - 1);
+ range -(2 ** (System.Parameters.ptr_bits - Integer'(1))) ..
+ +(2 ** (System.Parameters.ptr_bits - Integer'(1)) - 1);
- type size_t is mod 2 ** Standard'Address_Size;
+ type size_t is mod 2 ** System.Parameters.ptr_bits;
-- Floating-Point
Index: s-parame-vxworks.ads
===================================================================
--- s-parame-vxworks.ads (revision 176998)
+++ s-parame-vxworks.ads (working copy)
@@ -112,6 +112,15 @@
-- is that this is the same as type Long_Integer, but this is not true
-- of all targets. For example, in OpenVMS long /= Long_Integer.
+ ptr_bits : constant := Standard'Address_Size;
+ subtype C_Address is System.Address;
+ -- Number of bits in Interaces.C pointers, normally a standard address,
+ -- except on 64-bit VMS where they are 32-bit addresses, for compatibility
+ -- with legacy code.
+
+ C_Malloc_Linkname : constant String := "__gnat_malloc";
+ -- Name of runtime function used to allocate such a pointer
+
----------------------------------------------
-- Behavior of Pragma Finalize_Storage_Only --
----------------------------------------------
Index: s-parame-vms-restrict.ads
===================================================================
--- s-parame-vms-restrict.ads (revision 176998)
+++ s-parame-vms-restrict.ads (working copy)
@@ -46,6 +46,8 @@
-- Note: do not introduce any pragma Inline statements into this unit, since
-- otherwise the relinking and rebinding capability would be deactivated.
+with System.Aux_DEC;
+
package System.Parameters is
pragma Pure;
@@ -110,6 +112,15 @@
-- is that this is the same as type Long_Integer, but this is not true
-- of all targets. For example, in OpenVMS long /= Long_Integer.
+ ptr_bits : constant := 32;
+ subtype C_Address is System.Short_Address;
+ -- Number of bits in Interaces.C pointers, normally a standard address,
+ -- except on 64-bit VMS where they are 32-bit addresses, for compatibility
+ -- with legacy code.
+
+ C_Malloc_Linkname : constant String := "__gnat_malloc32";
+ -- Name of runtime function used to allocate such a pointer
+
----------------------------------------------
-- Behavior of Pragma Finalize_Storage_Only --
----------------------------------------------
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-08-01 14:38 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-01 14:38 [Ada] Remove duplicated units Arnaud Charlet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).