From 0c55e04027734a704cd8fbce7d055396850ca463 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jul 10 2020 01:41:20 +0000 Subject: import compiler-rt-10.0.0-2.module+el8.3.0+7004+904a04ce --- diff --git a/SOURCES/0001-Fix-strict-aliasing-warning-in-msan.cpp.patch b/SOURCES/0001-Fix-strict-aliasing-warning-in-msan.cpp.patch new file mode 100644 index 0000000..b1f41e8 --- /dev/null +++ b/SOURCES/0001-Fix-strict-aliasing-warning-in-msan.cpp.patch @@ -0,0 +1,68 @@ +From af38074874c605f9e598ae3f7e5d4befa3fe92bb Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Thu, 28 May 2020 17:50:31 +0200 +Subject: [PATCH] Fix strict aliasing warning in msan.cpp + +Use internal_memcpy instead. + +Differential Revision: https://reviews.llvm.org/D80732 +--- + compiler-rt/lib/msan/msan.cpp | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +diff --git compiler-rt.orig/lib/msan/msan.cpp compiler-rt/lib/msan/msan.cpp +index 7095ee1bf20..8c789901adc 100644 +--- compiler-rt.orig/lib/msan/msan.cpp ++++ compiler-rt/lib/msan/msan.cpp +@@ -617,34 +617,41 @@ u32 __msan_get_umr_origin() { + } + + u16 __sanitizer_unaligned_load16(const uu16 *p) { +- *(uu16 *)&__msan_retval_tls[0] = *(uu16 *)MEM_TO_SHADOW((uptr)p); ++ internal_memcpy(&__msan_retval_tls[0], (void *)MEM_TO_SHADOW((uptr)p), ++ sizeof(uu16)); + if (__msan_get_track_origins()) + __msan_retval_origin_tls = GetOriginIfPoisoned((uptr)p, sizeof(*p)); + return *p; + } + u32 __sanitizer_unaligned_load32(const uu32 *p) { +- *(uu32 *)&__msan_retval_tls[0] = *(uu32 *)MEM_TO_SHADOW((uptr)p); ++ internal_memcpy(&__msan_retval_tls[0], (void *)MEM_TO_SHADOW((uptr)p), ++ sizeof(uu32)); + if (__msan_get_track_origins()) + __msan_retval_origin_tls = GetOriginIfPoisoned((uptr)p, sizeof(*p)); + return *p; + } + u64 __sanitizer_unaligned_load64(const uu64 *p) { +- __msan_retval_tls[0] = *(uu64 *)MEM_TO_SHADOW((uptr)p); ++ internal_memcpy(&__msan_retval_tls[0], (void *)MEM_TO_SHADOW((uptr)p), ++ sizeof(uu64)); + if (__msan_get_track_origins()) + __msan_retval_origin_tls = GetOriginIfPoisoned((uptr)p, sizeof(*p)); + return *p; + } + void __sanitizer_unaligned_store16(uu16 *p, u16 x) { +- u16 s = *(uu16 *)&__msan_param_tls[1]; +- *(uu16 *)MEM_TO_SHADOW((uptr)p) = s; ++ static_assert(sizeof(uu16) == sizeof(u16), "incompatible types"); ++ u16 s; ++ internal_memcpy(&s, &__msan_param_tls[1], sizeof(uu16)); ++ internal_memcpy((void *)MEM_TO_SHADOW((uptr)p), &s, sizeof(uu16)); + if (s && __msan_get_track_origins()) + if (uu32 o = __msan_param_origin_tls[2]) + SetOriginIfPoisoned((uptr)p, (uptr)&s, sizeof(s), o); + *p = x; + } + void __sanitizer_unaligned_store32(uu32 *p, u32 x) { +- u32 s = *(uu32 *)&__msan_param_tls[1]; +- *(uu32 *)MEM_TO_SHADOW((uptr)p) = s; ++ static_assert(sizeof(uu32) == sizeof(u32), "incompatible types"); ++ u32 s; ++ internal_memcpy(&s, &__msan_param_tls[1], sizeof(uu32)); ++ internal_memcpy((void *)MEM_TO_SHADOW((uptr)p), &s, sizeof(uu32)); + if (s && __msan_get_track_origins()) + if (uu32 o = __msan_param_origin_tls[2]) + SetOriginIfPoisoned((uptr)p, (uptr)&s, sizeof(s), o); +-- +2.25.2 + diff --git a/SPECS/compiler-rt.spec b/SPECS/compiler-rt.spec index 5937bbc..a2b5ed2 100644 --- a/SPECS/compiler-rt.spec +++ b/SPECS/compiler-rt.spec @@ -4,7 +4,7 @@ %endif #%%global rc_ver 6 -%global baserelease 1 +%global baserelease 2 %global crt_srcdir compiler-rt-%{version}%{?rc_ver:rc%{rc_ver}}.src @@ -31,6 +31,7 @@ Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{versio Source2: https://prereleases.llvm.org/%{version}/hans-gpg-key.asc Patch0: 0001-PATCH-std-thread-copy.patch +Patch1: 0001-Fix-strict-aliasing-warning-in-msan.cpp.patch # RHEL-specific patches Patch100: 0001-Drop-fno-stack-protector-from-the-compiler-flags.patch @@ -130,6 +131,9 @@ fi %endif %changelog +* Mon Jun 15 2020 sguelton@redhat.com - 10.0.0-2 +- Fix msan compilation warnings, see rhbz#1841165 + * Wed Apr 8 2020 sguelton@redhat.com - 10.0.0-1 - 10.0.0 final