If the glibc xattr.h header is included after the uapi header, compilation fails due to an enum re-using a #define from the uapi header. Protect against this by guarding the define and enum inclusions against each other. (See https://lists.debian.org/debian-glibc/2014/03/msg00029.html and https://sourceware.org/glibc/wiki/Synchronizing_Headers for more information.)
Showing the changes to include/uapi/linux (2 of 2 files). Show all
Unified · Split
| @@ -85,6 +85,12 @@ · 84 unmodified lines | ||
| 85 | 85 | |
| 86 | 86 | #endif /* _NETINET_IN_H */ |
| 87 | 87 | |
| 88 | +/* Definitions for xattr.h */ | |
| 89 | +#if defined(_SYS_XATTR_H) | |
| 90 | +#define __UAPI_DEF_XATTR 0 | |
| 91 | +#else | |
| 92 | +#define __UAPI_DEF_XATTR 1 | |
| 93 | +#endif | |
| 88 | 94 | |
| 89 | 95 | /* If we did not see any headers from any supported C libraries, |
| 90 | 96 | * or we are being included in the kernel, then define everything |
| @@ -98,6 +104,9 @@ · 7 unmodified lines | ||
| 98 | 104 | #define __UAPI_DEF_IPV6_MREQ 1 |
| 99 | 105 | #define __UAPI_DEF_IPPROTO_V6 1 |
| 100 | 106 | |
| 107 | +/* Definitions for xattr.h */ | |
| 108 | +#define __UAPI_DEF_XATTR 1 | |
| 109 | + | |
| 101 | 110 | #endif /* __GLIBC__ */ |
| 102 | 111 | |
| 103 | 112 | #endif /* _UAPI_LIBC_COMPAT_H */ |
| @@ -7,11 +7,18 @@ · 6 unmodified lines | ||
| 7 | 7 | Copyright (c) 2001-2002 Silicon Graphics, Inc. All Rights Reserved. |
| 8 | 8 | Copyright (c) 2004 Red Hat, Inc., James Morris <jmorris@redhat.com> |
| 9 | 9 | */ |
| 10 | + | |
| 11 | +#include <linux/libc-compat.h> | |
| 12 | + | |
| 10 | 13 | #ifndef _UAPI_LINUX_XATTR_H |
| 11 | 14 | #define _UAPI_LINUX_XATTR_H |
| 12 | 15 | |
| 16 | +#ifdef __UAPI_DEF_XATTR | |
| 17 | +#define __USE_KERNEL_XATTR_DEFS | |
| 18 | + | |
| 13 | 19 | #define XATTR_CREATE 0x1 /* set value, fail if attr already exists */ |
| 14 | 20 | #define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */ |
| 21 | +#endif | |
| 15 | 22 | |
| 16 | 23 | /* Namespaces */ |
| 17 | 24 | #define XATTR_OS2_PREFIX "os2." |