Commit | Line | Data |
---|---|---|
af88972b MB |
1 | Adjust libsanitizer to ABI change in glibc 2.31. |
2 | ||
3 | Adapted to 3.x from this upstream commit: | |
4 | https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce | |
5 | ||
6 | diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc | |
7 | --- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc | |
8 | +++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc | |
9 | @@ -1130,8 +1130,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); | |
10 | #ifndef __GLIBC_PREREQ | |
11 | #define __GLIBC_PREREQ(x, y) 0 | |
12 | #endif | |
13 | -#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21) | |
14 | -/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */ | |
15 | +#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) | |
16 | +/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit | |
17 | + on many architectures. */ | |
18 | CHECK_SIZE_AND_OFFSET(ipc_perm, mode); | |
19 | #endif | |
20 | ||
21 | diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/lib/sanitizer_common/sanitizer_platform_limits_posix.h | |
22 | --- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h | |
23 | +++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h | |
24 | @@ -188,17 +188,16 @@ namespace __sanitizer { | |
25 | unsigned __seq; | |
26 | u64 __unused1; | |
27 | u64 __unused2; | |
28 | -#elif defined(__mips__) || defined(__aarch64__) | |
29 | - unsigned int mode; | |
30 | - unsigned short __seq; | |
31 | - unsigned short __pad1; | |
32 | - unsigned long __unused1; | |
33 | - unsigned long __unused2; | |
34 | +#elif defined(__sparc__) | |
35 | + unsigned mode; | |
36 | + unsigned short __pad2; | |
37 | + unsigned short __seq; | |
38 | + unsigned long long __unused1; | |
39 | + unsigned long long __unused2; | |
40 | #else | |
41 | - unsigned short mode; | |
42 | - unsigned short __pad1; | |
43 | - unsigned short __seq; | |
44 | - unsigned short __pad2; | |
45 | + unsigned int mode; | |
46 | + unsigned short __seq; | |
47 | + unsigned short __pad2; | |
48 | #if defined(__x86_64__) && !defined(_LP64) | |
49 | u64 __unused1; | |
50 | u64 __unused2; |