Revert "Revert "[sanitizers] Restore internal_readlink for x32""
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 28 Feb 2019 19:34:01 +0000 (19:34 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 28 Feb 2019 19:34:01 +0000 (19:34 +0000)
This reverts revision 354601 and disables ReadBinaryNameCached check on
Windows since Windows has no working ReadBinaryName.

Differential Revision: https://reviews.llvm.org/D58788

llvm-svn: 355129

compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc

index 3ca48ae7076b20da70e08e44601ef8b5d44a7ed4..8b981fb025f00c6747a684d607314473982d2ad5 100644 (file)
@@ -400,7 +400,7 @@ uptr internal_readlink(const char *path, char *buf, uptr bufsize) {
   return internal_syscall(SYSCALL(readlinkat), AT_FDCWD, (uptr)path, (uptr)buf,
                           bufsize);
 #else
-  return internal_syscall(SYSCALL(readlink), path, buf, bufsize);
+  return internal_syscall(SYSCALL(readlink), (uptr)path, (uptr)buf, bufsize);
 #endif
 }
 
index b7454fac87c513b804eb974330f01eb4374c4ad7..2350de943b3dc6b6ad205a0540d2307039e498a4 100644 (file)
@@ -438,4 +438,12 @@ TEST(SanitizerCommon, ReservedAddressRangeUnmap) {
   EXPECT_DEATH(address_range.Unmap(base_addr + (PageSize * 2), PageSize), ".*");
 }
 
+// Windows has no working ReadBinaryName.
+#if !SANITIZER_WINDOWS
+TEST(SanitizerCommon, ReadBinaryNameCached) {
+  char buf[256];
+  EXPECT_NE((uptr)0, ReadBinaryNameCached(buf, sizeof(buf)));
+}
+#endif
+
 }  // namespace __sanitizer