diff gcc/ada/doc/gnat_ugn/platform_specific_information.rst @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
line wrap: on
line diff
--- a/gcc/ada/doc/gnat_ugn/platform_specific_information.rst	Thu Oct 25 07:37:49 2018 +0900
+++ b/gcc/ada/doc/gnat_ugn/platform_specific_information.rst	Thu Feb 13 11:34:05 2020 +0900
@@ -49,15 +49,15 @@
 Most programs should experience a substantial speed improvement by
 being compiled with a ZCX run-time.
 This is especially true for
-tasking applications or applications with many exception handlers.}
+tasking applications or applications with many exception handlers.
+Note however that the ZCX run-time does not support asynchronous abort
+of tasks (``abort`` and ``select-then-abort`` constructs) and will instead
+implement abort by polling points in the runtime. You can also add additional
+polling points explicitly if needed in your application via ``pragma
+Abort_Defer``.
 
 This section summarizes which combinations of threads and exception support
 are supplied on various GNAT platforms.
-It then shows how to select a particular library either
-permanently or temporarily,
-explains the properties of (and tradeoffs among) the various threads
-libraries, and provides some additional
-information about several specific platforms.
 
 .. _Summary_of_Run-Time_Configurations:
 
@@ -260,7 +260,7 @@
 platforms.
 
 
-.. only:: PRO or GPL
+.. only:: PRO
 
   .. rubric:: Installing from the Command Line
 
@@ -273,32 +273,15 @@
   line you should pass parameter :switch:`/S` (and, optionally,
   :switch:`/D=<directory>`) as command-line arguments.
 
-.. only:: PRO
-
    For example, for an unattended installation of
-   GNAT 7.0.2 into the default directory
-   ``C:\\GNATPRO\\7.0.2`` you would run:
-
-     ::
-
-        gnatpro-7.0.2-i686-pc-mingw32-bin.exe /S
-
-   To install into a custom directory, say, ``C:\\TOOLS\\GNATPRO\\7.0.2``:
-
-     ::
-
-        gnatpro-7.0.2-i686-pc-mingw32-bin /S /D=C:\TOOLS\GNATPRO\7.0.2
-
-.. only:: GPL
-
-   For example, for an unattended installation of
-   GNAT 2012 into ``C:\\GNAT\\2012``:
-
-     ::
-
-        gnat-gpl-2012-i686-pc-mingw32-bin /S /D=C:\GNAT\2012
-
-.. only:: PRO or GPL
+   GNAT 19.2 into the default directory :file:`C:\\GNATPRO\\19.2` you
+   would run::
+
+        gnatpro-19.2-x86-windows-bin /S
+
+   To install into a custom directory, say, :file:`C:\\TOOLS\\GNATPRO\\19.2`::
+
+        gnatpro-19.2-x86-windows-bin /S /D=C:\TOOLS\GNATPRO\19.2
 
    You can use the same syntax for all installers.
 
@@ -306,7 +289,6 @@
    associations, so such activities need to be done by hand.
 
 
-
 .. _Using_GNAT_on_Windows:
 
 Using GNAT on Windows
@@ -488,6 +470,49 @@
    Ada.Command_Line.Argument (1) -> "'*.txt'"
 
 
+Windows Socket Timeouts
+-----------------------
+
+Microsoft Windows desktops older than ``8.0`` and Microsoft Windows Servers
+older than ``2019`` set a socket timeout 500 milliseconds longer than the value
+set by setsockopt with ``SO_RCVTIMEO`` and ``SO_SNDTIMEO`` options. The GNAT
+runtime makes a correction for the difference in the corresponding Windows
+versions. For Windows Server starting with version ``2019``, the user must
+provide a manifest file for the GNAT runtime to be able to recognize that
+the Windows version does not need the timeout correction. The manifest file
+should be located in the same directory as the executable file, and its file
+name must match the executable name suffixed by ``.manifest``. For example,
+if the executable name is :file:`sock_wto.exe`, then the manifest file name
+has to be :file:`sock_wto.exe.manifest`. The manifest file must contain at
+least the following data::
+
+   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+   <application>
+      <!-- Windows Vista -->
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
+      <!-- Windows 7 -->
+      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <!-- Windows 8 -->
+      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
+      <!-- Windows 8.1 -->
+      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
+      <!-- Windows 10 -->
+      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
+   </application>
+   </compatibility>
+   </assembly>
+
+Without the manifest file, the socket timeout is going to be overcorrected on
+these Windows Server versions and the actual time is going to be 500
+milliseconds shorter than what was set with GNAT.Sockets.Set_Socket_Option.
+Note that on Microsoft Windows versions where correction is necessary, there
+is no way to set a socket timeout shorter than 500 ms. If a socket timeout
+shorter than 500 ms is needed on these Windows versions, a call to
+Check_Selector should be added before any socket read or write operations.
+
+
 .. _Mixed-Language_Programming_on_Windows:
 
 Mixed-Language Programming on Windows