aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2019-04-09 16:43:22 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-04-09 16:43:22 +0000
commit9bafe5a81e42406b86a65ef14b011ed9acc96c5d (patch)
tree35478f4f4ff092374f748479debcda06b96dd6dd /gcc/ada
parent10f47d3d1dc2e1267a32fa6459655b4645a9adad (diff)
parent3fa176b767e14e1d2491775978afac3e87892d1d (diff)
downloadgcc-9bafe5a81e42406b86a65ef14b011ed9acc96c5d.zip
gcc-9bafe5a81e42406b86a65ef14b011ed9acc96c5d.tar.gz
gcc-9bafe5a81e42406b86a65ef14b011ed9acc96c5d.tar.bz2
Merge from trunk revision 270220.
From-SVN: r270233
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog12
-rw-r--r--gcc/ada/libgnat/g-socket.adb13
-rw-r--r--gcc/ada/libgnat/i-cexten.ads10
3 files changed, 27 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 6cb5389..7e36b01 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,15 @@
+2019-04-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/i-cexten.ads (CFloat_128): New type.
+
+2019-03-22 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ PR ada/89583
+ * libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
+ Send_Socket): Fix the computation of structure lengths passed to
+ low level routines.
+ (Is_IPv6_Address): Fix the number of expected colons.
+
2019-03-11 Martin Liska <mliska@suse.cz>
* gcc-interface/misc.c (gnat_post_options): Wrap option name in string
diff --git a/gcc/ada/libgnat/g-socket.adb b/gcc/ada/libgnat/g-socket.adb
index c0b3079..476a213 100644
--- a/gcc/ada/libgnat/g-socket.adb
+++ b/gcc/ada/libgnat/g-socket.adb
@@ -461,12 +461,12 @@ package body GNAT.Sockets is
is
Res : C.int;
Sin : aliased Sockaddr;
- Len : constant C.int := Sin'Size / 8;
begin
Set_Address (Sin'Unchecked_Access, Address);
- Res := C_Bind (C.int (Socket), Sin'Address, Len);
+ Res := C_Bind
+ (C.int (Socket), Sin'Address, C.int (Lengths (Address.Family)));
if Res = Failure then
Raise_Socket_Error (Socket_Errno);
@@ -666,12 +666,11 @@ package body GNAT.Sockets is
Server : Sock_Addr_Type) return C.int
is
Sin : aliased Sockaddr;
- Len : constant C.int := Sin'Size / 8;
-
begin
Set_Address (Sin'Unchecked_Access, Server);
- return C_Connect (C.int (Socket), Sin'Address, Len);
+ return C_Connect
+ (C.int (Socket), Sin'Address, C.int (Lengths (Server.Family)));
end Connect_Socket;
procedure Connect_Socket
@@ -1794,7 +1793,7 @@ package body GNAT.Sockets is
end if;
end loop;
- return Colons <= 7;
+ return Colons <= 8;
end Is_IPv6_Address;
---------------------
@@ -2403,7 +2402,7 @@ package body GNAT.Sockets is
if To /= null then
Set_Address (Sin'Unchecked_Access, To.all);
C_To := Sin'Address;
- Len := Sin'Size / 8;
+ Len := C.int (Thin_Common.Lengths (To.Family));
else
C_To := System.Null_Address;
diff --git a/gcc/ada/libgnat/i-cexten.ads b/gcc/ada/libgnat/i-cexten.ads
index bf396a4..d0a0747 100644
--- a/gcc/ada/libgnat/i-cexten.ads
+++ b/gcc/ada/libgnat/i-cexten.ads
@@ -74,7 +74,7 @@ package Interfaces.C.Extensions is
for Signed_128'Alignment use unsigned_long_long'Alignment * 2;
-- 128-bit floating-point type available on x86:
- -- typedef long_double float_128 __attribute__ ((mode (TF)));
+ -- typedef float float_128 __attribute__ ((mode (TF)));
type Float_128 is record
low, high : unsigned_long_long;
@@ -82,6 +82,14 @@ package Interfaces.C.Extensions is
pragma Convention (C_Pass_By_Copy, Float_128);
for Float_128'Alignment use unsigned_long_long'Alignment * 2;
+ -- 128-bit complex floating-point type available on x86:
+ -- typedef _Complex float cfloat_128 __attribute__ ((mode (TC)));
+
+ type CFloat_128 is record
+ re, im : Float_128;
+ end record;
+ pragma Convention (C_Pass_By_Copy, CFloat_128);
+
-- Types for bitfields
type Unsigned_1 is mod 2 ** 1;