[compiler-rt] r276299 - [compiler-rt] Fix memmove/memcpy overlap detection on windows

Etienne Bergeron via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 21 10:50:05 PDT 2016


I'm on it. Sorry for the delay.

On Thu, Jul 21, 2016 at 1:10 PM, Lang Hames <lhames at gmail.com> wrote:

> 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
>>
>
>


-- 
Etienne Bergeron
Chrome
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160721/2f8b856a/attachment.html>


More information about the llvm-commits mailing list