This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [glibc] <sys/stat.h>: Use Linux UAPI header for statx if available and useful
* Szabolcs Nagy:
> ouch, use the ""
>
> (clang __has_include seems not to expand)
Yes, that's what I saw as well in my testing. Below is a lightly tested
patch.
Thanks,
Florian
Linux: Fix __glibc_has_include use for <sys/stat.h> and statx
The identifier linux is used as a predefined macro, so the actually used
path is 1/stat.h or 1/stat64.h. Using the quote-based version triggers
a file lookup for /usr/include/bits/linux/stat.h (or whatever directory
is used to store bits/statx.h), but since bits/ is pretty much reserved
by glibc, this appears to be acceptable.
This is related to GCC PR 80005: incorrect macro expansion of the
argument of __has_include.
Suggested by Zack Weinberg.
2019-06-12 Florian Weimer <fweimer@redhat.com>
* sysdeps/unix/sysv/linux/bits/statx.h: Use string literal in
argument to __glibc_has_include to inhibit macro expansion.
diff --git a/sysdeps/unix/sysv/linux/bits/statx.h b/sysdeps/unix/sysv/linux/bits/statx.h
index d36f44efc6..3599f85a47 100644
--- a/sysdeps/unix/sysv/linux/bits/statx.h
+++ b/sysdeps/unix/sysv/linux/bits/statx.h
@@ -23,8 +23,8 @@
#endif
/* Use the Linux kernel header if available. */
-#if __glibc_has_include (<linux/stat.h>)
-# include <linux/stat.h>
+#if __glibc_has_include ("linux/stat.h")
+# include "linux/stat.h"
# ifdef STATX_TYPE
# define __statx_timestamp_defined 1
# define __statx_defined 1