Hi Rasmus,

> On 26 May 2020, at 16:52, Rasmus Villemoes <r...@rasmusvillemoes.dk> wrote:
> 
> The vxworks-cond.c file fails to compile for vxworks 5.x:
> 
> libgcc/config/gthr-vxworks-cond.c:29:
> ./gthr-default.h:274:3: error: unknown type name 'TASK_ID'
>  274 |   TASK_ID task_id;
>      |   ^~~~~~~
> 
> There is a TASK_ID typedef in our system headers, but (1) is is
> commented out, (2) lives in some obscure header that nothing really
> pulls in and (3) it is defined as a "struct wind_task *", which isn't
> really consistent with taskCreate() returning an int.
> 
> In order to allow building gcc, let's just disable __GTHREAD_HAS_COND
> for vxworks 5.x. To simplify the makefile fragments, keep including
> gthr-vxworks-cond.c, but guard the actual code by __GTHREAD_HAS_COND -
> that way, the logic for deciding whether to support gthread condition
> variables is kept in gthr-vxworks.h.

This one is OK for me, with a ChangeLog please. Thanks.

Olivier

> ---
> libgcc/config/gthr-vxworks-cond.c | 4 ++++
> libgcc/config/gthr-vxworks.h      | 4 ++++
> 2 files changed, 8 insertions(+)
> 
> diff --git a/libgcc/config/gthr-vxworks-cond.c 
> b/libgcc/config/gthr-vxworks-cond.c
> index d65d07aebc3..f0585624c05 100644
> --- a/libgcc/config/gthr-vxworks-cond.c
> +++ b/libgcc/config/gthr-vxworks-cond.c
> @@ -31,6 +31,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  
> If not, see
> 
> /* --------------------------- Condition Variables ------------------------ */
> 
> +#if __GTHREAD_HAS_COND
> +
> void
> __gthread_cond_init (__gthread_cond_t *cond)
> {
> @@ -81,3 +83,5 @@ __gthread_cond_wait_recursive (__gthread_cond_t *cond,
> {
>   return __gthread_cond_wait (cond, mutex);
> }
> +
> +#endif
> diff --git a/libgcc/config/gthr-vxworks.h b/libgcc/config/gthr-vxworks.h
> index e38174730bf..91e3d94ac67 100644
> --- a/libgcc/config/gthr-vxworks.h
> +++ b/libgcc/config/gthr-vxworks.h
> @@ -234,6 +234,8 @@ extern int __gthread_setspecific (__gthread_key_t __key, 
> void *__ptr);
> 
> /* ------------------ Base condition variables support ------------------- */
> 
> +#if _VXWORKS_MAJOR_GE(6)
> +
> #define __GTHREAD_HAS_COND 1
> 
> typedef SEM_ID __gthread_cond_t;
> @@ -254,6 +256,8 @@ extern int __gthread_cond_wait (__gthread_cond_t *cond,
> extern int __gthread_cond_wait_recursive (__gthread_cond_t *cond,
>                                         __gthread_recursive_mutex_t *mutex);
> 
> +#endif /* _VXWORKS_MAJOR_GE(6) */
> +
> /* -----------------------  C++0x thread support ------------------------- */
> 
> /* We do not support C++0x threads on that VxWorks 653, which we can
> -- 
> 2.23.0
> 

Reply via email to