]> Savannah Git Hosting - gnulib.git/commitdiff
test-open: port to cygwin, which lacks Fortify
authorEric Blake <eblake@redhat.com>
Wed, 30 Jul 2014 23:11:49 +0000 (17:11 -0600)
committerEric Blake <eblake@redhat.com>
Thu, 31 Jul 2014 03:15:18 +0000 (21:15 -0600)
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>
ChangeLog
tests/test-open.h

index 73a6c0369bd8eb224db0150d7adb9b1beae80291..f4d90224eebcc70bb1f9fe7fe29c6c222eb39e6c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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.
index d7bd5afc49be027725d6d71a393d1cd27e6a1636..1807c903769e2e887faa61aed72b7e8adb6f5b51 100644 (file)
    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
@@ -31,7 +33,7 @@
    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;