gcc: Fix building with glibc >= 2.28
[people/pmueller/ipfire-2.x.git] / src / patches / gcc-7-glibc-2.28-ustat.patch
CommitLineData
537401bb
MT
1--- libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2018/04/25 07:39:32 259630
2+++ libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2018/05/24 20:07:25 260687
3@@ -157,7 +157,6 @@
4 # include <sys/procfs.h>
5 #endif
6 #include <sys/user.h>
7-#include <sys/ustat.h>
8 #include <linux/cyclades.h>
9 #include <linux/if_eql.h>
10 #include <linux/if_plip.h>
11@@ -250,7 +249,19 @@
12 #endif // SANITIZER_LINUX || SANITIZER_FREEBSD
13
14 #if SANITIZER_LINUX && !SANITIZER_ANDROID
15- unsigned struct_ustat_sz = sizeof(struct ustat);
16+ // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
17+ // has been removed from glibc 2.28.
18+#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
19+ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \
20+ || defined(__x86_64__)
21+#define SIZEOF_STRUCT_USTAT 32
22+#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \
23+ || defined(__powerpc__) || defined(__s390__)
24+#define SIZEOF_STRUCT_USTAT 20
25+#else
26+#error Unknown size of struct ustat
27+#endif
28+ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
29 unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
30 unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
31 #endif // SANITIZER_LINUX && !SANITIZER_ANDROID