[compiler-rt] r276299 - [compiler-rt] Fix memmove/memcpy overlap detection on windows
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 21 10:10:20 PDT 2016
Hi Etienne,
This appears to have caused a compile failure on the bots:
http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_build/22924/
Could you please investigate and fix or revert as necessary?
Cheers,
Lang.
On Thu, Jul 21, 2016 at 9:06 AM, Etienne Bergeron via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: etienneb
> Date: Thu Jul 21 11:06:54 2016
> New Revision: 276299
>
> URL: http://llvm.org/viewvc/llvm-project?rev=276299&view=rev
> Log:
> [compiler-rt] Fix memmove/memcpy overlap detection on windows
>
> Summary:
> The memcpy and memmove functions are the same on windows.
> The overlap detection logic is incorrect.
>
> printf-1 test:
> ```
> stdin>:2:114: note: possible intended match here
> ==877412==ERROR: AddressSanitizer: memcpy-param-overlap: memory ranges
> [0x0000002bf2a8,0x0000002bf2ad) and [0x0000002bf2a9, 0x0000002bf2ae) overlap
> ```
> ^
>
> Reviewers: rnk
>
> Subscribers: llvm-commits, wang0109, kubabrecka, chrisha
>
> Differential Revision: https://reviews.llvm.org/D22610
>
> Modified:
> compiler-rt/trunk/lib/asan/asan_interceptors.cc
> compiler-rt/trunk/lib/asan/tests/asan_str_test.cc
>
> Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=276299&r1=276298&r2=276299&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Thu Jul 21 11:06:54
> 2016
> @@ -725,11 +725,12 @@ void InitializeAsanInterceptors() {
> InitializeCommonInterceptors();
>
> // Intercept mem* functions.
> - ASAN_INTERCEPT_FUNC(memcpy);
> ASAN_INTERCEPT_FUNC(memset);
> + ASAN_INTERCEPT_FUNC(memmove);
> if (PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE) {
> - // In asan, REAL(memmove) is not used, but it is used in msan.
> - ASAN_INTERCEPT_FUNC(memmove);
> + ASAN_INTERCEPT_FUNC(memcpy);
> + } else {
> + REAL(memcpy) = REAL(memmove);
> }
> CHECK(REAL(memcpy));
>
>
> Modified: compiler-rt/trunk/lib/asan/tests/asan_str_test.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_str_test.cc?rev=276299&r1=276298&r2=276299&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/tests/asan_str_test.cc (original)
> +++ compiler-rt/trunk/lib/asan/tests/asan_str_test.cc Thu Jul 21 11:06:54
> 2016
> @@ -456,6 +456,7 @@ TEST(AddressSanitizer, StrArgsOverlapTes
> // memmove().
> #if !defined(__APPLE__) || !defined(MAC_OS_X_VERSION_10_7) || \
> (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7)
> +#if PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE
> // Check "memcpy". Use Ident() to avoid inlining.
> memset(str, 'z', size);
> Ident(memcpy)(str + 1, str + 11, 10);
> @@ -463,6 +464,7 @@ TEST(AddressSanitizer, StrArgsOverlapTes
> EXPECT_DEATH(Ident(memcpy)(str, str + 14, 15),
> OverlapErrorMessage("memcpy"));
> EXPECT_DEATH(Ident(memcpy)(str + 14, str, 15),
> OverlapErrorMessage("memcpy"));
> #endif
> +#endif
>
> // We do not treat memcpy with to==from as a bug.
> // See http://llvm.org/bugs/show_bug.cgi?id=11763.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160721/a80daa6f/attachment.html>
More information about the llvm-commits
mailing list