On Thu, 26 Sept 2024 at 13:07, Jakub Jelinek <ja...@redhat.com> wrote:
>
> On Thu, Sep 26, 2024 at 08:34:45PM +1000, Nathaniel Shead wrote:
> > --- a/libgcc/gthr-posix.h
> > +++ b/libgcc/gthr-posix.h
> > @@ -44,6 +44,21 @@ see the files COPYING3 and COPYING.RUNTIME respectively. 
> >  If not, see
> >  # endif
> >  #endif
> >
> > +#ifdef __has_attribute
> > +# if __has_attribute(__always_inline__)
> > +#  define __GTHREAD_ALWAYS_INLINE __attribute__((__always_inline__))
> > +# endif
> > +#endif
> > +#ifndef __GTHREAD_ALWAYS_INLINE
> > +# define __GTHREAD_ALWAYS_INLINE
> > +#endif
> > +
> > +#ifdef __cplusplus
> > +# define __GTHREAD_INLINE inline __GTHREAD_ALWAYS_INLINE
> > +#else
> > +# define __GTHREAD_INLINE static inline
> > +#endif
>
> Thanks.
>
> > @@ -182,22 +197,29 @@ __gthrw(pthread_setschedparam)
> >
> >  #if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__))
> >
> > -static volatile int __gthread_active = -1;
> > +#pragma GCC visibility push(hidden)
> > +__GTHREAD_INLINE volatile int *
> > +__gthread_active (void)
> > +{
> > +  static volatile int __gthread_active_var = -1;
> > +  return &__gthread_active_var;
> > +}
> > +#pragma GCC visibility pop
>
> I think something like the above
>
> > -static void
> > +__GTHREAD_INLINE void
> >  __gthread_trigger (void)
> >  {
> > -  __gthread_active = 1;
> > +  *__gthread_active () = 1;
> >  }
> >
> > -static inline int
> > +__GTHREAD_INLINE int
> >  __gthread_active_p (void)
> >  {
> >    static pthread_mutex_t __gthread_active_mutex = 
> > PTHREAD_MUTEX_INITIALIZER;
> >    static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT;
>
> is needed also around this one.
>
> > @@ -257,13 +279,15 @@ __gthrw2(__gthrw_(__pthread_key_create),
> >  # define GTHR_ACTIVE_PROXY   __gthrw_(pthread_cancel)
> >  #endif
> >
> > -static inline int
> > +#pragma GCC visibility push(hidden)
> > +__GTHREAD_INLINE int
> >  __gthread_active_p (void)
> >  {
> >    static void *const __gthread_active_ptr
> >      = __extension__ (void *) &GTHR_ACTIVE_PROXY;
> >    return __gthread_active_ptr != 0;
> >  }
> > +#pragma GCC visibility pop
>
> And this one but you've added it to that one already.
>
> Otherwise LGTM for the libgcc side, will defer to Jon for libstdc++ side.


The libstdc++ parts are OK too, thanks for working on this.

Reply via email to