aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sysdep.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2015-10-26 14:10:12 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2015-10-26 14:10:12 +0100
commitfa73fc3d39956ebf22998dea8bffa96fad34d6f2 (patch)
treec7f43e850cb4a4897668e4927af675c26278cd8c /gcc/ada/sysdep.c
parente3d6bccc831ddd49e6b8e888df5e301c2da339b4 (diff)
downloadgcc-fa73fc3d39956ebf22998dea8bffa96fad34d6f2.zip
gcc-fa73fc3d39956ebf22998dea8bffa96fad34d6f2.tar.gz
gcc-fa73fc3d39956ebf22998dea8bffa96fad34d6f2.tar.bz2
[multiple changes]
2015-10-26 Jerome Lambourg <lambourg@adacore.com> * sysdep.c (__gnat_get_task_options): Workaround a VxWorks bug where VX_DEALLOC_TCB task option is forbidden when calling taskCreate but allowed in VX_USR_TASK_OPTIONS. 2015-10-26 Javier Miranda <miranda@adacore.com> * exp_unst.ads, exp_unst.adb (Is_Uplevel_Referenced): New subprogram. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Constant_Indexing_OK): New predicate, subsidiary of Try_Container_Indexing, that implements the name resolution rules given in RM 4.1.6 (13-15). From-SVN: r229355
Diffstat (limited to 'gcc/ada/sysdep.c')
-rw-r--r--gcc/ada/sysdep.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c
index 01dae2b..21cd37c 100644
--- a/gcc/ada/sysdep.c
+++ b/gcc/ada/sysdep.c
@@ -865,10 +865,19 @@ __gnat_get_task_options (void)
/* Mask those bits that are not under user control */
#ifdef VX_USR_TASK_OPTIONS
- return options & VX_USR_TASK_OPTIONS;
-#else
- return options;
+ /* O810-007, TSR 00043679:
+ Workaround a bug in Vx-7 where VX_DEALLOC_TCB == VX_PRIVATE_UMASK and:
+ - VX_DEALLOC_TCB is an internal option not to be used by users
+ - VX_PRIVATE_UMASK as a user-definable option
+ This leads to VX_USR_TASK_OPTIONS allowing 0x8000 as VX_PRIVATE_UMASK but
+ taskCreate refusing this option (VX_DEALLOC_TCB is not allowed)
+ */
+# if defined (VX_PRIVATE_UMASK) && (VX_DEALLOC_TCB == VX_PRIVATE_UMASK)
+ options &= ~VX_DEALLOC_TCB;
+# endif
+ options &= VX_USR_TASK_OPTIONS;
#endif
+ return options;
}
#endif