On Thu, Jul 19, 2018 at 01:39:04PM +0200, Florian Weimer wrote: > 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
# define __glibc_has_attribute(attr) 0 instead, otherwise you get errors. > #endif > > And then use this: > > #if __glibc_has_attribute (__indirect_return__) > > Would that still work? Sure, you can do this. Jakub