You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by co...@apache.org on 2026/08/03 13:45:25 UTC
svn commit: r1936828 - in apr/apr-util/branches/1.6.x: . crypto
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
Re: svn commit: r1936828 - in apr/apr-util/branches/1.6.x: . crypto
Posted by Eric Covener <co...@gmail.com>.
On Sun, Aug 9, 2026 at 3:13 PM Rainer Jung <ra...@kippdata.de> wrote:
>
> Hi Eric and all,
>
> Am 03.08.26 um 15:45 schrieb covener@apache.org:
> > 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)
Re: svn commit: r1936828 - in apr/apr-util/branches/1.6.x: . crypto
Posted by Rainer Jung <ra...@kippdata.de>.
Hi Eric and all,
Am 03.08.26 um 15:45 schrieb covener@apache.org:
> 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().
Thanks and regards,
Rainer