Patchwork [Ada] Remove remnants of GNAT support for OS/2 and MSDOS

login
register
mail settings
Submitter Arnaud Charlet
Date June 22, 2010, 4:57 p.m.
Message ID <20100622165737.GA14381@adacore.com>
Download mbox | patch
Permalink /patch/56533/
State New
Headers show

Comments

Arnaud Charlet - June 22, 2010, 4:57 p.m.
While real support has long been gone, there were various mentions
and pieces of conditionally compiled code remaining. This clears
them up. No test case necessary, as this removes inactive code.

Tested on x86_64-pc-linux-gnu, committed on trunk

2010-06-22  Geert Bosch  <bosch@adacore.com>

	* sysdep.c, init.c, adaint.c, cstreams.c: Remove conditional code
	depending on __EMX__ or MSDOS being defined.
	* i-cstrea.ads, gnat_rm.texi: Remove mentions of OS/2, DOS and Xenix.
	* a-excpol-abort.adb: Update comment indicating users of the file.
	* xref_lib.adb, sfn_scan.adb: Remove mention of OS/2, replace NT by
	Windows.
	* env.c: Remove empty conditional for MSDOS.
	* s-stchop.adb, g-dirope.ads, s-fileio.adb, osint.ads: Remove mention
	of OS/2 in comment.
DJ Delorie - June 22, 2010, 6:31 p.m.
As of gcc 4.4.2, DJGPP had an ada build...

I don't think MSDOS is as unsupported as you think.
Geert Bosch - June 22, 2010, 7 p.m.
On Jun 22, 2010, at 14:31, DJ Delorie wrote:
> As of gcc 4.4.2, DJGPP had an ada build...
> 
> I don't think MSDOS is as unsupported as you think.

As far as I know, there is no way to build a MSDOS compiler 
from current FSF sources. I'm not aware that MSDOS support
ever has been complete in the sense that it would be able
to produce results from the Ada test suites.

While I'm sympathetic to maintaining support for old systems,
having kept OS/2 support going until well past the expiration
date of that system, if you look at what this patch removes 
it is mostly obsolete comments and documentation. The actual
OS/2 run time support, which implemented the entire language
including all optional annexes and passed validation, has
been gone for a long time. For MS-DOS there never has been
such full support.

Note that if you have an environment where you can build current
FSF sources on DOS, this should still result in a valid Ada 
compiler. This patch mostly removes comments as you see and
should not affect your ability to build the compiler.
If this patch breaks bootstrap of the Ada compiler on your
system, feel free to submit a patch for re-instating those 
parts that are still needed.

  -Geert
Andris Pavenis - June 29, 2010, 8:02 p.m.
22.06.2010 22:00, Geert Bosch kirjoitti:
> On Jun 22, 2010, at 14:31, DJ Delorie wrote:
>> As of gcc 4.4.2, DJGPP had an ada build...
>>
>> I don't think MSDOS is as unsupported as you think.
>
> As far as I know, there is no way to build a MSDOS compiler
> from current FSF sources. I'm not aware that MSDOS support
> ever has been complete in the sense that it would be able
> to produce results from the Ada test suites.

Last GCC version which I built for DJGPP including Ada support is
gcc-4.4.4 (DJGPP distribution has gcc-4.4.2 with Ada compiler
included). I'm speaking both about native build with DJGPP and
about Linux to DJGPP cross-compiler.

With gcc-4.5.0 I had problems building Ada Linux to DJGPP cross-compiler
and I did not have time to try to fix that. I'm not using Ada myself,
so my possibilities to fix it is rather limited even if I could find time
for that.

Also I have not seen any information about how well GNU Ada compiler works
under MSDOS. It is able to bootstrap itself though (otherwise I would not
have it).

>
> While I'm sympathetic to maintaining support for old systems,
> having kept OS/2 support going until well past the expiration
> date of that system, if you look at what this patch removes
> it is mostly obsolete comments and documentation. The actual
> OS/2 run time support, which implemented the entire language
> including all optional annexes and passed validation, has
> been gone for a long time. For MS-DOS there never has been
> such full support.

Building with DJGPP requires additional patches not submitted for inclusion
in GCC (also for building cross-compiler for DJGPP target). Never had
time for that.

