On cygwin, with gcc 4.8.3, I get this compilation warning:
In file included from ../../gltests/test-open.c:35:0:
../../gltests/test-open.h:35:1: warning: always_inline function might not be inlinable [-Wattributes]
test_open (int (*func) (char const *, int, ...), bool print)
^
On that platform, there are no Fortify enhancements, and the
internal macro __always_inline is always defined to turn on the
gcc attribute, contrary to our needs. Since relying on a __
prefix is already risky, it's better to limit the workaround of
commit
d6ba92ea to just glibc.
* tests/test-open.h (ALWAYS_INLINE): New macro.
(__always_inline): Don't abuse internal symbol on non-glibc.
Signed-off-by: Eric Blake <eblake@redhat.com>
+2014-07-30 Eric Blake <eblake@redhat.com>
+
+ test-open: port to cygwin, which lacks Fortify
+ * tests/test-open.h (ALWAYS_INLINE): New macro.
+ (__always_inline): Don't abuse internal symbol on non-glibc.
+
2014-07-19 Eli Zaretskii <eliz@gnu.org>
localename: Enforce declarations before statements.
around a glibc bug whereby 'open' cannot be used as a function
pointer when _FORTIFY_SOURCE is positive. */
-#ifndef __always_inline
-#define __always_inline
+#if __GLIBC__ && defined __always_inline
+# define ALWAYS_INLINE __always_inline
+#else
+# define ALWAYS_INLINE
#endif
/* This file is designed to test both open(n,buf[,mode]) and
appropriate headers are already included. If PRINT, warn before
skipping symlink tests with status 77. */
-static __always_inline int
+static ALWAYS_INLINE int
test_open (int (*func) (char const *, int, ...), bool print)
{
int fd;