From 77cd143e2b5b4a4a702933fadec8ab4b29fdab9a Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 3 Jan 2023 18:51:22 -0800 Subject: clang: Fix sizeof stat detection on mips/o32 with 64bit time_t Signed-off-by: Khem Raj --- ...-compiler-rt-Fix-stat-struct-s-size-for-O.patch | 32 --------------- ...ler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch | 47 ++++++++++++++++++++++ recipes-devtools/clang/common.inc | 2 +- 3 files changed, 48 insertions(+), 33 deletions(-) delete mode 100644 recipes-devtools/clang/clang/0034-Revert-MIPS-compiler-rt-Fix-stat-struct-s-size-for-O.patch create mode 100644 recipes-devtools/clang/clang/0034-compiler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch (limited to 'recipes-devtools') diff --git a/recipes-devtools/clang/clang/0034-Revert-MIPS-compiler-rt-Fix-stat-struct-s-size-for-O.patch b/recipes-devtools/clang/clang/0034-Revert-MIPS-compiler-rt-Fix-stat-struct-s-size-for-O.patch deleted file mode 100644 index a339caa..0000000 --- a/recipes-devtools/clang/clang/0034-Revert-MIPS-compiler-rt-Fix-stat-struct-s-size-for-O.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c7e8baa12d20683d2e824d4ea2193d26ba46e9d2 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sun, 11 Sep 2022 16:15:36 -0700 -Subject: [PATCH] Revert "[MIPS][compiler-rt] Fix stat struct's size for O32 - ABI" - -This reverts commit 2bfb0fcb51510f22723c8cdfefe2a796a0a5ab25. - -Upstream-Status: Pending -Signed-off-by: Khem Raj ---- - .../lib/sanitizer_common/sanitizer_platform_limits_posix.h | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h -index bd5692ed511b..a6091307bdce 100644 ---- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h -+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h -@@ -98,10 +98,9 @@ const unsigned struct_kernel_stat64_sz = 104; - const unsigned struct_kernel_stat_sz = 144; - const unsigned struct_kernel_stat64_sz = 104; - #elif defined(__mips__) --const unsigned struct_kernel_stat_sz = -- SANITIZER_ANDROID -- ? FIRST_32_SECOND_64(104, 128) -- : FIRST_32_SECOND_64((_MIPS_SIM == _ABIN32) ? 160 : 144, 216); -+const unsigned struct_kernel_stat_sz = SANITIZER_ANDROID -+ ? FIRST_32_SECOND_64(104, 128) -+ : FIRST_32_SECOND_64(160, 216); - const unsigned struct_kernel_stat64_sz = 104; - #elif defined(__s390__) && !defined(__s390x__) - const unsigned struct_kernel_stat_sz = 64; diff --git a/recipes-devtools/clang/clang/0034-compiler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch b/recipes-devtools/clang/clang/0034-compiler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch new file mode 100644 index 0000000..f723bb3 --- /dev/null +++ b/recipes-devtools/clang/clang/0034-compiler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch @@ -0,0 +1,47 @@ +From abebd2f8fd9b78e4fa3403fd93d926f8cc16a001 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 3 Jan 2023 18:44:34 -0800 +Subject: [PATCH] compiler-rt: Fix stat struct's size for O32 ABI + +stat struct size differs on glibc based on ABI choices e.g. 64bit off_t +and/or 64bit time_t will make this size different. Therefore separate +out the O32 case out, makes it more readable. + +Upstream-Status: Submitted [https://reviews.llvm.org/D140948] +Signed-off-by: Khem Raj +--- + .../sanitizer_platform_limits_posix.h | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +index bd5692ed511b..08d1ac8ab51b 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -98,11 +98,24 @@ const unsigned struct_kernel_stat64_sz = 104; + const unsigned struct_kernel_stat_sz = 144; + const unsigned struct_kernel_stat64_sz = 104; + #elif defined(__mips__) ++#if defined(__mips_o32) // O32 ABI ++#if _TIME_BITS == 64 ++const unsigned struct_kernel_stat_sz = 112; ++const unsigned struct_kernel_stat64_sz = 112; ++#elif _FILE_OFFSET_BITS == 64 ++const unsigned struct_kernel_stat_sz = 160; ++const unsigned struct_kernel_stat64_sz = 160; ++#else ++const unsigned struct_kernel_stat_sz = 144; ++const unsigned struct_kernel_stat64_sz = 160; ++#endif ++#else // __mips_o32 + const unsigned struct_kernel_stat_sz = + SANITIZER_ANDROID + ? FIRST_32_SECOND_64(104, 128) + : FIRST_32_SECOND_64((_MIPS_SIM == _ABIN32) ? 160 : 144, 216); + const unsigned struct_kernel_stat64_sz = 104; ++#endif + #elif defined(__s390__) && !defined(__s390x__) + const unsigned struct_kernel_stat_sz = 64; + const unsigned struct_kernel_stat64_sz = 104; +-- +2.39.0 + diff --git a/recipes-devtools/clang/common.inc b/recipes-devtools/clang/common.inc index fe27306..6e87145 100644 --- a/recipes-devtools/clang/common.inc +++ b/recipes-devtools/clang/common.inc @@ -43,7 +43,7 @@ SRC_URI = "\ file://0031-clang-exclude-openembedded-distributions-from-settin.patch \ file://0032-compiler-rt-Enable-__int128-for-ppc32.patch \ file://0033-llvm-Do-not-use-cmake-infra-to-detect-libzstd.patch \ - file://0034-Revert-MIPS-compiler-rt-Fix-stat-struct-s-size-for-O.patch \ + file://0034-compiler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch \ file://0035-cmake-Enable-64bit-off_t-on-32bit-glibc-systems.patch \ file://0036-compiler-rt-Undef-_TIME_BITS-along-with-_FILE_OFFSET.patch \ " -- cgit v1.2.3-54-g00ecf