<div dir="ltr">Fixed - we're compiling successfully now. Thanks very much Etienne. :)<div><br></div><div>- Lang.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 21, 2016 at 11:04 AM, Etienne Bergeron <span dir="ltr"><<a href="mailto:etienneb@google.com" target="_blank">etienneb@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Got it, the way these macros are defined is not the same on Apple.<div>I'm landing the fix. Could you check everything is fine. Ping me if it is still broken.</div><div><br></div><div>```</div><div><div>#if !defined(__APPLE__)</div><div># define PTR_TO_REAL(x) real_##x</div><div># define REAL(x) __interception::PTR_TO_REAL(x)</div><div># define FUNC_TYPE(x) x##_f</div><div><br></div><div># define DECLARE_REAL(ret_type, func, ...) \</div><div>    typedef ret_type (*FUNC_TYPE(func))(__VA_ARGS__); \</div><div>    namespace __interception { \</div><div>      extern FUNC_TYPE(func) PTR_TO_REAL(func); \</div><div>    }</div><div># define ASSIGN_REAL(dst, src) REAL(dst) = REAL(src)</div><div>#else  // __APPLE__</div><div># define REAL(x) x</div><div># define DECLARE_REAL(ret_type, func, ...) \</div><div>    extern "C" ret_type func(__VA_ARGS__);</div><div>// This is not working on Apple.</div><div># define ASSIGN_REAL(x, y) CHECK(false)</div><div>#endif  // __APPLE__</div></div><div>```</div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">On Thu, Jul 21, 2016 at 1:50 PM, Etienne Bergeron <span dir="ltr"><<a href="mailto:etienneb@google.com" target="_blank">etienneb@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I'm on it. Sorry for the delay.</div><div class="gmail_extra"><div><div><br><div class="gmail_quote">On Thu, Jul 21, 2016 at 1:10 PM, Lang Hames <span dir="ltr"><<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Etienne,<div><br></div><div>This appears to have caused a compile failure on the bots: <a href="http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_build/22924/" target="_blank">http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_build/22924/</a></div><div><br></div><div>Could you please investigate and fix or revert as necessary?</div><div><br></div><div>Cheers,</div><div>Lang.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 21, 2016 at 9:06 AM, Etienne Bergeron via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: etienneb<br>
Date: Thu Jul 21 11:06:54 2016<br>
New Revision: 276299<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=276299&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=276299&view=rev</a><br>
Log:<br>
[compiler-rt] Fix memmove/memcpy overlap detection on windows<br>
<br>
Summary:<br>
The memcpy and memmove functions are the same on windows.<br>
The overlap detection logic is incorrect.<br>
<br>
printf-1 test:<br>
```<br>
stdin>:2:114: note: possible intended match here<br>
==877412==ERROR: AddressSanitizer: memcpy-param-overlap: memory ranges [0x0000002bf2a8,0x0000002bf2ad) and [0x0000002bf2a9, 0x0000002bf2ae) overlap<br>
```                                                                                                                 ^<br>
<br>
Reviewers: rnk<br>
<br>
Subscribers: llvm-commits, wang0109, kubabrecka, chrisha<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D22610" rel="noreferrer" target="_blank">https://reviews.llvm.org/D22610</a><br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/asan/asan_interceptors.cc<br>
    compiler-rt/trunk/lib/asan/tests/asan_str_test.cc<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=276299&r1=276298&r2=276299&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=276299&r1=276298&r2=276299&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Thu Jul 21 11:06:54 2016<br>
@@ -725,11 +725,12 @@ void InitializeAsanInterceptors() {<br>
   InitializeCommonInterceptors();<br>
<br>
   // Intercept mem* functions.<br>
-  ASAN_INTERCEPT_FUNC(memcpy);<br>
   ASAN_INTERCEPT_FUNC(memset);<br>
+  ASAN_INTERCEPT_FUNC(memmove);<br>
   if (PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE) {<br>
-    // In asan, REAL(memmove) is not used, but it is used in msan.<br>
-    ASAN_INTERCEPT_FUNC(memmove);<br>
+    ASAN_INTERCEPT_FUNC(memcpy);<br>
+  } else {<br>
+    REAL(memcpy) = REAL(memmove);<br>
   }<br>
   CHECK(REAL(memcpy));<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/asan/tests/asan_str_test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_str_test.cc?rev=276299&r1=276298&r2=276299&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_str_test.cc?rev=276299&r1=276298&r2=276299&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/asan/tests/asan_str_test.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/tests/asan_str_test.cc Thu Jul 21 11:06:54 2016<br>
@@ -456,6 +456,7 @@ TEST(AddressSanitizer, StrArgsOverlapTes<br>
 // memmove().<br>
 #if !defined(__APPLE__) || !defined(MAC_OS_X_VERSION_10_7) || \<br>
     (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7)<br>
+#if PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE<br>
   // Check "memcpy". Use Ident() to avoid inlining.<br>
   memset(str, 'z', size);<br>
   Ident(memcpy)(str + 1, str + 11, 10);<br>
@@ -463,6 +464,7 @@ TEST(AddressSanitizer, StrArgsOverlapTes<br>
   EXPECT_DEATH(Ident(memcpy)(str, str + 14, 15), OverlapErrorMessage("memcpy"));<br>
   EXPECT_DEATH(Ident(memcpy)(str + 14, str, 15), OverlapErrorMessage("memcpy"));<br>
 #endif<br>
+#endif<br>
<br>
   // We do not treat memcpy with to==from as a bug.<br>
   // See <a href="http://llvm.org/bugs/show_bug.cgi?id=11763" rel="noreferrer" target="_blank">http://llvm.org/bugs/show_bug.cgi?id=11763</a>.<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span><font color="#888888">-- <br><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Etienne Bergeron<br><div>Chrome</div></div></div></div></div></div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Etienne Bergeron<br><div>Chrome</div></div></div></div></div></div></div>
</font></span></div>
</blockquote></div><br></div>