From 5c935f78e7e8866f71af812ec4f0ac01e8abc1ff Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Mon, 13 Aug 2018 20:14:10 +0200 Subject: package/gcc: renumber patch Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- .../7.3.0/0002-xtensa-fix-PR-target-65416.patch | 101 --------------------- .../7.3.0/0003-xtensa-fix-PR-target-65416.patch | 101 +++++++++++++++++++++ 2 files changed, 101 insertions(+), 101 deletions(-) delete mode 100644 package/gcc/7.3.0/0002-xtensa-fix-PR-target-65416.patch create mode 100644 package/gcc/7.3.0/0003-xtensa-fix-PR-target-65416.patch (limited to 'package/gcc') diff --git a/package/gcc/7.3.0/0002-xtensa-fix-PR-target-65416.patch b/package/gcc/7.3.0/0002-xtensa-fix-PR-target-65416.patch deleted file mode 100644 index 7ead575439..0000000000 --- a/package/gcc/7.3.0/0002-xtensa-fix-PR-target-65416.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 87fda0741d210727672cba5e54a37a189e8ac04e Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Sun, 17 Jun 2018 21:18:39 -0700 -Subject: [PATCH] xtensa: fix PR target/65416 - -The issue is caused by reordering of stack pointer update after stack -space allocation with instructions that write to the allocated stack -space. In windowed ABI register spill area for the previous call frame -is located just below the stack pointer and may be reloaded back into -the register file on movsp. -Implement allocate_stack pattern for windowed ABI configuration and -insert an instruction that prevents reordering of frame memory access -and stack pointer update. - -gcc/ -2018-06-19 Max Filippov - - * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec - constant. - (allocate_stack, frame_blockage, *frame_blockage): New patterns. - -Signed-off-by: Max Filippov -Backported from: r261755 ---- - gcc/config/xtensa/xtensa.md | 46 +++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 46 insertions(+) - -diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md -index 84967dbedc08..209f839cfb0f 100644 ---- a/gcc/config/xtensa/xtensa.md -+++ b/gcc/config/xtensa/xtensa.md -@@ -38,6 +38,7 @@ - (UNSPEC_MEMW 11) - (UNSPEC_LSETUP_START 12) - (UNSPEC_LSETUP_END 13) -+ (UNSPEC_FRAME_BLOCKAGE 14) - - (UNSPECV_SET_FP 1) - (UNSPECV_ENTRY 2) -@@ -1676,6 +1677,32 @@ - - ;; Miscellaneous instructions. - -+;; In windowed ABI stack pointer adjustment must happen before any access -+;; to the space allocated on stack is allowed, otherwise register spill -+;; area may be clobbered. That's what frame blockage is supposed to enforce. -+ -+(define_expand "allocate_stack" -+ [(set (match_operand 0 "nonimmed_operand") -+ (minus (reg A1_REG) (match_operand 1 "add_operand"))) -+ (set (reg A1_REG) -+ (minus (reg A1_REG) (match_dup 1)))] -+ "TARGET_WINDOWED_ABI" -+{ -+ if (CONST_INT_P (operands[1])) -+ { -+ rtx neg_op0 = GEN_INT (-INTVAL (operands[1])); -+ emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, neg_op0)); -+ } -+ else -+ { -+ emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx, -+ operands[1])); -+ } -+ emit_move_insn (operands[0], virtual_stack_dynamic_rtx); -+ emit_insn (gen_frame_blockage ()); -+ DONE; -+}) -+ - (define_expand "prologue" - [(const_int 0)] - "" -@@ -1767,6 +1794,25 @@ - [(set_attr "length" "0") - (set_attr "type" "nop")]) - -+;; Do not schedule instructions accessing memory before this point. -+ -+(define_expand "frame_blockage" -+ [(set (match_dup 0) -+ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))] -+ "" -+{ -+ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); -+ MEM_VOLATILE_P (operands[0]) = 1; -+ operands[1] = stack_pointer_rtx; -+}) -+ -+(define_insn "*frame_blockage" -+ [(set (match_operand:BLK 0 "" "") -+ (unspec:BLK [(match_operand:SI 1 "" "")] UNSPEC_FRAME_BLOCKAGE))] -+ "" -+ "" -+ [(set_attr "length" "0")]) -+ - (define_insn "trap" - [(trap_if (const_int 1) (const_int 0))] - "" --- -2.11.0 - diff --git a/package/gcc/7.3.0/0003-xtensa-fix-PR-target-65416.patch b/package/gcc/7.3.0/0003-xtensa-fix-PR-target-65416.patch new file mode 100644 index 0000000000..7ead575439 --- /dev/null +++ b/package/gcc/7.3.0/0003-xtensa-fix-PR-target-65416.patch @@ -0,0 +1,101 @@ +From 87fda0741d210727672cba5e54a37a189e8ac04e Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Sun, 17 Jun 2018 21:18:39 -0700 +Subject: [PATCH] xtensa: fix PR target/65416 + +The issue is caused by reordering of stack pointer update after stack +space allocation with instructions that write to the allocated stack +space. In windowed ABI register spill area for the previous call frame +is located just below the stack pointer and may be reloaded back into +the register file on movsp. +Implement allocate_stack pattern for windowed ABI configuration and +insert an instruction that prevents reordering of frame memory access +and stack pointer update. + +gcc/ +2018-06-19 Max Filippov + + * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec + constant. + (allocate_stack, frame_blockage, *frame_blockage): New patterns. + +Signed-off-by: Max Filippov +Backported from: r261755 +--- + gcc/config/xtensa/xtensa.md | 46 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md +index 84967dbedc08..209f839cfb0f 100644 +--- a/gcc/config/xtensa/xtensa.md ++++ b/gcc/config/xtensa/xtensa.md +@@ -38,6 +38,7 @@ + (UNSPEC_MEMW 11) + (UNSPEC_LSETUP_START 12) + (UNSPEC_LSETUP_END 13) ++ (UNSPEC_FRAME_BLOCKAGE 14) + + (UNSPECV_SET_FP 1) + (UNSPECV_ENTRY 2) +@@ -1676,6 +1677,32 @@ + + ;; Miscellaneous instructions. + ++;; In windowed ABI stack pointer adjustment must happen before any access ++;; to the space allocated on stack is allowed, otherwise register spill ++;; area may be clobbered. That's what frame blockage is supposed to enforce. ++ ++(define_expand "allocate_stack" ++ [(set (match_operand 0 "nonimmed_operand") ++ (minus (reg A1_REG) (match_operand 1 "add_operand"))) ++ (set (reg A1_REG) ++ (minus (reg A1_REG) (match_dup 1)))] ++ "TARGET_WINDOWED_ABI" ++{ ++ if (CONST_INT_P (operands[1])) ++ { ++ rtx neg_op0 = GEN_INT (-INTVAL (operands[1])); ++ emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, neg_op0)); ++ } ++ else ++ { ++ emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx, ++ operands[1])); ++ } ++ emit_move_insn (operands[0], virtual_stack_dynamic_rtx); ++ emit_insn (gen_frame_blockage ()); ++ DONE; ++}) ++ + (define_expand "prologue" + [(const_int 0)] + "" +@@ -1767,6 +1794,25 @@ + [(set_attr "length" "0") + (set_attr "type" "nop")]) + ++;; Do not schedule instructions accessing memory before this point. ++ ++(define_expand "frame_blockage" ++ [(set (match_dup 0) ++ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++{ ++ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); ++ MEM_VOLATILE_P (operands[0]) = 1; ++ operands[1] = stack_pointer_rtx; ++}) ++ ++(define_insn "*frame_blockage" ++ [(set (match_operand:BLK 0 "" "") ++ (unspec:BLK [(match_operand:SI 1 "" "")] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++ "" ++ [(set_attr "length" "0")]) ++ + (define_insn "trap" + [(trap_if (const_int 1) (const_int 0))] + "" +-- +2.11.0 + -- cgit v1.2.3 From b9db27a03c272914f3efcde0bc86dc86e159e0a9 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Mon, 13 Aug 2018 20:14:11 +0200 Subject: package/gcc: fix build of gcc-7.3.0 with glibc-2.28 Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- .../0004-libsanitizer-Use-pre-computed-size.patch | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 package/gcc/7.3.0/0004-libsanitizer-Use-pre-computed-size.patch (limited to 'package/gcc') diff --git a/package/gcc/7.3.0/0004-libsanitizer-Use-pre-computed-size.patch b/package/gcc/7.3.0/0004-libsanitizer-Use-pre-computed-size.patch new file mode 100644 index 0000000000..6e73331eae --- /dev/null +++ b/package/gcc/7.3.0/0004-libsanitizer-Use-pre-computed-size.patch @@ -0,0 +1,72 @@ +From 61f38c64c01a15560026115a157b7021ec67bd3b Mon Sep 17 00:00:00 2001 +From: hjl +Date: Thu, 24 May 2018 20:21:54 +0000 +Subject: [PATCH] libsanitizer: Use pre-computed size of struct ustat for Linux + +Cherry-pick compiler-rt revision 333213: + + has been removed from glibc 2.28 by: + +commit cf2478d53ad7071e84c724a986b56fe17f4f4ca7 +Author: Adhemerval Zanella +Date: Sun Mar 18 11:28:59 2018 +0800 + + Deprecate ustat syscall interface + +This patch uses pre-computed size of struct ustat for Linux. + + PR sanitizer/85835 + * sanitizer_common/sanitizer_platform_limits_posix.cc: Don't + include for Linux. + (SIZEOF_STRUCT_USTAT): New. + (struct_ustat_sz): Use SIZEOF_STRUCT_USTAT for Linux. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@260688 138bc75d-0d04-0410-961f-82ee72b054a4 + +Downloaded from upstream commit +https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=61f38c64c01a15560026115a157b7021ec67bd3b + +Signed-off-by: Bernd Kuhls +--- + libsanitizer/ChangeLog | 8 ++++++++ + .../sanitizer_common/sanitizer_platform_limits_posix.cc | 15 +++++++++++++-- + 2 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index 31a5e69..8017afd 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -154,7 +154,6 @@ typedef struct user_fpregs elf_fpregset_t; + # include + #endif + #include +-#include + #include + #include + #include +@@ -247,7 +246,19 @@ namespace __sanitizer { + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +- unsigned struct_ustat_sz = sizeof(struct ustat); ++ // Use pre-computed size of struct ustat to avoid which ++ // has been removed from glibc 2.28. ++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \ ++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \ ++ || defined(__x86_64__) ++#define SIZEOF_STRUCT_USTAT 32 ++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \ ++ || defined(__powerpc__) || defined(__s390__) ++#define SIZEOF_STRUCT_USTAT 20 ++#else ++#error Unknown size of struct ustat ++#endif ++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; + unsigned struct_rlimit64_sz = sizeof(struct rlimit64); + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID +-- +2.9.3 + -- cgit v1.2.3 From 9e8cae29584246a9a18beed6c22816d4cdcb8120 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Mon, 13 Aug 2018 20:14:12 +0200 Subject: package/gcc: fix build of gcc-6.4.0 with glibc-2.28 Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- .../0003-libsanitizer-Use-pre-computed-size.patch | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 package/gcc/6.4.0/0003-libsanitizer-Use-pre-computed-size.patch (limited to 'package/gcc') diff --git a/package/gcc/6.4.0/0003-libsanitizer-Use-pre-computed-size.patch b/package/gcc/6.4.0/0003-libsanitizer-Use-pre-computed-size.patch new file mode 100644 index 0000000000..6e73331eae --- /dev/null +++ b/package/gcc/6.4.0/0003-libsanitizer-Use-pre-computed-size.patch @@ -0,0 +1,72 @@ +From 61f38c64c01a15560026115a157b7021ec67bd3b Mon Sep 17 00:00:00 2001 +From: hjl +Date: Thu, 24 May 2018 20:21:54 +0000 +Subject: [PATCH] libsanitizer: Use pre-computed size of struct ustat for Linux + +Cherry-pick compiler-rt revision 333213: + + has been removed from glibc 2.28 by: + +commit cf2478d53ad7071e84c724a986b56fe17f4f4ca7 +Author: Adhemerval Zanella +Date: Sun Mar 18 11:28:59 2018 +0800 + + Deprecate ustat syscall interface + +This patch uses pre-computed size of struct ustat for Linux. + + PR sanitizer/85835 + * sanitizer_common/sanitizer_platform_limits_posix.cc: Don't + include for Linux. + (SIZEOF_STRUCT_USTAT): New. + (struct_ustat_sz): Use SIZEOF_STRUCT_USTAT for Linux. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@260688 138bc75d-0d04-0410-961f-82ee72b054a4 + +Downloaded from upstream commit +https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=61f38c64c01a15560026115a157b7021ec67bd3b + +Signed-off-by: Bernd Kuhls +--- + libsanitizer/ChangeLog | 8 ++++++++ + .../sanitizer_common/sanitizer_platform_limits_posix.cc | 15 +++++++++++++-- + 2 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index 31a5e69..8017afd 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -154,7 +154,6 @@ typedef struct user_fpregs elf_fpregset_t; + # include + #endif + #include +-#include + #include + #include + #include +@@ -247,7 +246,19 @@ namespace __sanitizer { + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +- unsigned struct_ustat_sz = sizeof(struct ustat); ++ // Use pre-computed size of struct ustat to avoid which ++ // has been removed from glibc 2.28. ++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \ ++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \ ++ || defined(__x86_64__) ++#define SIZEOF_STRUCT_USTAT 32 ++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \ ++ || defined(__powerpc__) || defined(__s390__) ++#define SIZEOF_STRUCT_USTAT 20 ++#else ++#error Unknown size of struct ustat ++#endif ++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; + unsigned struct_rlimit64_sz = sizeof(struct rlimit64); + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID +-- +2.9.3 + -- cgit v1.2.3 From fb7b010682d3b525c1a2a9f34c2c21d9f141e711 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Mon, 13 Aug 2018 20:14:13 +0200 Subject: package/gcc: fix build of gcc-5.5.0 with glibc-2.28 Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- .../0002-libsanitizer-Use-pre-computed-size.patch | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 package/gcc/5.5.0/0002-libsanitizer-Use-pre-computed-size.patch (limited to 'package/gcc') diff --git a/package/gcc/5.5.0/0002-libsanitizer-Use-pre-computed-size.patch b/package/gcc/5.5.0/0002-libsanitizer-Use-pre-computed-size.patch new file mode 100644 index 0000000000..6e73331eae --- /dev/null +++ b/package/gcc/5.5.0/0002-libsanitizer-Use-pre-computed-size.patch @@ -0,0 +1,72 @@ +From 61f38c64c01a15560026115a157b7021ec67bd3b Mon Sep 17 00:00:00 2001 +From: hjl +Date: Thu, 24 May 2018 20:21:54 +0000 +Subject: [PATCH] libsanitizer: Use pre-computed size of struct ustat for Linux + +Cherry-pick compiler-rt revision 333213: + + has been removed from glibc 2.28 by: + +commit cf2478d53ad7071e84c724a986b56fe17f4f4ca7 +Author: Adhemerval Zanella +Date: Sun Mar 18 11:28:59 2018 +0800 + + Deprecate ustat syscall interface + +This patch uses pre-computed size of struct ustat for Linux. + + PR sanitizer/85835 + * sanitizer_common/sanitizer_platform_limits_posix.cc: Don't + include for Linux. + (SIZEOF_STRUCT_USTAT): New. + (struct_ustat_sz): Use SIZEOF_STRUCT_USTAT for Linux. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@260688 138bc75d-0d04-0410-961f-82ee72b054a4 + +Downloaded from upstream commit +https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=61f38c64c01a15560026115a157b7021ec67bd3b + +Signed-off-by: Bernd Kuhls +--- + libsanitizer/ChangeLog | 8 ++++++++ + .../sanitizer_common/sanitizer_platform_limits_posix.cc | 15 +++++++++++++-- + 2 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index 31a5e69..8017afd 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -154,7 +154,6 @@ typedef struct user_fpregs elf_fpregset_t; + # include + #endif + #include +-#include + #include + #include + #include +@@ -247,7 +246,19 @@ namespace __sanitizer { + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +- unsigned struct_ustat_sz = sizeof(struct ustat); ++ // Use pre-computed size of struct ustat to avoid which ++ // has been removed from glibc 2.28. ++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \ ++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \ ++ || defined(__x86_64__) ++#define SIZEOF_STRUCT_USTAT 32 ++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \ ++ || defined(__powerpc__) || defined(__s390__) ++#define SIZEOF_STRUCT_USTAT 20 ++#else ++#error Unknown size of struct ustat ++#endif ++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; + unsigned struct_rlimit64_sz = sizeof(struct rlimit64); + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID +-- +2.9.3 + -- cgit v1.2.3 From 6b33b7ba517bee4d88af9b1827201df923b4a600 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Mon, 13 Aug 2018 20:14:14 +0200 Subject: package/gcc: fix build of gcc-4.9.4 with glibc-2.28 Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- .../0003-libsanitizer-Use-pre-computed-size.patch | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 package/gcc/4.9.4/0003-libsanitizer-Use-pre-computed-size.patch (limited to 'package/gcc') diff --git a/package/gcc/4.9.4/0003-libsanitizer-Use-pre-computed-size.patch b/package/gcc/4.9.4/0003-libsanitizer-Use-pre-computed-size.patch new file mode 100644 index 0000000000..5b4c05a719 --- /dev/null +++ b/package/gcc/4.9.4/0003-libsanitizer-Use-pre-computed-size.patch @@ -0,0 +1,71 @@ +From 61f38c64c01a15560026115a157b7021ec67bd3b Mon Sep 17 00:00:00 2001 +From: hjl +Date: Thu, 24 May 2018 20:21:54 +0000 +Subject: [PATCH] libsanitizer: Use pre-computed size of struct ustat for Linux + +Cherry-pick compiler-rt revision 333213: + + has been removed from glibc 2.28 by: + +commit cf2478d53ad7071e84c724a986b56fe17f4f4ca7 +Author: Adhemerval Zanella +Date: Sun Mar 18 11:28:59 2018 +0800 + + Deprecate ustat syscall interface + +This patch uses pre-computed size of struct ustat for Linux. + + PR sanitizer/85835 + * sanitizer_common/sanitizer_platform_limits_posix.cc: Don't + include for Linux. + (SIZEOF_STRUCT_USTAT): New. + (struct_ustat_sz): Use SIZEOF_STRUCT_USTAT for Linux. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@260688 138bc75d-0d04-0410-961f-82ee72b054a4 + +Backported from upstream commit +https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=61f38c64c01a15560026115a157b7021ec67bd3b + +Signed-off-by: Bernd Kuhls +--- + libsanitizer/ChangeLog | 8 ++++++++ + .../sanitizer_common/sanitizer_platform_limits_posix.cc | 15 +++++++++++++-- + 2 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index 31a5e69..8017afd 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -81,7 +89,6 @@ typedef struct user_fpregs elf_fpregset_t; + # include + #endif + #include +-#include + #include + #include + #include +@@ -163,7 +170,19 @@ + unsigned struct_old_utsname_sz = sizeof(struct old_utsname); + unsigned struct_oldold_utsname_sz = sizeof(struct oldold_utsname); + unsigned struct_itimerspec_sz = sizeof(struct itimerspec); +- unsigned struct_ustat_sz = sizeof(struct ustat); ++ // Use pre-computed size of struct ustat to avoid which ++ // has been removed from glibc 2.28. ++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \ ++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \ ++ || defined(__x86_64__) ++#define SIZEOF_STRUCT_USTAT 32 ++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \ ++ || defined(__powerpc__) || defined(__s390__) ++#define SIZEOF_STRUCT_USTAT 20 ++#else ++#error Unknown size of struct ustat ++#endif ++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; + #endif // SANITIZER_LINUX + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +-- +2.9.3 -- cgit v1.2.3