[llvm-commits] [compiler-rt] r157994 - in /compiler-rt/trunk/lib: asan/asan_interceptors.cc asan/asan_interceptors.h asan/asan_internal.h asan/asan_linux.cc asan/asan_mac.cc asan/asan_printf.cc sanitizer_common/sanitizer_libc.cc sanitizer_common/sanitizer_libc.h sanitizer_common/sanitizer_linux.cc sanitizer_common/sanitizer_mac.cc sanitizer_common/sanitizer_posix.cc sanitizer_common/sanitizer_win.cc

Alexey Samsonov samsonov at google.com
Tue Jun 5 02:49:25 PDT 2012


Author: samsonov
Date: Tue Jun  5 04:49:25 2012
New Revision: 157994

URL: http://llvm.org/viewvc/llvm-project?rev=157994&view=rev
Log:
[Sanitizer] add sanitizer_posix.cc. Move more various functions into sanitizer_libc: sscanf, munmap, memchr

Added:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc
Modified:
    compiler-rt/trunk/lib/asan/asan_interceptors.cc
    compiler-rt/trunk/lib/asan/asan_interceptors.h
    compiler-rt/trunk/lib/asan/asan_internal.h
    compiler-rt/trunk/lib/asan/asan_linux.cc
    compiler-rt/trunk/lib/asan/asan_mac.cc
    compiler-rt/trunk/lib/asan/asan_printf.cc
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.cc
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.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=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Tue Jun  5 04:49:25 2012
@@ -249,14 +249,6 @@
   }
 }
 
