GCC warns when a function attribute has no effect. The autoconf check
turns warnings about attributes into errors, therefore thinking that
they did not work. The reason was that the test function returned void,
which is not suitable for checking both __malloc__ and
__warn_unused_result__.
CFLAGS="$CFLAGS -Wall -Werror"
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
- [void test(void) __attribute__ (($1));
- void test(void) { return; }
+ [void *test(void) __attribute__ (($1));
+ void *test(void) { return (void *)0; }
],
)],
[tinc_cv_attribute_$1=yes],