summaryrefslogtreecommitdiffstats
path: root/gcc/ada/g-sothco.ads
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-30 10:07:32 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-30 10:07:32 +0000
commit9cdffbc8e4a21e2ebd91c33264a250b3d0328129 (patch)
tree7bec3cf8139da8c3fc9ab89202f6b0894c50fe0e /gcc/ada/g-sothco.ads
parent92d7a451bc1093930f14896b59bf02d61843d5b6 (diff)
downloadppe42-gcc-9cdffbc8e4a21e2ebd91c33264a250b3d0328129.tar.gz
ppe42-gcc-9cdffbc8e4a21e2ebd91c33264a250b3d0328129.zip
2009-11-30 Thomas Quinot <quinot@adacore.com>
* s-crtl.ads, g-stseme.adb, s-fileio.adb (System.CRTL.strerror): Change return type to Interfaces.C.Strings.chars_ptr to eliminate need for dubious unchecked conversion at call sites. * s-errrep.adb, s-errrep.ads, Makefile.rtl (System.Error_Reporting): Remove obsolete, unused runtime unit. * gcc-interface/Make-lang.in: Update dependencies. * gcc-interface/Makefile.in: Remove VMS specialization of s-crtl, not required anymore. 2009-11-30 Vincent Celier <celier@adacore.com> * gnatlink.adb: Delete an eventual existing executable file, in case it is a symbolic link, to avoid modifying the target of the symbolic link. 2009-11-30 Bob Duff <duff@adacore.com> * socket.c: Add accessor functions for struct servent. * g-sothco.ads (Servent): Declare interfaces to C accessor functions for struct servent. * g-socket.adb (To_Service_Entry): Use accessor functions for struct servent. 2009-11-30 Robert Dewar <dewar@adacore.com> * g-arrspl.adb: Minor reformatting * g-dyntab.adb: Add missing pragma Compiler_Unit git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154769 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/g-sothco.ads')
-rw-r--r--gcc/ada/g-sothco.ads26
1 files changed, 18 insertions, 8 deletions
diff --git a/gcc/ada/g-sothco.ads b/gcc/ada/g-sothco.ads
index c5636a8f1e3..3f5c7695159 100644
--- a/gcc/ada/g-sothco.ads
+++ b/gcc/ada/g-sothco.ads
@@ -212,19 +212,24 @@ package GNAT.Sockets.Thin_Common is
C.Strings.Null_Ptr);
-- Arrays of C (char *)
- type Servent is record
- S_Name : C.Strings.chars_ptr;
- S_Aliases : Chars_Ptr_Pointers.Pointer;
- S_Port : C.int;
- S_Proto : C.Strings.chars_ptr;
- end record;
- pragma Convention (C, Servent);
- -- Service entry
+ sizeof_servent : constant C.size_t;
+ pragma Import (C, sizeof_servent, "__gnat_sizeof_servent");
+ type Servent is array (1 .. sizeof_servent) of C.char;
+ for Servent'Alignment use 8;
+ -- Service entry. This is an opaque type used only via the following
+ -- accessor functions, because 'struct servent' has different layouts on
+ -- different platforms.
type Servent_Access is access all Servent;
pragma Convention (C, Servent_Access);
-- Access to service entry
+ function Servent_S_Name (E : Servent_Access) return C.Strings.chars_ptr;
+ function Servent_S_Aliases (E : Servent_Access)
+ return Chars_Ptr_Pointers.Pointer;
+ function Servent_S_Port (E : Servent_Access) return C.int;
+ function Servent_S_Proto (E : Servent_Access) return C.Strings.chars_ptr;
+
------------------
-- Host entries --
------------------
@@ -335,4 +340,9 @@ private
pragma Import (C, Reset_Socket_Set, "__gnat_reset_socket_set");
pragma Import (C, C_Ioctl, "__gnat_socket_ioctl");
pragma Import (C, Inet_Pton, SOSC.Inet_Pton_Linkname);
+
+ pragma Import (C, Servent_S_Name, "__gnat_servent_s_name");
+ pragma Import (C, Servent_S_Aliases, "__gnat_servent_s_aliases");
+ pragma Import (C, Servent_S_Port, "__gnat_servent_s_port");
+ pragma Import (C, Servent_S_Proto, "__gnat_servent_s_proto");
end GNAT.Sockets.Thin_Common;
OpenPOWER on IntegriCloud