-void* internal_memchr(const void* s, int c, uptr n) {
-  const char* t = (char*)s;
-  for (uptr i = 0; i < n; ++i, ++t)
-    if (*t == c)
-      return (void*)t;
-  return 0;
-}
-
 int internal_memcmp(const void* s1, const void* s2, uptr n) {
   const char* t1 = (char*)s1;
   const char* t2 = (char*)s2;

Modified: compiler-rt/trunk/lib/asan/asan_interceptors.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.h?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_interceptors.h (original)
+++ compiler-rt/trunk/lib/asan/asan_interceptors.h Tue Jun  5 04:49:25 2012
@@ -35,7 +35,6 @@
 uptr internal_strlen(const char *s);
 uptr internal_strnlen(const char *s, uptr maxlen);
 char* internal_strchr(const char *s, int c);
-void* internal_memchr(const void* s, int c, uptr n);
 void* internal_memset(void *s, int c, uptr n);
 int internal_memcmp(const void* s1, const void* s2, uptr n);
 char *internal_strstr(const char *haystack, const char *needle);

Modified: compiler-rt/trunk/lib/asan/asan_internal.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_internal.h?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_internal.h (original)
+++ compiler-rt/trunk/lib/asan/asan_internal.h Tue Jun  5 04:49:25 2012
@@ -194,7 +194,6 @@
 void RawWrite(const char *buffer);
 int SNPrintf(char *buffer, uptr length, const char *format, ...);
 void Printf(const char *format, ...);
-int SScanf(const char *str, const char *format, ...);
 void Report(const char *format, ...);
 
 // Don't use std::min and std::max, to minimize dependency on libstdc++.

Modified: compiler-rt/trunk/lib/asan/asan_linux.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_linux.cc?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_linux.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_linux.cc Tue Jun  5 04:49:25 2012
@@ -103,7 +103,7 @@
 
 void AsanUnmapOrDie(void *addr, uptr size) {
   if (!addr || !size) return;
-  int res = syscall(__NR_munmap, addr, size);
+  int res = internal_munmap(addr, size);
   if (res != 0) {
     Report("Failed to unmap\n");
     AsanDie();
@@ -171,10 +171,10 @@
   char *next_line = (char*)internal_memchr(current_, '\n', last - current_);
   if (next_line == 0)
     next_line = last;
-  if (SScanf(current_,
-             "%lx-%lx %4s %lx %x:%x %ld %n",
-             start, end, flags, offset, &major, &minor,
-             &inode, &consumed) != 7)
+  if (internal_sscanf(current_,
+                      "%lx-%lx %4s %lx %x:%x %ld %n",
+                      start, end, flags, offset, &major, &minor,
+                      &inode, &consumed) != 7)
     return false;
   current_ += consumed;
   // Skip spaces.

Modified: compiler-rt/trunk/lib/asan/asan_mac.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.cc?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_mac.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_mac.cc Tue Jun  5 04:49:25 2012
@@ -127,7 +127,7 @@
 
 void AsanUnmapOrDie(void *addr, uptr size) {
   if (!addr || !size) return;
-  int res = munmap(addr, size);
+  int res = internal_munmap(addr, size);
   if (res != 0) {
     Report("Failed to unmap\n");
     AsanDie();

Modified: compiler-rt/trunk/lib/asan/asan_printf.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_printf.cc?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_printf.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_printf.cc Tue Jun  5 04:49:25 2012
@@ -193,17 +193,4 @@
   RawWrite(buffer);
 }
 
-int SScanf(const char *str, const char *format, ...) {
-#ifndef _WIN32
-  va_list args;
-  va_start(args, format);
-  int res = vsscanf(str, format, args);
-  va_end(args);
-  return res;
-#else
-  UNIMPLEMENTED();
-  return -1;
-#endif
-}
-
 }  // namespace __asan

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.cc?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.cc Tue Jun  5 04:49:25 2012
@@ -18,6 +18,14 @@
 void MiniLibcStub() {
 }
 
+void *internal_memchr(const void *s, int c, uptr n) {
+  const char* t = (char*)s;
+  for (uptr i = 0; i < n; ++i, ++t)
+    if (*t == c)
+      return (void*)t;
+  return 0;
+}
+
 int internal_strcmp(const char *s1, const char *s2) {
   while (true) {
     unsigned c1 = *s1;

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h Tue Jun  5 04:49:25 2012
@@ -26,18 +26,25 @@
 void MiniLibcStub();
 
 // internal_X() is a custom implementation of X() for use in RTL.
+
+// String functions
+void *internal_memchr(const void *s, int c, uptr n);
 int internal_strcmp(const char *s1, const char *s2);
 char *internal_strncpy(char *dst, const char *src, uptr n);
 
+// Memory
 void *internal_mmap(void *addr, uptr length, int prot, int flags,
                     int fd, u64 offset);
+int internal_munmap(void *addr, uptr length);
 
+// I/O
 typedef int fd_t;
 const fd_t kInvalidFd = -1;
 int internal_close(fd_t fd);
 fd_t internal_open(const char *filename, bool write);
 uptr internal_read(fd_t fd, void *buf, uptr count);
 uptr internal_write(fd_t fd, const void *buf, uptr count);
+int internal_sscanf(const char *str, const char *format, ...);
 
 }  // namespace __sanitizer
 

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc Tue Jun  5 04:49:25 2012
@@ -34,6 +34,10 @@
 #endif
 }
 
+int internal_munmap(void *addr, uptr length) {
+  return syscall(__NR_munmap, addr, length);
+}
+
 int internal_close(fd_t fd) {
   return syscall(__NR_close, fd);
 }

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc Tue Jun  5 04:49:25 2012
@@ -30,6 +30,10 @@
   return mmap(addr, length, prot, flags, fd, offset);
 }
 
+int internal_munmap(void *addr, uptr length) {
+  return munmap(addr, length);
+}
+
 int internal_close(fd_t fd) {
   return close(fd);
 }

Added: compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc?rev=157994&view=auto
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc (added)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc Tue Jun  5 04:49:25 2012
@@ -0,0 +1,34 @@
+//===-- sanitizer_posix.cc ------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is shared between AddressSanitizer and ThreadSanitizer
+// run-time libraries and implements POSIX-specific functions from
+// sanitizer_libc.h.
+//===----------------------------------------------------------------------===//
+#if defined(__linux__) || defined(__APPLE__)
+
+#include "sanitizer_defs.h"
+#include "sanitizer_libc.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+
+namespace __sanitizer {
+
+int internal_sscanf(const char *str, const char *format, ...) {
+  va_list args;
+  va_start(args, format);
+  int res = vsscanf(str, format, args);
+  va_end(args);
+  return res;
+}
+
+}  // namespace __sanitizer
+
+#endif  // __linux__ || __APPLE_

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc?rev=157994&r1=157993&r2=157994&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc Tue Jun  5 04:49:25 2012
@@ -29,6 +29,11 @@
   return 0;
 }
 
+int internal_munmap(void *addr, uptr length) {
+  UNIMPLEMENTED_WIN();
+  return 0;
+}
+
 int internal_close(fd_t fd) {
   UNIMPLEMENTED_WIN();
   return 0;
@@ -58,6 +63,11 @@
   return ret;
 }
 
+int internal_sscanf(const char *str, const char *format, ...) {
+  UNIMPLEMENTED_WIN();
+  return -1;
+}
+
 }  // namespace __sanitizer
 
 #endif  // _WIN32





More information about the llvm-commits mailing list