Commit ef8a3d9e by Doug Rupp Committed by Pierre-Marie de Rodat

[Ada] Vxworks7r2 SR0610 coalesced some macro values

SR0600 and SR0610 cannot be differentiated by macro testing (arguably an
oversight in header file version.h) so: The case statement testing for
"file not found" is reformulated into an if/else series of statements to
avoid a problem where two cases have identical values in SR0610, but
different values in SR0600.

2019-07-10  Doug Rupp  <rupp@adacore.com>

gcc/ada/

	* sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
	work for vxworks7r2 SR0610.

From-SVN: r273333
parent 32e0627f
2019-07-10 Doug Rupp <rupp@adacore.com>
* sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
work for vxworks7r2 SR0610.
2019-07-10 Doug Rupp <rupp@adacore.com>
* env.c (__gnat_environ): Reformulate to also work for
vxworks7r2 SR0610.
......
......@@ -300,7 +300,7 @@ __gnat_set_mode (int handle ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED)
}
char *
__gnat_ttyname (int filedes)
__gnat_ttyname (int filedes ATTRIBUTE_UNUSED)
{
#if defined (__vxworks)
return "";
......@@ -896,30 +896,34 @@ __gnat_get_task_options (void)
#endif
int
__gnat_is_file_not_found_error (int errno_val) {
switch (errno_val) {
case ENOENT:
__gnat_is_file_not_found_error (int errno_val)
{
/* WARNING: Do not rewrite this as a switch/case statement.
* Some of the "cases" are duplicated in some versions of
* Vxworks, notably VxWorks7r2 SR0610. */
if (errno_val == ENOENT)
return 1;
#ifdef __vxworks
/* In the case of VxWorks, we also have to take into account various
* filesystem-specific variants of this error.
*/
/* In the case of VxWorks, we also have to take into account various
* filesystem-specific variants of this error.
*/
#if ! defined (VTHREADS) && (_WRS_VXWORKS_MAJOR < 7)
case S_dosFsLib_FILE_NOT_FOUND:
else if (errno_val == S_dosFsLib_FILE_NOT_FOUND)
return 1;
#endif
#if ! defined (__RTP__) && (! defined (VTHREADS) || defined (__VXWORKSMILS__))
case S_nfsLib_NFSERR_NOENT:
else if (errno_val == S_nfsLib_NFSERR_NOENT)
return 1;
#endif
#if defined (__RTP__)
/* An RTP can return an NFS file not found, and the NFS bits must
first be masked on to check the errno. */
case M_nfsStat | ENOENT:
/* An RTP can return an NFS file not found, and the NFS bits must
first be masked on to check the errno. */
else if (errno_val == (M_nfsStat | ENOENT))
return 1;
#endif
#endif
return 1;
default:
return 0;
}
else
return 0;
}
#if defined (__linux__)
......
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