Commit ea7f928b by Arnaud Charlet

[multiple changes]

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* cstand.adb: Add tree nodes for pragma Pack on string types.

2010-06-22  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Last_Formal): New synthesized attribute.
	* exp_util.adb (Find_Prim_Op): Use new attribute to locate the last
	formal of a primitive.
	* exp_disp.adb (Is_Predefined_Dispatching_Operation,
	 Is_Predefined_Dispatching_Alias): Use new attribute to locate the last
	formal of a primitive.
	* exp_cg.adb (Is_Predefined_Dispatching_Operation): Use new attribute
	to obtain the last formal of a primitive.

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.

From-SVN: r161205
parent bb10b891
2010-06-22 Ed Schonberg <schonberg@adacore.com>
* cstand.adb: Add tree nodes for pragma Pack on string types.
2010-06-22 Javier Miranda <miranda@adacore.com>
* einfo.ads, einfo.adb (Last_Formal): New synthesized attribute.
* exp_util.adb (Find_Prim_Op): Use new attribute to locate the last
formal of a primitive.
* exp_disp.adb (Is_Predefined_Dispatching_Operation,
Is_Predefined_Dispatching_Alias): Use new attribute to locate the last
formal of a primitive.
* exp_cg.adb (Is_Predefined_Dispatching_Operation): Use new attribute
to obtain the last formal of a primitive.
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.
2010-06-22 Robert Dewar <dewar@adacore.com> 2010-06-22 Robert Dewar <dewar@adacore.com>
* s-rannum.adb: Minor reformatting. * s-rannum.adb: Minor reformatting.
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
-- -- -- --
-- B o d y -- -- 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 -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
-- that activates periodic polling. Then in the body of the polling routine -- that activates periodic polling. Then in the body of the polling routine
-- we test for asynchronous abort. -- 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); pragma Warnings (Off);
-- Allow withing of non-Preelaborated units in Ada 2005 mode where this -- Allow withing of non-Preelaborated units in Ada 2005 mode where this
......
...@@ -132,7 +132,7 @@ UINT CurrentCodePage; ...@@ -132,7 +132,7 @@ UINT CurrentCodePage;
#include <sys/wait.h> #include <sys/wait.h>
#endif #endif
#if defined (__EMX__) || defined (MSDOS) || defined (_WIN32) #if defined (_WIN32)
#elif defined (VMS) #elif defined (VMS)
/* Header files and definitions for __gnat_set_file_time_name. */ /* Header files and definitions for __gnat_set_file_time_name. */
...@@ -183,7 +183,7 @@ struct vstring ...@@ -183,7 +183,7 @@ struct vstring
#include <utime.h> #include <utime.h>
#endif #endif
#if defined (__EMX__) || defined (MSDOS) || defined (_WIN32) #if defined (_WIN32)
#include <process.h> #include <process.h>
#endif #endif
...@@ -205,14 +205,6 @@ struct vstring ...@@ -205,14 +205,6 @@ struct vstring
external file mapped to LF in internal file), but in Unix-like systems, external file mapped to LF in internal file), but in Unix-like systems,
no text translation is required, so these flags have no effect. */ 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 #ifndef O_BINARY
#define O_BINARY 0 #define O_BINARY 0
#endif #endif
...@@ -275,9 +267,7 @@ char __gnat_path_separator = PATH_SEPARATOR; ...@@ -275,9 +267,7 @@ char __gnat_path_separator = PATH_SEPARATOR;
as well. This is only a temporary work-around for 3.11b. */ as well. This is only a temporary work-around for 3.11b. */
#ifndef GNAT_LIBRARY_TEMPLATE #ifndef GNAT_LIBRARY_TEMPLATE
#if defined (__EMX__) #if defined (VMS)
#define GNAT_LIBRARY_TEMPLATE "*.a"
#elif defined (VMS)
#define GNAT_LIBRARY_TEMPLATE "*.olb" #define GNAT_LIBRARY_TEMPLATE "*.olb"
#else #else
#define GNAT_LIBRARY_TEMPLATE "lib*.a" #define GNAT_LIBRARY_TEMPLATE "lib*.a"
...@@ -294,10 +284,7 @@ const int __gnat_vmsp = 1; ...@@ -294,10 +284,7 @@ const int __gnat_vmsp = 1;
const int __gnat_vmsp = 0; const int __gnat_vmsp = 0;
#endif #endif
#ifdef __EMX__ #if defined (VMS)
#define GNAT_MAX_PATH_LEN MAX_PATH
#elif defined (VMS)
#define GNAT_MAX_PATH_LEN 256 /* PATH_MAX */ #define GNAT_MAX_PATH_LEN 256 /* PATH_MAX */
#elif defined (__vxworks) || defined (__OPENNT) || defined(__nucleus__) #elif defined (__vxworks) || defined (__OPENNT) || defined(__nucleus__)
...@@ -478,8 +465,8 @@ __gnat_readlink (char *path ATTRIBUTE_UNUSED, ...@@ -478,8 +465,8 @@ __gnat_readlink (char *path ATTRIBUTE_UNUSED,
char *buf ATTRIBUTE_UNUSED, char *buf ATTRIBUTE_UNUSED,
size_t bufsiz ATTRIBUTE_UNUSED) size_t bufsiz ATTRIBUTE_UNUSED)
{ {
#if defined (MSDOS) || defined (_WIN32) || defined (__EMX__) \ #if defined (_WIN32) || defined (VMS) \
|| defined (VMS) || defined(__vxworks) || defined (__nucleus__) || defined(__vxworks) || defined (__nucleus__)
return -1; return -1;
#else #else
return readlink (path, buf, bufsiz); return readlink (path, buf, bufsiz);
...@@ -494,8 +481,8 @@ int ...@@ -494,8 +481,8 @@ int
__gnat_symlink (char *oldpath ATTRIBUTE_UNUSED, __gnat_symlink (char *oldpath ATTRIBUTE_UNUSED,
char *newpath ATTRIBUTE_UNUSED) char *newpath ATTRIBUTE_UNUSED)
{ {
#if defined (MSDOS) || defined (_WIN32) || defined (__EMX__) \ #if defined (_WIN32) || defined (VMS) \
|| defined (VMS) || defined(__vxworks) || defined (__nucleus__) || defined(__vxworks) || defined (__nucleus__)
return -1; return -1;
#else #else
return symlink (oldpath, newpath); return symlink (oldpath, newpath);
...@@ -504,8 +491,8 @@ __gnat_symlink (char *oldpath ATTRIBUTE_UNUSED, ...@@ -504,8 +491,8 @@ __gnat_symlink (char *oldpath ATTRIBUTE_UNUSED,
/* Try to lock a file, return 1 if success. */ /* Try to lock a file, return 1 if success. */
#if defined (__vxworks) || defined (__nucleus__) || defined (MSDOS) \ #if defined (__vxworks) || defined (__nucleus__) \
|| defined (_WIN32) || defined (__EMX__) || defined (VMS) || defined (_WIN32) || defined (VMS)
/* Version that does not use link. */ /* Version that does not use link. */
...@@ -577,9 +564,7 @@ __gnat_try_lock (char *dir, char *file) ...@@ -577,9 +564,7 @@ __gnat_try_lock (char *dir, char *file)
int int
__gnat_get_maximum_file_name_length (void) __gnat_get_maximum_file_name_length (void)
{ {
#if defined (MSDOS) #if defined (VMS)
return 8;
#elif defined (VMS)
if (getenv ("GNAT$EXTENDED_FILE_SPECIFICATIONS")) if (getenv ("GNAT$EXTENDED_FILE_SPECIFICATIONS"))
return -1; return -1;
else else
...@@ -594,7 +579,7 @@ __gnat_get_maximum_file_name_length (void) ...@@ -594,7 +579,7 @@ __gnat_get_maximum_file_name_length (void)
int int
__gnat_get_file_names_case_sensitive (void) __gnat_get_file_names_case_sensitive (void)
{ {
#if defined (__EMX__) || defined (MSDOS) || defined (VMS) || defined (WINNT) #if defined (VMS) || defined (WINNT)
return 0; return 0;
#else #else
return 1; return 1;
...@@ -604,11 +589,7 @@ __gnat_get_file_names_case_sensitive (void) ...@@ -604,11 +589,7 @@ __gnat_get_file_names_case_sensitive (void)
char char
__gnat_get_default_identifier_character_set (void) __gnat_get_default_identifier_character_set (void)
{ {
#if defined (__EMX__) || defined (MSDOS)
return 'p';
#else
return '1'; return '1';
#endif
} }
/* Return the current working directory. */ /* Return the current working directory. */
...@@ -675,12 +656,7 @@ __gnat_get_executable_suffix_ptr (int *len, const char **value) ...@@ -675,12 +656,7 @@ __gnat_get_executable_suffix_ptr (int *len, const char **value)
void void
__gnat_get_debuggable_suffix_ptr (int *len, const char **value) __gnat_get_debuggable_suffix_ptr (int *len, const char **value)
{ {
#ifndef MSDOS
*value = HOST_EXECUTABLE_SUFFIX; *value = HOST_EXECUTABLE_SUFFIX;
#else
/* On DOS, the extensionless COFF file is what gdb likes. */
*value = "";
#endif
if (*value == 0) if (*value == 0)
*len = 0; *len = 0;
...@@ -859,7 +835,7 @@ __gnat_open_read (char *path, int fmode) ...@@ -859,7 +835,7 @@ __gnat_open_read (char *path, int fmode)
return fd < 0 ? -1 : fd; return fd < 0 ? -1 : fd;
} }
#if defined (__EMX__) || defined (__MINGW32__) #if defined (__MINGW32__)
#define PERM (S_IREAD | S_IWRITE) #define PERM (S_IREAD | S_IWRITE)
#elif defined (VMS) #elif defined (VMS)
/* Excerpt from DECC C RTL Reference Manual: /* Excerpt from DECC C RTL Reference Manual:
...@@ -1101,7 +1077,7 @@ __gnat_stat_to_attr (int fd, char* name, struct file_attributes* attr) ...@@ -1101,7 +1077,7 @@ __gnat_stat_to_attr (int fd, char* name, struct file_attributes* attr)
attr->executable = (!ret && (statbuf.st_mode & S_IXUSR)); attr->executable = (!ret && (statbuf.st_mode & S_IXUSR));
#endif #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 */ /* on Windows requires extra system call, see __gnat_file_time_name_attr */
if (ret != 0) { if (ret != 0) {
attr->timestamp = (OS_Time)-1; attr->timestamp = (OS_Time)-1;
...@@ -1342,13 +1318,7 @@ OS_Time ...@@ -1342,13 +1318,7 @@ OS_Time
__gnat_file_time_name_attr (char* name, struct file_attributes* attr) __gnat_file_time_name_attr (char* name, struct file_attributes* attr)
{ {
if (attr->timestamp == (OS_Time)-2) { if (attr->timestamp == (OS_Time)-2) {
#if defined (__EMX__) || defined (MSDOS) #if defined (_WIN32) && !defined (RTX)
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)
time_t ret = -1; time_t ret = -1;
TCHAR wname[GNAT_MAX_PATH_LEN]; TCHAR wname[GNAT_MAX_PATH_LEN];
S2WSC (wname, name, GNAT_MAX_PATH_LEN); S2WSC (wname, name, GNAT_MAX_PATH_LEN);
...@@ -1383,74 +1353,7 @@ OS_Time ...@@ -1383,74 +1353,7 @@ OS_Time
__gnat_file_time_fd_attr (int fd, struct file_attributes* attr) __gnat_file_time_fd_attr (int fd, struct file_attributes* attr)
{ {
if (attr->timestamp == (OS_Time)-2) { if (attr->timestamp == (OS_Time)-2) {
/* The following workaround code is due to the fact that under EMX and #if defined (_WIN32) && !defined (RTX)
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)
HANDLE h = (HANDLE) _get_osfhandle (fd); HANDLE h = (HANDLE) _get_osfhandle (fd);
time_t ret = win32_filetime (h); time_t ret = win32_filetime (h);
attr->timestamp = (OS_Time) ret; attr->timestamp = (OS_Time) ret;
...@@ -1476,7 +1379,7 @@ __gnat_file_time_fd (int fd) ...@@ -1476,7 +1379,7 @@ __gnat_file_time_fd (int fd)
void void
__gnat_set_file_time_name (char *name, time_t time_stamp) __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. */ /* Code to implement __gnat_set_file_time_name for these systems. */
...@@ -1857,7 +1760,7 @@ __gnat_is_absolute_path (char *name, int length) ...@@ -1857,7 +1760,7 @@ __gnat_is_absolute_path (char *name, int length)
#else #else
return (length != 0) && return (length != 0) &&
(*name == '/' || *name == DIR_SEPARATOR (*name == '/' || *name == DIR_SEPARATOR
#if defined (__EMX__) || defined (MSDOS) || defined (WINNT) #if defined (WINNT)
|| (length > 1 && ISALPHA (name[0]) && name[1] == ':') || (length > 1 && ISALPHA (name[0]) && name[1] == ':')
#endif #endif
); );
...@@ -2358,7 +2261,7 @@ __gnat_portable_spawn (char *args[]) ...@@ -2358,7 +2261,7 @@ __gnat_portable_spawn (char *args[])
#if defined (__vxworks) || defined(__nucleus__) || defined(RTX) #if defined (__vxworks) || defined(__nucleus__) || defined(RTX)
return -1; return -1;
#elif defined (MSDOS) || defined (_WIN32) #elif defined (_WIN32)
/* args[0] must be quotes as it could contain a full pathname with spaces */ /* args[0] must be quotes as it could contain a full pathname with spaces */
char *args_0 = args[0]; char *args_0 = args[0];
args[0] = (char *)xmalloc (strlen (args_0) + 3); args[0] = (char *)xmalloc (strlen (args_0) + 3);
...@@ -2379,12 +2282,6 @@ __gnat_portable_spawn (char *args[]) ...@@ -2379,12 +2282,6 @@ __gnat_portable_spawn (char *args[])
#else #else
#ifdef __EMX__
pid = spawnvp (P_NOWAIT, args[0], args);
if (pid == -1)
return -1;
#else
pid = fork (); pid = fork ();
if (pid < 0) if (pid < 0)
return -1; return -1;
...@@ -2399,7 +2296,6 @@ __gnat_portable_spawn (char *args[]) ...@@ -2399,7 +2296,6 @@ __gnat_portable_spawn (char *args[])
_exit (1); _exit (1);
#endif #endif
} }
#endif
/* The parent. */ /* The parent. */
finished = waitpid (pid, &status, 0); finished = waitpid (pid, &status, 0);
...@@ -2649,19 +2545,6 @@ __gnat_portable_no_block_spawn (char *args[]) ...@@ -2649,19 +2545,6 @@ __gnat_portable_no_block_spawn (char *args[])
#if defined (__vxworks) || defined (__nucleus__) || defined (RTX) #if defined (__vxworks) || defined (__nucleus__) || defined (RTX)
return -1; 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) #elif defined (_WIN32)
HANDLE h = NULL; HANDLE h = NULL;
...@@ -2703,16 +2586,12 @@ __gnat_portable_wait (int *process_status) ...@@ -2703,16 +2586,12 @@ __gnat_portable_wait (int *process_status)
int pid = 0; int pid = 0;
#if defined (__vxworks) || defined (__nucleus__) || defined (RTX) #if defined (__vxworks) || defined (__nucleus__) || defined (RTX)
/* Not sure what to do here, so do same as __EMX__ case, i.e., nothing but /* Not sure what to do here, so do nothing but return zero. */
return zero. */
#elif defined (_WIN32) #elif defined (_WIN32)
pid = win32_wait (&status); pid = win32_wait (&status);
#elif defined (__EMX__) || defined (MSDOS)
/* ??? See corresponding comment in portable_no_block_spawn. */
#else #else
pid = waitpid (-1, &status, 0); pid = waitpid (-1, &status, 0);
...@@ -3458,14 +3337,6 @@ __gnat_adjust_os_resource_limits (void) ...@@ -3458,14 +3337,6 @@ __gnat_adjust_os_resource_limits (void)
#endif #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) #if defined (__mips_vxworks)
int int
_flush_cache() _flush_cache()
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- 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 -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -618,9 +618,9 @@ package body Csets is ...@@ -618,9 +618,9 @@ package body Csets is
-- Definitions for IBM PC (Code Page 437) -- -- Definitions for IBM PC (Code Page 437) --
-------------------------------------------- --------------------------------------------
-- Note: Code page 437 is the typical default in DOS, Windows and OS/2 -- Note: Code page 437 is the typical default in Windows for PC's in the
-- for PC's in the US, it corresponds to the original PC character set. -- US, it corresponds to the original PC character set. See also the
-- See also the definitions for code page 850. -- definitions for code page 850.
Fold_IBM_PC_437 : constant Translate_Table := Translate_Table'( Fold_IBM_PC_437 : constant Translate_Table := Translate_Table'(
...@@ -752,10 +752,10 @@ package body Csets is ...@@ -752,10 +752,10 @@ package body Csets is
-- Definitions for IBM PC (Code Page 850) -- -- Definitions for IBM PC (Code Page 850) --
-------------------------------------------- --------------------------------------------
-- Note: Code page 850 is the typical default in DOS, Windows and OS/2 -- Note: Code page 850 is the typical default in Windows for PC's in
-- for PC's in Europe, it is an extension of the original PC character -- Europe, it is an extension of the original PC character set to include
-- set to include the additional characters defined in ISO Latin-1. -- the additional characters defined in ISO Latin-1. See also the
-- See also the definitions for code page 437. -- definitions for code page 437.
Fold_IBM_PC_850 : constant Translate_Table := Translate_Table'( Fold_IBM_PC_850 : constant Translate_Table := Translate_Table'(
......
...@@ -119,6 +119,10 @@ package body CStand is ...@@ -119,6 +119,10 @@ package body CStand is
(New_Node_Kind : Node_Kind := N_Defining_Identifier) return Entity_Id; (New_Node_Kind : Node_Kind := N_Defining_Identifier) return Entity_Id;
-- Builds a new entity for Standard -- Builds a new entity for Standard
procedure Pack_String_Type (String_Type : Entity_Id);
-- Generate the proper tree for the pragma Pack that applies to each
-- string type.
procedure Print_Standard; procedure Print_Standard;
-- Print representation of package Standard if switch set -- Print representation of package Standard if switch set
...@@ -695,6 +699,7 @@ package body CStand is ...@@ -695,6 +699,7 @@ package body CStand is
Init_Size_Align (Standard_String); Init_Size_Align (Standard_String);
Set_Alignment (Standard_String, Uint_1); Set_Alignment (Standard_String, Uint_1);
Set_Has_Pragma_Pack (Standard_String, True); Set_Has_Pragma_Pack (Standard_String, True);
Pack_String_Type (Standard_String);
-- On targets where a storage unit is larger than a byte (such as AAMP), -- On targets where a storage unit is larger than a byte (such as AAMP),
-- pragma Pack has a real effect on the representation of type String, -- pragma Pack has a real effect on the representation of type String,
...@@ -738,6 +743,7 @@ package body CStand is ...@@ -738,6 +743,7 @@ package body CStand is
Set_Component_Size (Standard_Wide_String, Uint_16); Set_Component_Size (Standard_Wide_String, Uint_16);
Init_Size_Align (Standard_Wide_String); Init_Size_Align (Standard_Wide_String);
Set_Has_Pragma_Pack (Standard_Wide_String, True); Set_Has_Pragma_Pack (Standard_Wide_String, True);
Pack_String_Type (Standard_Wide_String);
-- Set index type of Wide_String -- Set index type of Wide_String
...@@ -775,6 +781,7 @@ package body CStand is ...@@ -775,6 +781,7 @@ package body CStand is
Init_Size_Align (Standard_Wide_Wide_String); Init_Size_Align (Standard_Wide_Wide_String);
Set_Is_Ada_2005_Only (Standard_Wide_Wide_String); Set_Is_Ada_2005_Only (Standard_Wide_Wide_String);
Set_Has_Pragma_Pack (Standard_Wide_Wide_String, True); Set_Has_Pragma_Pack (Standard_Wide_Wide_String, True);
Pack_String_Type (Standard_Wide_Wide_String);
-- Set index type of Wide_Wide_String -- Set index type of Wide_Wide_String
...@@ -1624,6 +1631,19 @@ package body CStand is ...@@ -1624,6 +1631,19 @@ package body CStand is
return E; return E;
end New_Standard_Entity; end New_Standard_Entity;
----------------------
-- Pack_String_Type --
----------------------
procedure Pack_String_Type (String_Type : Entity_Id) is
begin
Record_Rep_Item (String_Type,
Make_Pragma (Stloc,
Chars => Name_Pack,
Pragma_Argument_Associations =>
New_List (New_Occurrence_Of (String_Type, Stloc))));
end Pack_String_Type;
-------------------- --------------------
-- Print_Standard -- -- Print_Standard --
-------------------- --------------------
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* * * *
* Auxiliary C functions for Interfaces.C.Streams * * 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 * * 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- * * terms of the GNU General Public License as published by the Free Soft- *
...@@ -98,15 +98,6 @@ __gnat_is_regular_file_fd (int fd) ...@@ -98,15 +98,6 @@ __gnat_is_regular_file_fd (int fd)
int ret; int ret;
GNAT_STRUCT_STAT statbuf; 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); ret = GNAT_FSTAT (fd, &statbuf);
return (!ret && S_ISREG (statbuf.st_mode)); return (!ret && S_ISREG (statbuf.st_mode));
} }
...@@ -166,9 +157,9 @@ __gnat_full_name (char *nam, char *buffer) ...@@ -166,9 +157,9 @@ __gnat_full_name (char *nam, char *buffer)
else else
buffer[0] = '\0'; buffer[0] = '\0';
#elif defined(__EMX__) || defined (__MINGW32__) #elif defined (__MINGW32__)
/* If this is a device file return it as is; under Windows NT and /* If this is a device file return it as is;
OS/2 a device file end with ":". */ under Windows NT a device file ends with ":". */
if (nam[strlen (nam) - 1] == ':') if (nam[strlen (nam) - 1] == ':')
strcpy (buffer, nam); strcpy (buffer, nam);
else else
...@@ -182,9 +173,6 @@ __gnat_full_name (char *nam, char *buffer) ...@@ -182,9 +173,6 @@ __gnat_full_name (char *nam, char *buffer)
*p = '\\'; *p = '\\';
} }
#elif defined (MSDOS)
_fixpath (nam, buffer);
#elif defined (sgi) || defined (__FreeBSD__) #elif defined (sgi) || defined (__FreeBSD__)
/* Use realpath function which resolves links and references to . and .. /* Use realpath function which resolves links and references to . and ..
......
...@@ -6209,6 +6209,36 @@ package body Einfo is ...@@ -6209,6 +6209,36 @@ package body Einfo is
and then Present (Related_Instance (Id))); and then Present (Related_Instance (Id)));
end Is_Wrapper_Package; end Is_Wrapper_Package;
-----------------
-- Last_Formal --
-----------------
function Last_Formal (Id : E) return E is
Formal : E;
begin
pragma Assert
(Is_Overloadable (Id)
or else Ekind_In (Id, E_Entry_Family,
E_Subprogram_Body,
E_Subprogram_Type));
if Ekind (Id) = E_Enumeration_Literal then
return Empty;
else
Formal := First_Formal (Id);
if Present (Formal) then
while Present (Next_Formal (Formal)) loop
Formal := Next_Formal (Formal);
end loop;
end if;
return Formal;
end if;
end Last_Formal;
-------------------- --------------------
-- Next_Component -- -- Next_Component --
-------------------- --------------------
......
...@@ -2756,6 +2756,13 @@ package Einfo is ...@@ -2756,6 +2756,13 @@ package Einfo is
-- Points to the last entry in the list of associated entities chained -- Points to the last entry in the list of associated entities chained
-- through the Next_Entity field. Empty if no entities are chained. -- through the Next_Entity field. Empty if no entities are chained.
-- Last_Formal (synthesized)
-- Applies to subprograms and subprogram types, and also in entries
-- and entry families. Returns last formal of the subprogram or entry.
-- The formals are the first entities declared in a subprogram or in
-- a subprogram type (the designated type of an Access_To_Subprogram
-- definition) or in an entry.
-- Limited_View (Node23) -- Limited_View (Node23)
-- Present in non-generic package entities that are not instances. Bona -- Present in non-generic package entities that are not instances. Bona
-- fide package with the limited-view list through the first_entity and -- fide package with the limited-view list through the first_entity and
...@@ -4881,9 +4888,10 @@ package Einfo is ...@@ -4881,9 +4888,10 @@ package Einfo is
-- Sec_Stack_Needed_For_Return (Flag167) -- Sec_Stack_Needed_For_Return (Flag167)
-- Uses_Sec_Stack (Flag95) -- Uses_Sec_Stack (Flag95)
-- Address_Clause (synth) -- Address_Clause (synth)
-- Entry_Index_Type (synth)
-- First_Formal (synth) -- First_Formal (synth)
-- First_Formal_With_Extras (synth) -- First_Formal_With_Extras (synth)
-- Entry_Index_Type (synth) -- Last_Formal (synth)
-- Number_Formals (synth) -- Number_Formals (synth)
-- Scope_Depth (synth) -- Scope_Depth (synth)
...@@ -5002,6 +5010,7 @@ package Einfo is ...@@ -5002,6 +5010,7 @@ package Einfo is
-- Address_Clause (synth) -- Address_Clause (synth)
-- First_Formal (synth) -- First_Formal (synth)
-- First_Formal_With_Extras (synth) -- First_Formal_With_Extras (synth)
-- Last_Formal (synth)
-- Number_Formals (synth) -- Number_Formals (synth)
-- Scope_Depth (synth) -- Scope_Depth (synth)
...@@ -5261,6 +5270,7 @@ package Einfo is ...@@ -5261,6 +5270,7 @@ package Einfo is
-- Address_Clause (synth) -- Address_Clause (synth)
-- First_Formal (synth) -- First_Formal (synth)
-- First_Formal_With_Extras (synth) -- First_Formal_With_Extras (synth)
-- Last_Formal (synth)
-- Number_Formals (synth) -- Number_Formals (synth)
-- E_Protected_Body -- E_Protected_Body
...@@ -5385,6 +5395,7 @@ package Einfo is ...@@ -5385,6 +5395,7 @@ package Einfo is
-- Directly_Designated_Type (Node20) -- Directly_Designated_Type (Node20)
-- First_Formal (synth) -- First_Formal (synth)
-- First_Formal_With_Extras (synth) -- First_Formal_With_Extras (synth)
-- Last_Formal (synth)
-- Number_Formals (synth) -- Number_Formals (synth)
-- (plus type attributes) -- (plus type attributes)
...@@ -6149,6 +6160,7 @@ package Einfo is ...@@ -6149,6 +6160,7 @@ package Einfo is
function Is_Task_Interface (Id : E) return B; function Is_Task_Interface (Id : E) return B;
function Is_Task_Record_Type (Id : E) return B; function Is_Task_Record_Type (Id : E) return B;
function Is_Wrapper_Package (Id : E) return B; function Is_Wrapper_Package (Id : E) return B;
function Last_Formal (Id : E) return E;
function Next_Component (Id : E) return E; function Next_Component (Id : E) return E;
function Next_Component_Or_Discriminant (Id : E) return E; function Next_Component_Or_Discriminant (Id : E) return E;
function Next_Discriminant (Id : E) return E; function Next_Discriminant (Id : E) return E;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* * * *
* C Implementation File * * 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 * * 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- * * terms of the GNU General Public License as published by the Free Soft- *
...@@ -107,9 +107,7 @@ typedef struct _ile3 ...@@ -107,9 +107,7 @@ typedef struct _ile3
void void
__gnat_setenv (char *name, char *value) __gnat_setenv (char *name, char *value)
{ {
#ifdef MSDOS #if defined (VMS)
#elif defined (VMS)
struct descriptor_s name_desc; struct descriptor_s name_desc;
/* Put in JOB table for now, so that the project stuff at least works. */ /* Put in JOB table for now, so that the project stuff at least works. */
struct descriptor_s table_desc = {7, 0, "LNM$JOB"}; struct descriptor_s table_desc = {7, 0, "LNM$JOB"};
......
...@@ -238,7 +238,7 @@ package body Exp_CG is ...@@ -238,7 +238,7 @@ package body Exp_CG is
or else Chars (E) = Name_uAlignment or else Chars (E) = Name_uAlignment
or else or else
(Chars (E) = Name_Op_Eq (Chars (E) = Name_Op_Eq
and then Etype (First_Entity (E)) = Etype (Last_Entity (E))) and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
or else Chars (E) = Name_uAssign or else Chars (E) = Name_uAssign
or else Is_Predefined_Interface_Primitive (E) or else Is_Predefined_Interface_Primitive (E)
then then
...@@ -283,7 +283,7 @@ package body Exp_CG is ...@@ -283,7 +283,7 @@ package body Exp_CG is
return Predef_Names_95 (J) /= Name_Op_Eq return Predef_Names_95 (J) /= Name_Op_Eq
or else or else
Etype (First_Entity (E)) = Etype (Last_Entity (E)); Etype (First_Formal (E)) = Etype (Last_Formal (E));
end if; end if;
end loop; end loop;
......
...@@ -1782,7 +1782,7 @@ package body Exp_Disp is ...@@ -1782,7 +1782,7 @@ package body Exp_Disp is
or else TSS_Name = TSS_Stream_Output or else TSS_Name = TSS_Stream_Output
or else or else
(Chars (E) = Name_Op_Eq (Chars (E) = Name_Op_Eq
and then Etype (First_Entity (E)) = Etype (Last_Entity (E))) and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
or else Chars (E) = Name_uAssign or else Chars (E) = Name_uAssign
or else TSS_Name = TSS_Deep_Adjust or else TSS_Name = TSS_Deep_Adjust
or else TSS_Name = TSS_Deep_Finalize or else TSS_Name = TSS_Deep_Finalize
...@@ -1824,7 +1824,7 @@ package body Exp_Disp is ...@@ -1824,7 +1824,7 @@ package body Exp_Disp is
or else Chars (E) = Name_uAlignment or else Chars (E) = Name_uAlignment
or else or else
(Chars (E) = Name_Op_Eq (Chars (E) = Name_Op_Eq
and then Etype (First_Entity (E)) = Etype (Last_Entity (E))) and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
or else Chars (E) = Name_uAssign or else Chars (E) = Name_uAssign
or else TSS_Name = TSS_Deep_Adjust or else TSS_Name = TSS_Deep_Adjust
or else TSS_Name = TSS_Deep_Finalize or else TSS_Name = TSS_Deep_Finalize
......
...@@ -1670,7 +1670,7 @@ package body Exp_Util is ...@@ -1670,7 +1670,7 @@ package body Exp_Util is
exit when Chars (Op) = Name exit when Chars (Op) = Name
and then and then
(Name /= Name_Op_Eq (Name /= Name_Op_Eq
or else Etype (First_Entity (Op)) = Etype (Last_Entity (Op))); or else Etype (First_Formal (Op)) = Etype (Last_Formal (Op)));
Next_Elmt (Prim); Next_Elmt (Prim);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- 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 -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -209,8 +209,8 @@ package GNAT.Directory_Operations is ...@@ -209,8 +209,8 @@ package GNAT.Directory_Operations is
-- Recognize both forms described above. -- Recognize both forms described above.
-- --
-- System_Default -- System_Default
-- Uses either UNIX on Unix and OpenVMS systems, or DOS on Windows and -- Uses either UNIX on Unix and OpenVMS systems, or DOS on Windows,
-- OS/2 depending on the running environment. -- depending on the running environment.
--------------- ---------------
-- Iterators -- -- Iterators --
......
...@@ -2923,7 +2923,7 @@ Ada exceptions, or used to implement run-time functions such as the ...@@ -2923,7 +2923,7 @@ Ada exceptions, or used to implement run-time functions such as the
Pragma @code{Interrupt_State} provides a general mechanism for overriding Pragma @code{Interrupt_State} provides a general mechanism for overriding
such uses of interrupts. It subsumes the functionality of pragma such uses of interrupts. It subsumes the functionality of pragma
@code{Unreserve_All_Interrupts}. Pragma @code{Interrupt_State} is not @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 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 and may be used to mark interrupts required by the board support package
as reserved. as reserved.
...@@ -13246,8 +13246,8 @@ package Interfaces.C_Streams is ...@@ -13246,8 +13246,8 @@ package Interfaces.C_Streams is
-- Standard C functions -- -- Standard C functions --
-------------------------- --------------------------
-- The functions selected below are ones that are -- The functions selected below are ones that are
-- available in DOS, OS/2, UNIX and Xenix (but not -- available in UNIX (but not necessarily in ANSI C).
-- necessarily in ANSI C). These are very thin interfaces -- These are very thin interfaces
-- which copy exactly the C headers. For more -- which copy exactly the C headers. For more
-- documentation on these functions, see the Microsoft C -- documentation on these functions, see the Microsoft C
-- "Run-Time Library Reference" (Microsoft Press, 1990, -- "Run-Time Library Reference" (Microsoft Press, 1990,
...@@ -15502,7 +15502,7 @@ the underlying kernel. Otherwise, some target dependent glue code maps ...@@ -15502,7 +15502,7 @@ the underlying kernel. Otherwise, some target dependent glue code maps
the services offered by the underlying kernel to the semantics expected the services offered by the underlying kernel to the semantics expected
by GNARL@. 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 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. kernel. For example, in the case of VxWorks, one Ada task = one VxWorks task.
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- 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 -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -76,9 +76,9 @@ package Interfaces.C_Streams is ...@@ -76,9 +76,9 @@ package Interfaces.C_Streams is
-- Standard C functions -- -- Standard C functions --
-------------------------- --------------------------
-- The functions selected below are ones that are available in DOS, -- The functions selected below are ones that are available in
-- OS/2, UNIX and Xenix (but not necessarily in ANSI C). These are -- UNIX (but not necessarily in ANSI C). These are very thin
-- very thin interfaces which copy exactly the C headers. For more -- interfaces which copy exactly the C headers. For more
-- documentation on these functions, see the Microsoft C "Run-Time -- documentation on these functions, see the Microsoft C "Run-Time
-- Library Reference" (Microsoft Press, 1990, ISBN 1-55615-225-6), -- Library Reference" (Microsoft Press, 1990, ISBN 1-55615-225-6),
-- which includes useful information on system compatibility. -- which includes useful information on system compatibility.
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* * * *
* C Implementation File * * 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 * * 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- * * terms of the GNU General Public License as published by the Free Soft- *
...@@ -2211,10 +2211,10 @@ __gnat_install_handler (void) ...@@ -2211,10 +2211,10 @@ __gnat_install_handler (void)
/*********************/ /*********************/
/* This routine is called as each process thread is created, for possible /* This routine is called as each process thread is created, for possible
initialization of the FP processor. This version is used under INTERIX, initialization of the FP processor. This version is used under INTERIX
WIN32 and could be used under OS/2. */ and WIN32. */
#if defined (_WIN32) || defined (__INTERIX) || defined (__EMX__) \ #if defined (_WIN32) || defined (__INTERIX) \
|| defined (__Lynx__) || defined(__NetBSD__) || defined(__FreeBSD__) \ || defined (__Lynx__) || defined(__NetBSD__) || defined(__FreeBSD__) \
|| defined (__OpenBSD__) || defined (__OpenBSD__)
......
...@@ -84,7 +84,7 @@ package Osint is ...@@ -84,7 +84,7 @@ package Osint is
Get_File_Names_Case_Sensitive /= 0; Get_File_Names_Case_Sensitive /= 0;
-- Set to indicate whether the operating system convention is for file -- 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 -- 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); procedure Canonical_Case_File_Name (S : in out String);
-- Given a file name, converts it to canonical case form. For systems -- Given a file name, converts it to canonical case form. For systems
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- 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 -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -104,7 +104,7 @@ package body System.File_IO is ...@@ -104,7 +104,7 @@ package body System.File_IO is
File_Names_Case_Sensitive : constant Boolean := Get_Case_Sensitive /= 0; File_Names_Case_Sensitive : constant Boolean := Get_Case_Sensitive /= 0;
-- Set to indicate whether the operating system convention is for file -- 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 -- 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 -- -- Local Subprograms --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- 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 -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -64,7 +64,7 @@ package body System.Stack_Checking.Operations is ...@@ -64,7 +64,7 @@ package body System.Stack_Checking.Operations is
-- Note: This function must be compiled with Polling turned off -- 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 -- Set_Stack_Info should return an access value for such local
-- storage. In those cases the cache will always be up-to-date. -- storage. In those cases the cache will always be up-to-date.
......
...@@ -37,11 +37,10 @@ package body SFN_Scan is ...@@ -37,11 +37,10 @@ package body SFN_Scan is
-- Allow easy access to control character definitions -- Allow easy access to control character definitions
EOF : constant Character := ASCII.SUB; EOF : constant Character := ASCII.SUB;
-- The character SUB (16#1A#) is used in DOS and other systems derived -- The character SUB (16#1A#) is DOS-derived systems, such as Windows
-- from DOS (OS/2, NT etc.) to signal the end of a text file. If this -- to signal the end of a text file. If this character appears as the
-- character appears as the last character of a file scanned by a call -- last character of a file scanned by a call to Scan_SFN_Pragmas,
-- to Scan_SFN_Pragmas, then it is ignored, otherwise it is treated as -- then it is ignored, otherwise it is treated as an illegal character.
-- an illegal character.
type String_Ptr is access String; type String_Ptr is access String;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* * * *
* C Implementation File * * 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 * * 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- * * terms of the GNU General Public License as published by the Free Soft- *
...@@ -158,7 +158,7 @@ extern struct tm *localtime_r(const time_t *, struct tm *); ...@@ -158,7 +158,7 @@ extern struct tm *localtime_r(const time_t *, struct tm *);
*/ */
#if defined(WINNT) || defined (MSDOS) || defined (__EMX__) #if defined(WINNT)
static const char *mode_read_text = "rt"; static const char *mode_read_text = "rt";
static const char *mode_write_text = "wt"; static const char *mode_write_text = "wt";
static const char *mode_append_text = "at"; static const char *mode_append_text = "at";
...@@ -345,7 +345,7 @@ __gnat_ttyname (int filedes) ...@@ -345,7 +345,7 @@ __gnat_ttyname (int filedes)
} }
#endif #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 (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
|| defined (__MACHTEN__) || defined (__hpux__) || defined (_AIX) \ || defined (__MACHTEN__) || defined (__hpux__) || defined (_AIX) \
|| (defined (__svr4__) && defined (i386)) || defined (__Lynx__) \ || (defined (__svr4__) && defined (i386)) || defined (__Lynx__) \
...@@ -403,7 +403,7 @@ getc_immediate_common (FILE *stream, ...@@ -403,7 +403,7 @@ getc_immediate_common (FILE *stream,
int *avail, int *avail,
int waiting) int waiting)
{ {
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \ #if defined (linux) || defined (sun) || defined (sgi) \
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \ || (defined (__osf__) && ! defined (__alpha_vxworks)) \
|| defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (__hpux__) \ || defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (__hpux__) \
|| defined (_AIX) || (defined (__svr4__) && defined (i386)) \ || defined (_AIX) || (defined (__svr4__) && defined (i386)) \
...@@ -424,7 +424,7 @@ getc_immediate_common (FILE *stream, ...@@ -424,7 +424,7 @@ getc_immediate_common (FILE *stream,
/* Set RAW mode, with no echo */ /* Set RAW mode, with no echo */
termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON & ~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 (__osf__) || defined (__MACHTEN__) || defined (__hpux__) \
|| defined (_AIX) || (defined (__svr4__) && defined (i386)) \ || defined (_AIX) || (defined (__svr4__) && defined (i386)) \
|| defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \ || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
...@@ -433,18 +433,12 @@ getc_immediate_common (FILE *stream, ...@@ -433,18 +433,12 @@ getc_immediate_common (FILE *stream,
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for /* 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 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 Ctrl-C processing.
unless we do a read loop. Luckily we can delay a bit between If not waiting (i.e. Get_Immediate (Char, Available)),
iterations. If not waiting (i.e. Get_Immediate (Char, Available)),
don't wait for anything but timeout immediately. */ 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[VMIN] = waiting;
termios_rec.c_cc[VTIME] = 0; termios_rec.c_cc[VTIME] = 0;
#endif #endif
#endif
tcsetattr (fd, TCSANOW, &termios_rec); tcsetattr (fd, TCSANOW, &termios_rec);
while (! good_one) while (! good_one)
...@@ -720,7 +714,7 @@ long __gnat_invalid_tzoff = 259273; ...@@ -720,7 +714,7 @@ long __gnat_invalid_tzoff = 259273;
/* Definition of __gnat_localtime_r used by a-calend.adb */ /* Definition of __gnat_localtime_r used by a-calend.adb */
#if defined (__EMX__) || defined (__MINGW32__) #if defined (__MINGW32__)
#ifdef CERT #ifdef CERT
...@@ -743,7 +737,7 @@ extern void (*Unlock_Task) (void); ...@@ -743,7 +737,7 @@ extern void (*Unlock_Task) (void);
#endif #endif
/* Reentrant localtime for Windows and OS/2. */ /* Reentrant localtime for Windows. */
extern void extern void
__gnat_localtime_tzoff (const time_t *, long *); __gnat_localtime_tzoff (const time_t *, long *);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- 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 -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -231,7 +231,7 @@ package body Xref_Lib is ...@@ -231,7 +231,7 @@ package body Xref_Lib is
Line_Start := Index (Entity (File_Start .. Entity'Last), ":"); 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 if File_Start = Line_Start - 1
and then Line_Start < Entity'Last and then Line_Start < Entity'Last
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment