On 07/19/2018 01:33 PM, Jakub Jelinek wrote:
On Thu, Jul 19, 2018 at 04:21:26AM -0700, H.J. Lu wrote:
The new indirect_return attribute is intended to mark swapcontext in
<ucontext.h>.  This patch defines __HAVE_INDIRECT_RETURN_ATTRIBUTE__
so that it can be used checked before using indirect_return attribute
in <ucontext.h>.  It works when the indirect_return attribute is
backported to GCC 8.

OK for trunk?

No.  Use
#ifdef __has_attribute
#if __has_attribute (indirect_return)
...
#endif
#endif
instead, like for any other attribute.

That doesn't work because indirect_return is not in the implementation namespace and expanded in this context. I assume that __has_attribute (__indirect_return__) would work, though.

Could we add:

#ifdef __has_attribute
# define __glibc_has_attribute(attr) __has_attribute (attr)
#else
# define __glibc_has_attribute 0
#endif

And then use this:

#if __glibc_has_attribute (__indirect_return__)

Would that still work?

Thanks,
Florian

Reply via email to