<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 3, 2014 at 7:32 PM, Alexander Potapenko <span dir="ltr"><<a href="mailto:glider@google.com" target="_blank">glider@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: glider<br>
Date: Mon Feb  3 09:32:19 2014<br>
New Revision: 200700<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=200700&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=200700&view=rev</a><br>
Log:<br>
[ASan] Move GetMacosVersion() to sanitizer_common.<br>
<br>
Added:<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h   (with props)<br>
Modified:<br>
    compiler-rt/trunk/lib/asan/asan_mac.cc<br>
    compiler-rt/trunk/lib/asan/asan_mac.h<br>
    compiler-rt/trunk/lib/asan/asan_malloc_mac.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_mac.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.cc?rev=200700&r1=200699&r2=200700&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.cc?rev=200700&r1=200699&r2=200700&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_mac.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_mac.cc Mon Feb  3 09:32:19 2014<br>
@@ -23,6 +23,7 @@<br>
 #include "asan_thread.h"<br>
 #include "sanitizer_common/sanitizer_atomic.h"<br>
 #include "sanitizer_common/sanitizer_libc.h"<br>
+#include "sanitizer_common/sanitizer_mac.h"<br>
<br>
 #include <crt_externs.h>  // for _NSGetArgv<br>
 #include <dlfcn.h>  // for dladdr()<br>
@@ -53,43 +54,6 @@ void GetPcSpBp(void *context, uptr *pc,<br>
 # endif  // SANITIZER_WORDSIZE<br>
 }<br>
<br>
-MacosVersion cached_macos_version = MACOS_VERSION_UNINITIALIZED;<br>
-<br>
-MacosVersion GetMacosVersionInternal() {<br>
-  int mib[2] = { CTL_KERN, KERN_OSRELEASE };<br>
-  char version[100];<br>
-  uptr len = 0, maxlen = sizeof(version) / sizeof(version[0]);<br>
-  for (uptr i = 0; i < maxlen; i++) version[i] = '\0';<br>
-  // Get the version length.<br>
-  CHECK_NE(sysctl(mib, 2, 0, &len, 0, 0), -1);<br>
-  CHECK_LT(len, maxlen);<br>
-  CHECK_NE(sysctl(mib, 2, version, &len, 0, 0), -1);<br>
-  switch (version[0]) {<br>
-    case '9': return MACOS_VERSION_LEOPARD;<br>
-    case '1': {<br>
-      switch (version[1]) {<br>
-        case '0': return MACOS_VERSION_SNOW_LEOPARD;<br>
-        case '1': return MACOS_VERSION_LION;<br>
-        case '2': return MACOS_VERSION_MOUNTAIN_LION;<br>
-        case '3': return MACOS_VERSION_MAVERICKS;<br>
-        default: return MACOS_VERSION_UNKNOWN;<br>
-      }<br>
-    }<br>
-    default: return MACOS_VERSION_UNKNOWN;<br>
-  }<br>
-}<br>
-<br>
-MacosVersion GetMacosVersion() {<br>
-  atomic_uint32_t *cache =<br>
-      reinterpret_cast<atomic_uint32_t*>(&cached_macos_version);<br>
-  MacosVersion result =<br>
-      static_cast<MacosVersion>(atomic_load(cache, memory_order_acquire));<br>
-  if (result == MACOS_VERSION_UNINITIALIZED) {<br>
-    result = GetMacosVersionInternal();<br>
-    atomic_store(cache, result, memory_order_release);<br>
-  }<br>
-  return result;<br>
-}<br>
<br>
 bool PlatformHasDifferentMemcpyAndMemmove() {<br>
   // On OS X 10.7 memcpy() and memmove() are both resolved<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_mac.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.h?rev=200700&r1=200699&r2=200700&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.h?rev=200700&r1=200699&r2=200700&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_mac.h (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_mac.h Mon Feb  3 09:32:19 2014<br>
@@ -36,22 +36,12 @@ typedef struct __CFRuntimeBase {<br>
 #endif<br>
 } CFRuntimeBase;<br>
<br>
-enum MacosVersion {<br>
-  MACOS_VERSION_UNINITIALIZED = 0,<br>
-  MACOS_VERSION_UNKNOWN,<br>
-  MACOS_VERSION_LEOPARD,<br>
-  MACOS_VERSION_SNOW_LEOPARD,<br>
-  MACOS_VERSION_LION,<br>
-  MACOS_VERSION_MOUNTAIN_LION,<br>
-  MACOS_VERSION_MAVERICKS<br>
-};<br>
<br>
 // Used by asan_malloc_mac.cc and asan_mac.cc<br>
 extern "C" void __CFInitialize();<br>
<br>
 namespace __asan {<br>
<br>
-MacosVersion GetMacosVersion();<br>
 void MaybeReplaceCFAllocator();<br>
<br>
 }  // namespace __asan<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_malloc_mac.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_malloc_mac.cc?rev=200700&r1=200699&r2=200700&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_malloc_mac.cc?rev=200700&r1=200699&r2=200700&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_malloc_mac.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_malloc_mac.cc Mon Feb  3 09:32:19 2014<br>
@@ -28,6 +28,7 @@<br>
 #include "asan_report.h"<br>
 #include "asan_stack.h"<br>
 #include "asan_stats.h"<br>
+#include "sanitizer_common/sanitizer_mac.h"<br>
<br>
 // Similar code is used in Google Perftools,<br>
 // <a href="http://code.google.com/p/google-perftools" target="_blank">http://code.google.com/p/google-perftools</a>.<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc?rev=200700&r1=200699&r2=200700&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc?rev=200700&r1=200699&r2=200700&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc Mon Feb  3 09:32:19 2014<br>
@@ -7,9 +7,8 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
 //<br>
-// This file is shared between AddressSanitizer and ThreadSanitizer<br>
-// run-time libraries and implements mac-specific functions from<br>
-// sanitizer_libc.h.<br>
+// This file is shared between various sanitizers' runtime libraries and<br>
+// implements OSX-specific functions.<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "sanitizer_platform.h"<br>
@@ -26,6 +25,7 @@<br>
 #include "sanitizer_flags.h"<br>
 #include "sanitizer_internal_defs.h"<br>
 #include "sanitizer_libc.h"<br>
+#include "sanitizer_mac.h"<br>
 #include "sanitizer_placement_new.h"<br>
 #include "sanitizer_procmaps.h"<br>
<br>
@@ -37,6 +37,7 @@<br>
 #include <sys/mman.h><br>
 #include <sys/resource.h><br>
 #include <sys/stat.h><br>
+#include <sys/sysctl.h><br>
 #include <sys/types.h><br>
 #include <unistd.h><br>
 #include <libkern/OSAtomic.h><br>
@@ -249,6 +250,44 @@ bool IsDeadlySignal(int signum) {<br>
   return (signum == SIGSEGV || signum == SIGBUS) && common_flags()->handle_segv;<br>
 }<br>
<br>
+MacosVersion cached_macos_version = MACOS_VERSION_UNINITIALIZED;<br>
+<br>
+MacosVersion GetMacosVersionInternal() {<br>
+  int mib[2] = { CTL_KERN, KERN_OSRELEASE };<br>
+  char version[100];<br>
+  uptr len = 0, maxlen = sizeof(version) / sizeof(version[0]);<br>
+  for (uptr i = 0; i < maxlen; i++) version[i] = '\0';<br>
+  // Get the version length.<br>
+  CHECK_NE(sysctl(mib, 2, 0, &len, 0, 0), -1);<br>
+  CHECK_LT(len, maxlen);<br>
+  CHECK_NE(sysctl(mib, 2, version, &len, 0, 0), -1);<br>
+  switch (version[0]) {<br>
+    case '9': return MACOS_VERSION_LEOPARD;<br>
+    case '1': {<br>
+      switch (version[1]) {<br>
+        case '0': return MACOS_VERSION_SNOW_LEOPARD;<br>
+        case '1': return MACOS_VERSION_LION;<br>
+        case '2': return MACOS_VERSION_MOUNTAIN_LION;<br>
+        case '3': return MACOS_VERSION_MAVERICKS;<br>
+        default: return MACOS_VERSION_UNKNOWN;<br>
+      }<br>
+    }<br>
+    default: return MACOS_VERSION_UNKNOWN;<br>
+  }<br>
+}<br>
+<br>
+MacosVersion GetMacosVersion() {<br>
+  atomic_uint32_t *cache =<br>
+      reinterpret_cast<atomic_uint32_t*>(&cached_macos_version);<br>
+  MacosVersion result =<br>
+      static_cast<MacosVersion>(atomic_load(cache, memory_order_acquire));<br>
+  if (result == MACOS_VERSION_UNINITIALIZED) {<br>
+    result = GetMacosVersionInternal();<br>
+    atomic_store(cache, result, memory_order_release);<br>
+  }<br>
+  return result;<br>
+}<br>
+<br>
 }  // namespace __sanitizer<br>
