diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-10-26 13:10:12 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-10-26 13:10:12 +0000 |
commit | 1fa721ba66290493d080198d0c0baef43cc03e08 (patch) | |
tree | c7f43e850cb4a4897668e4927af675c26278cd8c /gcc/ada/sysdep.c | |
parent | 70ea59154f18020ae6a0d9e9adbfc551a8322068 (diff) |
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).
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229355 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sysdep.c')
-rw-r--r-- | gcc/ada/sysdep.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c index 01dae2bf1fc..21cd37cc540 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 |