summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-06-06 10:48:51 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-06-06 10:48:51 +0000
commit29aacb7d48e75b7d6f131bd00a0ead0a362a300d (patch)
tree21c8578817abfa775cbe5d7fee601745c1d48134 /gcc
parent7362288fbe1690541abd4e0b713294c332b976ad (diff)
downloadgcc-29aacb7d48e75b7d6f131bd00a0ead0a362a300d.tar.gz
2007-04-20 Thomas Quinot <quinot@adacore.com>
* g-soccon-darwin.ads, gen-soccon.c: Add new constant Thread_Blocking_IO, always True by default, set False on a per-runtime basis. Add Windows-specific constants Add new constant Need_Netdb_Buffer. Add new macros to indicate whether getXXXbyYYY is thread safe and, if not, whether to use getXXXbyYYY_r. * gsocket.h: Add new constant Need_Netdb_Buffer. Add new macros to indicate whether getXXXbyYYY is thread safe and, if not, whether to use getXXXbyYYY_r. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125466 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/g-soccon-darwin.ads19
-rw-r--r--gcc/ada/gen-soccon.c37
-rw-r--r--gcc/ada/gsocket.h32
3 files changed, 82 insertions, 6 deletions
diff --git a/gcc/ada/g-soccon-darwin.ads b/gcc/ada/g-soccon-darwin.ads
index 4ae827d3574..7d82375763f 100644
--- a/gcc/ada/g-soccon-darwin.ads
+++ b/gcc/ada/g-soccon-darwin.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2005, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2007, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -35,7 +35,7 @@
-- by the GNAT.Sockets package (g-socket.ads). This package should not be
-- directly with'ed by an applications program.
--- This is the version for powerpc-apple-darwin7.4.1
+-- This is the version for powerpc-apple-darwin8.8.0
-- This file is generated automatically, do not modify it by hand! Instead,
-- make changes to gen-soccon.c and re-run it on each target.
@@ -167,7 +167,7 @@ package GNAT.Sockets.Constants is
-- System limits --
-------------------
- IOV_MAX : constant := 2147483647; -- Maximum writev iovcnt
+ IOV_MAX : constant := 1024; -- Maximum writev iovcnt
----------------------
-- Type definitions --
@@ -178,4 +178,17 @@ package GNAT.Sockets.Constants is
SIZEOF_tv_sec : constant := 4; -- tv_sec
SIZEOF_tv_usec : constant := 4; -- tv_usec
+ ----------------------------------------
+ -- Properties of supported interfaces --
+ ----------------------------------------
+
+ Need_Netdb_Buffer : constant := 1; -- Need buffer for Netdb ops
+
+ ----------------------
+ -- Additional flags --
+ ----------------------
+
+ Thread_Blocking_IO : constant Boolean := True;
+ -- Set False for contexts where socket i/o are process blocking
+
end GNAT.Sockets.Constants;
diff --git a/gcc/ada/gen-soccon.c b/gcc/ada/gen-soccon.c
index e8284335bcf..d52ba5f3464 100644
--- a/gcc/ada/gen-soccon.c
+++ b/gcc/ada/gen-soccon.c
@@ -4,7 +4,7 @@
* *
* G E N - S O C C O N *
* *
- * Copyright (C) 2004-2005, Free Software Foundation, Inc. *
+ * Copyright (C) 2004-2007, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -98,7 +98,7 @@ TXT("-- G N A T . S O C K E T S . C O N S T A N T S
TXT("-- --")
TXT("-- S p e c --")
TXT("-- --")
-TXT("-- Copyright (C) 2000-2005, Free Software Foundation, Inc. --")
+TXT("-- Copyright (C) 2000-2007, Free Software Foundation, Inc. --")
TXT("-- --")
TXT("-- GNAT is free software; you can redistribute it and/or modify it under --")
TXT("-- terms of the GNU General Public License as published by the Free Soft- --")
@@ -589,6 +589,14 @@ CND(SIZEOF_tv_sec, "tv_sec")
CND(SIZEOF_tv_usec, "tv_usec")
}
+_NL
+TXT(" ----------------------------------------")
+TXT(" -- Properties of supported interfaces --")
+TXT(" ----------------------------------------")
+_NL
+
+CND(Need_Netdb_Buffer, "Need buffer for Netdb ops")
+
#ifdef __vxworks
_NL
TXT(" --------------------------------")
@@ -603,6 +611,31 @@ CND(OK, "VxWorks generic success")
CND(ERROR, "VxWorks generic error")
#endif
+#ifdef __MINGW32__
+_NL
+TXT(" ------------------------------")
+TXT(" -- MinGW-specific constants --")
+TXT(" ------------------------------")
+_NL
+TXT(" -- These constants may be used only within the MinGW version of")
+TXT(" -- GNAT.Sockets.Thin.")
+_NL
+
+CND(WSASYSNOTREADY, "System not ready")
+CND(WSAVERNOTSUPPORTED, "Version not supported")
+CND(WSANOTINITIALISED, "Winsock not intialized")
+CND(WSAEDISCON, "Disconnected")
+
+#endif
+
+_NL
+TXT(" ----------------------")
+TXT(" -- Additional flags --")
+TXT(" ----------------------")
+_NL
+TXT(" Thread_Blocking_IO : constant Boolean := True;")
+TXT(" -- Set False for contexts where socket i/o are process blocking")
+
_NL
TXT("end GNAT.Sockets.Constants;")
diff --git a/gcc/ada/gsocket.h b/gcc/ada/gsocket.h
index a380788995a..7df7ea089cb 100644
--- a/gcc/ada/gsocket.h
+++ b/gcc/ada/gsocket.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2004-2005, Free Software Foundation, Inc. *
+ * Copyright (C) 2004-2006, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -146,3 +146,33 @@
#include <sys/ioctl.h>
#include <netdb.h>
#endif
+
+/*
+ * Handling of gethostbyname, gethostbyaddr, getservbyname and getservbyport
+ * =========================================================================
+ *
+ * The default implementation of GNAT.Sockets.Thin requires that these
+ * operations be either thread safe, or that a reentrant version getXXXbyYYY_r
+ * be provided. In both cases, socket.c provides a __gnat_safe_getXXXbyYYY
+ * function with the same signature as getXXXbyYYY_r. If the operating
+ * system version of getXXXbyYYY is thread safe, the provided auxiliary
+ * buffer argument is unused and ignored.
+ *
+ * Target specific versions of GNAT.Sockets.Thin for platforms that can't
+ * fulfill these requirements must provide their own protection mechanism
+ * in Safe_GetXXXbyYYY, and if they require GNAT.Sockets to provide a buffer
+ * to this effect, then we need to set Need_Netdb_Buffer here (case of
+ * VxWorks and VMS).
+ */
+
+#if defined (_AIX) || defined (__FreeBSD__) || defined (__hpux__) || defined (__osf__) || defined (_WIN32) || defined (__APPLE__)
+# define HAVE_THREAD_SAFE_GETxxxBYyyy 1
+#elif defined (sgi) || defined (linux) || (defined (sun) && defined (__SVR4) && !defined (__vxworks))
+# define HAVE_GETxxxBYyyy_R 1
+#endif
+
+#if defined (HAVE_GETxxxBYyyy_R) || !defined (HAVE_THREAD_SAFE_GETxxxBYyyy)
+# define Need_Netdb_Buffer 1
+#else
+# define Need_Netdb_Buffer 0
+#endif