<br>
 #endif  // SANITIZER_MAC<br>
<br>
Added: compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h?rev=200700&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h?rev=200700&view=auto</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h (added)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h Mon Feb  3 09:32:19 2014<br>
@@ -0,0 +1,32 @@<br>
+//===-- sanitizer_mac.h -----------------------------------------*- C++ -*-===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+//<br>
+// This file is shared between various sanitizers' runtime libraries and<br>
+// provides definitions for OSX-specific functions.<br>
+//===----------------------------------------------------------------------===//<br>
+#ifndef SANITIZER_MAC_H<br>
+#define SANITIZER_MAC_H<br></blockquote><div><br></div><div>Make this file empty on non-Mac platforms.</div><div>Add it to the list in compiler-rt/lib/sanitizer_common/CMakeLists.txt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+<br>
+namespace __sanitizer {<br>
+<br>
+enum MacosVersion {<br>
+  MACOS_VERSION_UNINITIALIZED = 0,<br>
+  MACOS_VERSION_UNKNOWN,<br>
+  MACOS_VERSION_LEOPARD,<br>
+  MACOS_VERSION_SNOW_LEOPARD,<br>
+  MACOS_VERSION_LION,<br>
+  MACOS_VERSION_MOUNTAIN_LION,<br>
+  MACOS_VERSION_MAVERICKS<br>
+};<br>
+<br>
+MacosVersion GetMacosVersion();<br>
+<br>
+}  // namespace __sanitizer<br>
+<br>
+#endif  // SANITIZER_MAC_H<br>
<br>
Propchange: compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h<br>
------------------------------------------------------------------------------<br>
    svn:eol-style = LF<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div></div>