https://gcc.gnu.org/g:48d0598888622bd27e7debdf71c40807f6c8f6a3

commit r16-1798-g48d0598888622bd27e7debdf71c40807f6c8f6a3
Author: Alexandre Oliva <ol...@adacore.com>
Date:   Thu Apr 17 01:19:24 2025 -0300

    ada: use pointer decay for socket address type compatibility
    
    GCC 14 is stricter about type conversions.  Taking the address of an
    array and decaying the array to a pointer to its first element yield
    the same address, but the types are no longer considered compatible.
    The socket data structures want decayed pointers rather than addresses
    of arrays, so drop the '&'s.
    
    gcc/ada/ChangeLog:
    
            * socket.c [__vxworks]
            (__gnat_gethostbyname): Drop excess '&'.
            (__gnat_gethostbyaddr): Likewise.

Diff:
---
 gcc/ada/socket.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gcc/ada/socket.c b/gcc/ada/socket.c
index 77bdde40a246..a22ed993862b 100644
--- a/gcc/ada/socket.c
+++ b/gcc/ada/socket.c
@@ -280,10 +280,10 @@ __gnat_gethostbyname (const char *name,
     return -1;
   }
   ret->h_name      = name;
-  ret->h_aliases   = &vxw_h_aliases;
+  ret->h_aliases   = vxw_h_aliases;
   ret->h_addrtype  = AF_INET;
   ret->h_length    = 4;
-  ret->h_addr_list = &vxw_h_addr_list;
+  ret->h_addr_list = vxw_h_addr_list;
   return 0;
 }
 
@@ -302,18 +302,18 @@ __gnat_gethostbyaddr (const char *addr, int len, int type,
     return -1;
   }
 
-  if (hostGetByAddr (*(int*)addr, &vxw_h_name) != OK) {
+  if (hostGetByAddr (*(int*)addr, vxw_h_name) != OK) {
     *h_errnop = __gnat_get_h_errno ();
     return -1;
   }
 
   vxw_h_addr       = (long) addr;
 
-  ret->h_name      = &vxw_h_name;
-  ret->h_aliases   = &vxw_h_aliases;
+  ret->h_name      = vxw_h_name;
+  ret->h_aliases   = vxw_h_aliases;
   ret->h_addrtype  = AF_INET;
   ret->h_length    = 4;
-  ret->h_addr_list = &vxw_h_addr_list;
+  ret->h_addr_list = vxw_h_addr_list;
   return 0;
 }

Reply via email to