> Note that if you have an environment where you can build current
> FSF sources on DOS, this should still result in a valid Ada
> compiler. This patch mostly removes comments as you see and
> should not affect your ability to build the compiler.
> If this patch breaks bootstrap of the Ada compiler on your
> system, feel free to submit a patch for re-instating those
> parts that are still needed.

That could be a problem. I'm not sure it would be easy to bootstrap
current development version of GCC for DJGPP. Having only ancient
versions of bash is not going to make it easy. Almost certainly
I will have no time for that.

Andris

Patch

Index: sysdep.c
===================================================================
--- sysdep.c	(revision 161073)
+++ sysdep.c	(working copy)
@@ -6,7 +6,7 @@ 
  *                                                                          *
  *                          C Implementation File                           *
  *                                                                          *
- *         Copyright (C) 1992-2009, Free Software Foundation, Inc.          *
+ *         Copyright (C) 1992-2010, 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- *
@@ -158,7 +158,7 @@  extern struct tm *localtime_r(const time
 
 */
 
-#if defined(WINNT) || defined (MSDOS) || defined (__EMX__)
+#if defined(WINNT)
 static const char *mode_read_text = "rt";
 static const char *mode_write_text = "wt";
 static const char *mode_append_text = "at";
@@ -345,7 +345,7 @@  __gnat_ttyname (int filedes)
 }
 #endif
 
