Revert "fix https://reviews.llvm.org/D22610" and "[compiler-rt] Fix memmove/memcpy...
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Fri, 22 Jul 2016 23:02:34 +0000 (23:02 +0000)
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Fri, 22 Jul 2016 23:02:34 +0000 (23:02 +0000)
This currently fails ~500 tests on Darwin:
http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/20456/

This reverts commit 4cfee0dff1facb8fa2827d25c5943bfef96d1a8f and
dbd91205d578cb61ab77be06087e9f65ba8a7ec8.

llvm-svn: 276490

compiler-rt/lib/asan/asan_interceptors.cc
compiler-rt/lib/asan/tests/asan_str_test.cc
compiler-rt/lib/interception/interception.h

index faa75a4..518ceeb 100644 (file)
@@ -725,12 +725,11 @@ 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) {
-    ASAN_INTERCEPT_FUNC(memcpy);
-  } else {
-    ASSIGN_REAL(memcpy, memmove);
+    // In asan, REAL(memmove) is not used, but it is used in msan.
+    ASAN_INTERCEPT_FUNC(memmove);
   }
   CHECK(REAL(memcpy));
 
index 8173294..dd75587 100644 (file)
@@ -456,7 +456,6 @@ TEST(AddressSanitizer, StrArgsOverlapTest) {
 // 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);
@@ -464,7 +463,6 @@ TEST(AddressSanitizer, StrArgsOverlapTest) {
   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.
index 5885e10..9e9aca2 100644 (file)
@@ -158,13 +158,10 @@ const interpose_substitution substitution_##func_name[] \
     namespace __interception { \
       extern FUNC_TYPE(func) PTR_TO_REAL(func); \
     }
-# define ASSIGN_REAL(dst, src) REAL(dst) = REAL(src)
 #else  // __APPLE__
 # define REAL(x) x
 # define DECLARE_REAL(ret_type, func, ...) \
     extern "C" ret_type func(__VA_ARGS__);
-// This is not working on Apple.
-# define ASSIGN_REAL(x, y) CHECK(false)
 #endif  // __APPLE__
 
 #define DECLARE_REAL_AND_INTERCEPTOR(ret_type, func, ...) \