On Sun, Aug 9, 2026 at 3:13 PM Rainer Jung <[email protected]> wrote:
>
> Hi Eric and all,
>
> Am 03.08.26 um 15:45 schrieb [email protected]:
> > Author: covener
> > Date: Mon Aug  3 13:45:25 2026
> > New Revision: 1936828
> >
> > Log:
> > Merge r1936827 from aprutil 1.7.x:
> >
> > hide __has_attribute on traditional xlc platforms
> >
> > The backport of 1917748 omitted this in apr.h on purpose,
> > but this is a new/narrow usage and not in a header
> > where it would taint anyones use of __has_attribute.
> >
> > Modified:
> >     apr/apr-util/branches/1.6.x/   (props changed)
> >     apr/apr-util/branches/1.6.x/crypto/   (props changed)
> >     apr/apr-util/branches/1.6.x/crypto/apr_passwd.c
> >
> > Modified: apr/apr-util/branches/1.6.x/crypto/apr_passwd.c
> > ==============================================================================
> > --- apr/apr-util/branches/1.6.x/crypto/apr_passwd.c   Mon Aug  3 13:44:19 
> > 2026        (r1936827)
> > +++ apr/apr-util/branches/1.6.x/crypto/apr_passwd.c   Mon Aug  3 13:45:25 
> > 2026        (r1936828)
> > @@ -64,6 +64,12 @@ static volatile const apr_uint32_t optbl
> >    * Paper:
> >    *   https://cr.yp.to/papers/cryptoint-20250424.pdf
> >    */
> > +#if (defined(__xlc__) && !defined(__GNUC__))
> > +#ifndef __has_attribute
> > +#define __has_attribute(__x)    0
> > +#endif
> > +#endif
> > +
> >   #if __has_attribute(always_inline)
> >   __attribute__((always_inline))
> >   #endif
> I also get compilation errors due to __has_attribute() when compiling
> with older gcc compilers. Due to
>
> https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005fattribute.html
>
> I would suggest a more general check like this:
>
> --- crypto/apr_passwd.c 2026-08-03 15:45:25.000000000 +0200
> +++ crypto/apr_passwd.c 2026-08-09 20:56:18.478871355 +0200
> ...
> -#if (defined(__xlc__) && !defined(__GNUC__))
>   #ifndef __has_attribute
>   #define __has_attribute(__x)    0
>   #endif
> -#endif
>   ...
>
>
> Would that be OK for your xlc environment as well?
>
> I would then also apply this to crypto/apr_crypto.c which contains
> another copy of test_nonzero_timingsafe() and thus also uses
> __has_attribute().

No issue for me expanding it, but even on xlc I read that
__attribute__((always_inline)) was supported just with no way to check
(outside of autoconf in advance)

Reply via email to