-#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
+#if defined (linux) || defined (sun) || defined (sgi) \
   || (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
   || defined (__MACHTEN__) || defined (__hpux__) || defined (_AIX) \
   || (defined (__svr4__) && defined (i386)) || defined (__Lynx__) \
@@ -403,7 +403,7 @@  getc_immediate_common (FILE *stream,
                        int *avail,
                        int waiting)
 {
-#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
+#if defined (linux) || defined (sun) || defined (sgi) \
     || (defined (__osf__) && ! defined (__alpha_vxworks)) \
     || defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (__hpux__) \
     || defined (_AIX) || (defined (__svr4__) && defined (i386)) \
@@ -424,7 +424,7 @@  getc_immediate_common (FILE *stream,
       /* Set RAW mode, with no echo */
       termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON & ~ECHO;
 
-#if defined(linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
+#if defined(linux) || defined (sun) || defined (sgi) \
     || defined (__osf__) || defined (__MACHTEN__) || defined (__hpux__) \
     || defined (_AIX) || (defined (__svr4__) && defined (i386)) \
     || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
@@ -433,18 +433,12 @@  getc_immediate_common (FILE *stream,
 
       /* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
          a character forever. This doesn't seem to effect Ctrl-Z or
-         Ctrl-C processing except on OS/2 where Ctrl-C won't work right
-         unless we do a read loop. Luckily we can delay a bit between
-         iterations. If not waiting (i.e. Get_Immediate (Char, Available)),
+         Ctrl-C processing.
+         If not waiting (i.e. Get_Immediate (Char, Available)),
          don't wait for anything but timeout immediately. */
-#ifdef __EMX__
-      termios_rec.c_cc[VMIN] = 0;
-      termios_rec.c_cc[VTIME] = waiting;
-#else
       termios_rec.c_cc[VMIN] = waiting;
       termios_rec.c_cc[VTIME] = 0;
 #endif
-#endif
       tcsetattr (fd, TCSANOW, &termios_rec);
 
       while (! good_one)
@@ -720,7 +714,7 @@  long __gnat_invalid_tzoff = 259273;
 
 /* Definition of __gnat_localtime_r used by a-calend.adb */
 
-#if defined (__EMX__) || defined (__MINGW32__)
+#if defined (__MINGW32__)
 
 #ifdef CERT
 
@@ -743,7 +737,7 @@  extern void (*Unlock_Task) (void);
 
 #endif
 
-/* Reentrant localtime for Windows and OS/2. */
+/* Reentrant localtime for Windows. */
 
 extern void
 __gnat_localtime_tzoff (const time_t *, long *);
Index: s-stchop.adb
===================================================================
--- s-stchop.adb	(revision 161073)
+++ s-stchop.adb	(working copy)
@@ -6,7 +6,7 @@ 
 --                                                                          --
 --                                  B o d y                                 --
 --                                                                          --
---          Copyright (C) 1999-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1999-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNARL 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- --
@@ -64,7 +64,7 @@  package body System.Stack_Checking.Opera
 
    --  Note: This function must be compiled with Polling turned off
 
-   --  Note: on systems like VxWorks and OS/2 with real thread-local storage,
+   --  Note: on systems with real thread-local storage,
    --        Set_Stack_Info should return an access value for such local
    --        storage. In those cases the cache will always be up-to-date.
 
Index: gnat_rm.texi
===================================================================
--- gnat_rm.texi	(revision 161202)
+++ gnat_rm.texi	(working copy)
@@ -2923,7 +2923,7 @@  Ada exceptions, or used to implement run
 Pragma @code{Interrupt_State} provides a general mechanism for overriding
 such uses of interrupts.  It subsumes the functionality of pragma
 @code{Unreserve_All_Interrupts}.  Pragma @code{Interrupt_State} is not
-available on OS/2, Windows or VMS.  On all other platforms than VxWorks,
+available on Windows or VMS.  On all other platforms than VxWorks,
 it applies to signals; on VxWorks, it applies to vectored hardware interrupts
 and may be used to mark interrupts required by the board support package
 as reserved.
@@ -13246,8 +13246,8 @@  package Interfaces.C_Streams is
   -- Standard C functions --
   --------------------------
   -- The functions selected below are ones that are
-  -- available in DOS, OS/2, UNIX and Xenix (but not
-  -- necessarily in ANSI C).  These are very thin interfaces
+  -- available in UNIX (but not necessarily in ANSI C).
+  -- These are very thin interfaces
   -- which copy exactly the C headers.  For more
   -- documentation on these functions, see the Microsoft C
   -- "Run-Time Library Reference" (Microsoft Press, 1990,
@@ -15502,7 +15502,7 @@  the underlying kernel.  Otherwise, some 
 the services offered by the underlying kernel to the semantics expected
 by GNARL@.
 
-Whatever the underlying OS (VxWorks, UNIX, OS/2, Windows NT, etc.) the
+Whatever the underlying OS (VxWorks, UNIX, Windows, etc.) the
 key point is that each Ada task is mapped on a thread in the underlying
 kernel.  For example, in the case of VxWorks, one Ada task = one VxWorks task.
 
Index: g-dirope.ads
===================================================================
--- g-dirope.ads	(revision 161073)
+++ g-dirope.ads	(working copy)
@@ -6,7 +6,7 @@ 
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---                     Copyright (C) 1998-2008, AdaCore                     --
+--                     Copyright (C) 1998-2010, AdaCore                     --
 --                                                                          --
 -- 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- --
@@ -209,8 +209,8 @@  package GNAT.Directory_Operations is
    --      Recognize both forms described above.
    --
    --    System_Default
-   --      Uses either UNIX on Unix and OpenVMS systems, or DOS on Windows and
-   --      OS/2 depending on the running environment.
+   --      Uses either UNIX on Unix and OpenVMS systems, or DOS on Windows,
+   --      depending on the running environment.
 
    ---------------
    -- Iterators --
Index: a-excpol-abort.adb
===================================================================
--- a-excpol-abort.adb	(revision 161073)
+++ a-excpol-abort.adb	(working copy)
@@ -7,7 +7,7 @@ 
 --                                                                          --
 --                                  B o d y                                 --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNARL 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 @@ 
 --  that activates periodic polling. Then in the body of the polling routine
 --  we test for asynchronous abort.
 
---  NT, OS/2, HPUX/DCE and SCO currently use this file
+--  Windows, HPUX 10 and VMS currently use this file
 
 pragma Warnings (Off);
 --  Allow withing of non-Preelaborated units in Ada 2005 mode where this
Index: i-cstrea.ads
===================================================================
--- i-cstrea.ads	(revision 161073)
+++ i-cstrea.ads	(working copy)
@@ -6,7 +6,7 @@ 
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1995-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1995-2010, 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- --
@@ -76,9 +76,9 @@  package Interfaces.C_Streams is
    -- Standard C functions --
    --------------------------
 
-   --  The functions selected below are ones that are available in DOS,
-   --  OS/2, UNIX and Xenix (but not necessarily in ANSI C). These are
-   --  very thin interfaces which copy exactly the C headers. For more
+   --  The functions selected below are ones that are available in
+   --  UNIX (but not necessarily in ANSI C). These are very thin
+   --  interfaces which copy exactly the C headers. For more
    --  documentation on these functions, see the Microsoft C "Run-Time
    --  Library Reference" (Microsoft Press, 1990, ISBN 1-55615-225-6),
    --  which includes useful information on system compatibility.
Index: xref_lib.adb
===================================================================
--- xref_lib.adb	(revision 161073)
+++ xref_lib.adb	(working copy)
@@ -6,7 +6,7 @@ 
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1998-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1998-2010, 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- --
@@ -231,7 +231,7 @@  package body Xref_Lib is
 
       Line_Start := Index (Entity (File_Start .. Entity'Last), ":");
 
-      --  Check if it was a disk:\directory item (for NT and OS/2)
+      --  Check if it was a disk:\directory item (for Windows)
 
       if File_Start = Line_Start - 1
         and then Line_Start < Entity'Last
Index: sfn_scan.adb
===================================================================
--- sfn_scan.adb	(revision 161073)
+++ sfn_scan.adb	(working copy)
@@ -37,11 +37,10 @@  package body SFN_Scan is
    --  Allow easy access to control character definitions
 
    EOF : constant Character := ASCII.SUB;
-   --  The character SUB (16#1A#) is used in DOS and other systems derived
-   --  from DOS (OS/2, NT etc.) to signal the end of a text file. If this
-   --  character appears as the last character of a file scanned by a call
-   --  to Scan_SFN_Pragmas, then it is ignored, otherwise it is treated as
-   --  an illegal character.
+   --  The character SUB (16#1A#) is DOS-derived systems, such as Windows
+   --  to signal the end of a text file. If this character appears as the
+   --  last character of a file scanned by a call to Scan_SFN_Pragmas,
+   --  then it is ignored, otherwise it is treated as an illegal character.
 
    type String_Ptr is access String;
 
Index: env.c
===================================================================
--- env.c	(revision 161073)
+++ env.c	(working copy)
@@ -6,7 +6,7 @@ 
  *                                                                          *
  *                          C Implementation File                           *
  *                                                                          *
- *            Copyright (C) 2005-2009, Free Software Foundation, Inc.       *
+ *            Copyright (C) 2005-2010, 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- *
@@ -107,9 +107,7 @@  typedef struct _ile3
 void
 __gnat_setenv (char *name, char *value)
 {
-#ifdef MSDOS
-
-#elif defined (VMS)
+#if defined (VMS)
   struct descriptor_s name_desc;
   /* Put in JOB table for now, so that the project stuff at least works.  */
   struct descriptor_s table_desc = {7, 0, "LNM$JOB"};
Index: init.c
===================================================================
--- init.c	(revision 161073)
+++ init.c	(working copy)
@@ -6,7 +6,7 @@ 
  *                                                                          *
  *                          C Implementation File                           *
  *                                                                          *
- *          Copyright (C) 1992-2009, Free Software Foundation, Inc.         *
+ *          Copyright (C) 1992-2010, 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- *
@@ -2211,10 +2211,10 @@  __gnat_install_handler (void)
 /*********************/
 
 /* This routine is called as each process thread is created, for possible
-   initialization of the FP processor.  This version is used under INTERIX,
-   WIN32 and could be used under OS/2.  */
+   initialization of the FP processor.  This version is used under INTERIX
+   and WIN32.  */
 
-#if defined (_WIN32) || defined (__INTERIX) || defined (__EMX__) \
+#if defined (_WIN32) || defined (__INTERIX) \
   || defined (__Lynx__) || defined(__NetBSD__) || defined(__FreeBSD__) \
   || defined (__OpenBSD__)
 
Index: csets.adb
===================================================================
--- csets.adb	(revision 161073)
+++ csets.adb	(working copy)
@@ -6,7 +6,7 @@ 
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, 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- --
@@ -618,9 +618,9 @@  package body Csets is
    -- Definitions for IBM PC (Code Page 437) --
    --------------------------------------------
 
-   --  Note: Code page 437 is the typical default in DOS, Windows and OS/2
-   --  for PC's in the US, it corresponds to the original PC character set.
-   --  See also the definitions for code page 850.
+   --  Note: Code page 437 is the typical default in Windows for PC's in the
+   --  US, it corresponds to the original PC character set. See also the
+   --  definitions for code page 850.
 
    Fold_IBM_PC_437 : constant Translate_Table := Translate_Table'(
 
@@ -752,10 +752,10 @@  package body Csets is
    -- Definitions for IBM PC (Code Page 850) --
    --------------------------------------------
 
-   --  Note: Code page 850 is the typical default in DOS, Windows and OS/2
-   --  for PC's in Europe, it is an extension of the original PC character
-   --  set to include the additional characters defined in ISO Latin-1.
-   --  See also the definitions for code page 437.
+   --  Note: Code page 850 is the typical default in Windows for PC's in
+   --  Europe, it is an extension of the original PC character set to include
+   --  the additional characters defined in ISO Latin-1. See also the
+   --  definitions for code page 437.
 
    Fold_IBM_PC_850 : constant Translate_Table := Translate_Table'(
 
Index: adaint.c
===================================================================
--- adaint.c	(revision 161160)
+++ adaint.c	(working copy)
@@ -132,7 +132,7 @@  UINT CurrentCodePage;
 #include <sys/wait.h>
 #endif
 
-#if defined (__EMX__) || defined (MSDOS) || defined (_WIN32)
+#if defined (_WIN32)
 #elif defined (VMS)
 
 /* Header files and definitions for __gnat_set_file_time_name.  */
@@ -183,7 +183,7 @@  struct vstring
 #include <utime.h>
 #endif
 
-#if defined (__EMX__) || defined (MSDOS) || defined (_WIN32)
+#if defined (_WIN32)
 #include <process.h>
 #endif
 
@@ -205,14 +205,6 @@  struct vstring
    external file mapped to LF in internal file), but in Unix-like systems,
    no text translation is required, so these flags have no effect.  */
 
-#if defined (__EMX__)
-#include <os2.h>
-#endif
-
-#if defined (MSDOS)
-#include <dos.h>
-#endif
-
 #ifndef O_BINARY
 #define O_BINARY 0
 #endif
@@ -275,9 +267,7 @@  char __gnat_path_separator = PATH_SEPARA
        as well. This is only a temporary work-around for 3.11b.  */
 
 #ifndef GNAT_LIBRARY_TEMPLATE
-#if defined (__EMX__)
-#define GNAT_LIBRARY_TEMPLATE "*.a"
-#elif defined (VMS)
+#if defined (VMS)
 #define GNAT_LIBRARY_TEMPLATE "*.olb"
 #else
 #define GNAT_LIBRARY_TEMPLATE "lib*.a"
@@ -294,10 +284,7 @@  const int __gnat_vmsp = 1;
 const int __gnat_vmsp = 0;
 #endif
 
-#ifdef __EMX__
-#define GNAT_MAX_PATH_LEN MAX_PATH
-
-#elif defined (VMS)
+#if defined (VMS)
 #define GNAT_MAX_PATH_LEN 256 /* PATH_MAX */
 
 #elif defined (__vxworks) || defined (__OPENNT) || defined(__nucleus__)
@@ -478,8 +465,8 @@  __gnat_readlink (char *path ATTRIBUTE_UN
 		 char *buf ATTRIBUTE_UNUSED,
 		 size_t bufsiz ATTRIBUTE_UNUSED)
 {
-#if defined (MSDOS) || defined (_WIN32) || defined (__EMX__) \
-  || defined (VMS) || defined(__vxworks) || defined (__nucleus__)
+#if defined (_WIN32) || defined (VMS) \
+    || defined(__vxworks) || defined (__nucleus__)
   return -1;
 #else
   return readlink (path, buf, bufsiz);
@@ -494,8 +481,8 @@  int
 __gnat_symlink (char *oldpath ATTRIBUTE_UNUSED,
 		char *newpath ATTRIBUTE_UNUSED)
 {
-#if defined (MSDOS) || defined (_WIN32) || defined (__EMX__) \
-  || defined (VMS) || defined(__vxworks) || defined (__nucleus__)
+#if defined (_WIN32) || defined (VMS) \
+    || defined(__vxworks) || defined (__nucleus__)
   return -1;
 #else
   return symlink (oldpath, newpath);
@@ -504,8 +491,8 @@  __gnat_symlink (char *oldpath ATTRIBUTE_
 
 /* Try to lock a file, return 1 if success.  */
 
-#if defined (__vxworks) || defined (__nucleus__) || defined (MSDOS) \
-  || defined (_WIN32) || defined (__EMX__) || defined (VMS)
+#if defined (__vxworks) || defined (__nucleus__) \
+  || defined (_WIN32) || defined (VMS)
 
 /* Version that does not use link. */
 
@@ -577,9 +564,7 @@  __gnat_try_lock (char *dir, char *file)
 int
 __gnat_get_maximum_file_name_length (void)
 {
-#if defined (MSDOS)
-  return 8;
-#elif defined (VMS)
+#if defined (VMS)
   if (getenv ("GNAT$EXTENDED_FILE_SPECIFICATIONS"))
     return -1;
   else
@@ -594,7 +579,7 @@  __gnat_get_maximum_file_name_length (voi
 int
 __gnat_get_file_names_case_sensitive (void)
 {
-#if defined (__EMX__) || defined (MSDOS) || defined (VMS) || defined (WINNT)
+#if defined (VMS) || defined (WINNT)
   return 0;
 #else
   return 1;
@@ -604,11 +589,7 @@  __gnat_get_file_names_case_sensitive (vo
 char
 __gnat_get_default_identifier_character_set (void)
 {
-#if defined (__EMX__) || defined (MSDOS)
-  return 'p';
-#else
   return '1';
-#endif
 }
 
 /* Return the current working directory.  */
@@ -675,12 +656,7 @@  __gnat_get_executable_suffix_ptr (int *l
 void
 __gnat_get_debuggable_suffix_ptr (int *len, const char **value)
 {
-#ifndef MSDOS
   *value = HOST_EXECUTABLE_SUFFIX;
-#else
-  /* On DOS, the extensionless COFF file is what gdb likes.  */
-  *value = "";
-#endif
 
   if (*value == 0)
     *len = 0;
@@ -859,7 +835,7 @@  __gnat_open_read (char *path, int fmode)
   return fd < 0 ? -1 : fd;
 }
 
-#if defined (__EMX__) || defined (__MINGW32__)
+#if defined (__MINGW32__)
 #define PERM (S_IREAD | S_IWRITE)
 #elif defined (VMS)
 /* Excerpt from DECC C RTL Reference Manual:
@@ -1101,7 +1077,7 @@  __gnat_stat_to_attr (int fd, char* name,
   attr->executable = (!ret && (statbuf.st_mode & S_IXUSR));
 #endif
 
-#if !defined (__EMX__) && !defined (MSDOS) && (!defined (_WIN32) || defined (RTX))
+#if !defined (_WIN32) || defined (RTX)
   /* on Windows requires extra system call, see __gnat_file_time_name_attr */
   if (ret != 0) {
      attr->timestamp = (OS_Time)-1;
@@ -1342,13 +1318,7 @@  OS_Time
 __gnat_file_time_name_attr (char* name, struct file_attributes* attr)
 {
    if (attr->timestamp == (OS_Time)-2) {
-#if defined (__EMX__) || defined (MSDOS)
-      int fd = open (name, O_RDONLY | O_BINARY);
-      time_t ret = __gnat_file_time_fd (fd);
-      close (fd);
-      attr->timestamp = (OS_Time)ret;
-
-#elif defined (_WIN32) && !defined (RTX)
+#if defined (_WIN32) && !defined (RTX)
       time_t ret = -1;
       TCHAR wname[GNAT_MAX_PATH_LEN];
       S2WSC (wname, name, GNAT_MAX_PATH_LEN);
@@ -1383,74 +1353,7 @@  OS_Time
 __gnat_file_time_fd_attr (int fd, struct file_attributes* attr)
 {
    if (attr->timestamp == (OS_Time)-2) {
-     /* The following workaround code is due to the fact that under EMX and
-        DJGPP fstat attempts to convert time values to GMT rather than keep the
-        actual OS timestamp of the file. By using the OS2/DOS functions directly
-        the GNAT timestamp are independent of this behavior, which is desired to
-        facilitate the distribution of GNAT compiled libraries.  */
-
-#if defined (__EMX__) || defined (MSDOS)
-#ifdef __EMX__
-
-     FILESTATUS fs;
-     int ret = DosQueryFileInfo (fd, 1, (unsigned char *) &fs,
-                                   sizeof (FILESTATUS));
-
-     unsigned file_year  = fs.fdateLastWrite.year;
-     unsigned file_month = fs.fdateLastWrite.month;
-     unsigned file_day   = fs.fdateLastWrite.day;
-     unsigned file_hour  = fs.ftimeLastWrite.hours;
-     unsigned file_min   = fs.ftimeLastWrite.minutes;
-     unsigned file_tsec  = fs.ftimeLastWrite.twosecs;
-
-#else
-     struct ftime fs;
-     int ret = getftime (fd, &fs);
-
-     unsigned file_year  = fs.ft_year;
-     unsigned file_month = fs.ft_month;
-     unsigned file_day   = fs.ft_day;
-     unsigned file_hour  = fs.ft_hour;
-     unsigned file_min   = fs.ft_min;
-     unsigned file_tsec  = fs.ft_tsec;
-#endif
-
-     /* Calculate the seconds since epoch from the time components. First count
-        the whole days passed.  The value for years returned by the DOS and OS2
-        functions count years from 1980, so to compensate for the UNIX epoch which
-        begins in 1970 start with 10 years worth of days and add days for each
-        four year period since then.  */
-
-     time_t tot_secs;
-     int cum_days[12] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
-     int days_passed = 3652 + (file_year / 4) * 1461;
-     int years_since_leap = file_year % 4;
-
-     if (years_since_leap == 1)
-       days_passed += 366;
-     else if (years_since_leap == 2)
-       days_passed += 731;
-     else if (years_since_leap == 3)
-       days_passed += 1096;
-
-     if (file_year > 20)
-       days_passed -= 1;
-
-     days_passed += cum_days[file_month - 1];
-     if (years_since_leap == 0 && file_year != 20 && file_month > 2)
-       days_passed++;
-
-     days_passed += file_day - 1;
-
-     /* OK - have whole days.  Multiply -- then add in other parts.  */
-
-     tot_secs  = days_passed * 86400;
-     tot_secs += file_hour * 3600;
-     tot_secs += file_min * 60;
-     tot_secs += file_tsec * 2;
-     attr->timestamp = (OS_Time) tot_secs;
-
-#elif defined (_WIN32) && !defined (RTX)
+#if defined (_WIN32) && !defined (RTX)
      HANDLE h = (HANDLE) _get_osfhandle (fd);
      time_t ret = win32_filetime (h);
      attr->timestamp = (OS_Time) ret;
@@ -1476,7 +1379,7 @@  __gnat_file_time_fd (int fd)
 void
 __gnat_set_file_time_name (char *name, time_t time_stamp)
 {
-#if defined (__EMX__) || defined (MSDOS) || defined (__vxworks)
+#if defined (__vxworks)
 
 /* Code to implement __gnat_set_file_time_name for these systems.  */
 
@@ -1857,7 +1760,7 @@  __gnat_is_absolute_path (char *name, int
 #else
   return (length != 0) &&
      (*name == '/' || *name == DIR_SEPARATOR
-#if defined (__EMX__) || defined (MSDOS) || defined (WINNT)
+#if defined (WINNT)
       || (length > 1 && ISALPHA (name[0]) && name[1] == ':')
 #endif
 	  );
@@ -2358,7 +2261,7 @@  __gnat_portable_spawn (char *args[])
 #if defined (__vxworks) || defined(__nucleus__) || defined(RTX)
   return -1;
 
-#elif defined (MSDOS) || defined (_WIN32)
+#elif defined (_WIN32)
   /* args[0] must be quotes as it could contain a full pathname with spaces */
   char *args_0 = args[0];
   args[0] = (char *)xmalloc (strlen (args_0) + 3);
@@ -2379,12 +2282,6 @@  __gnat_portable_spawn (char *args[])
 
 #else
 
-#ifdef __EMX__
-  pid = spawnvp (P_NOWAIT, args[0], args);
-  if (pid == -1)
-    return -1;
-
-#else
   pid = fork ();
   if (pid < 0)
     return -1;
@@ -2399,7 +2296,6 @@  __gnat_portable_spawn (char *args[])
 	_exit (1);
 #endif
     }
-#endif
 
   /* The parent.  */
   finished = waitpid (pid, &status, 0);
@@ -2649,19 +2545,6 @@  __gnat_portable_no_block_spawn (char *ar
 #if defined (__vxworks) || defined (__nucleus__) || defined (RTX)
   return -1;
 
-#elif defined (__EMX__) || defined (MSDOS)
-
-  /* ??? For PC machines I (Franco) don't know the system calls to implement
-     this routine. So I'll fake it as follows. This routine will behave
-     exactly like the blocking portable_spawn and will systematically return
-     a pid of 0 unless the spawned task did not complete successfully, in
-     which case we return a pid of -1.  To synchronize with this the
-     portable_wait below systematically returns a pid of 0 and reports that
-     the subprocess terminated successfully. */
-
-  if (spawnvp (P_WAIT, args[0], args) != 0)
-    return -1;
-
 #elif defined (_WIN32)
 
   HANDLE h = NULL;
@@ -2703,16 +2586,12 @@  __gnat_portable_wait (int *process_statu
   int pid = 0;
 
 #if defined (__vxworks) || defined (__nucleus__) || defined (RTX)
-  /* Not sure what to do here, so do same as __EMX__ case, i.e., nothing but
-     return zero.  */
+  /* Not sure what to do here, so do nothing but return zero.  */
 
 #elif defined (_WIN32)
 
   pid = win32_wait (&status);
 
-#elif defined (__EMX__) || defined (MSDOS)
-  /* ??? See corresponding comment in portable_no_block_spawn.  */
-
 #else
 
   pid = waitpid (-1, &status, 0);
@@ -3458,14 +3337,6 @@  __gnat_adjust_os_resource_limits (void)
 
 #endif
 
-/* For EMX, we cannot include dummy in libgcc, since it is too difficult
-   to coordinate this with the EMX distribution. Consequently, we put the
-   definition of dummy which is used for exception handling, here.  */
-
-#if defined (__EMX__)
-void __dummy () {}
-#endif
-
 #if defined (__mips_vxworks)
 int
 _flush_cache()
Index: cstreams.c
===================================================================
--- cstreams.c	(revision 161073)
+++ cstreams.c	(working copy)
@@ -6,7 +6,7 @@ 
  *                                                                          *
  *              Auxiliary C functions for Interfaces.C.Streams              *
  *                                                                          *
- *          Copyright (C) 1992-2009, Free Software Foundation, Inc.         *
+ *          Copyright (C) 1992-2010, 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,15 +98,6 @@  __gnat_is_regular_file_fd (int fd)
   int ret;
   GNAT_STRUCT_STAT statbuf;
 
-#ifdef __EMX__
-  /* Programs using screen I/O may need to reset the FPU after
-     initialization of screen-handling related DLL's, so force
-     DLL initialization by doing a null-write and then reset the FPU */
-
-  DosWrite (0, &ret, 0, &ret);
-  __gnat_init_float();
-#endif
-
   ret = GNAT_FSTAT (fd, &statbuf);
   return (!ret && S_ISREG (statbuf.st_mode));
 }
@@ -166,9 +157,9 @@  __gnat_full_name (char *nam, char *buffe
   else
     buffer[0] = '\0';
 
-#elif defined(__EMX__) || defined (__MINGW32__)
-  /* If this is a device file return it as is; under Windows NT and
-     OS/2 a device file end with ":".  */
+#elif defined (__MINGW32__)
+  /* If this is a device file return it as is;
+     under Windows NT a device file ends with ":".  */
   if (nam[strlen (nam) - 1] == ':')
     strcpy (buffer, nam);
   else
@@ -182,9 +173,6 @@  __gnat_full_name (char *nam, char *buffe
 	  *p = '\\';
     }
 
-#elif defined (MSDOS)
-  _fixpath (nam, buffer);
-
 #elif defined (sgi) || defined (__FreeBSD__)
 
   /* Use realpath function which resolves links and references to . and ..
Index: osint.ads
===================================================================
--- osint.ads	(revision 161183)
+++ osint.ads	(working copy)
@@ -84,7 +84,7 @@  package Osint is
                                  Get_File_Names_Case_Sensitive /= 0;
    --  Set to indicate whether the operating system convention is for file
    --  names to be case sensitive (e.g., in Unix, set True), or non case
-   --  sensitive (e.g., in OS/2, set False).
+   --  sensitive (e.g., in Windows, set False).
 
    procedure Canonical_Case_File_Name (S : in out String);
    --  Given a file name, converts it to canonical case form. For systems
Index: s-fileio.adb
===================================================================
--- s-fileio.adb	(revision 161073)
+++ s-fileio.adb	(working copy)
@@ -6,7 +6,7 @@ 
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, 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- --
@@ -104,7 +104,7 @@  package body System.File_IO is
    File_Names_Case_Sensitive : constant Boolean := Get_Case_Sensitive /= 0;
    --  Set to indicate whether the operating system convention is for file
    --  names to be case sensitive (e.g., in Unix, set True), or non case
-   --  sensitive (e.g., in OS/2, set False).
+   --  sensitive (e.g., in Windows, set False).
 
    -----------------------
    -- Local Subprograms --