[compiler-rt] r200700 - [ASan] Move GetMacosVersion() to sanitizer_common.
Alexander Potapenko
glider at google.com
Mon Feb 3 07:47:43 PST 2014
Yeah, sorry.
On Mon, Feb 3, 2014 at 7:45 PM, Alexey Samsonov <samsonov at google.com> wrote:
>
> On Mon, Feb 3, 2014 at 7:32 PM, Alexander Potapenko <glider at google.com>
> wrote:
>>
>> Author: glider
>> Date: Mon Feb 3 09:32:19 2014
>> New Revision: 200700
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=200700&view=rev
>> Log:
>> [ASan] Move GetMacosVersion() to sanitizer_common.
>>
>> Added:
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h (with props)
>> Modified:
>> compiler-rt/trunk/lib/asan/asan_mac.cc
>> compiler-rt/trunk/lib/asan/asan_mac.h
>> compiler-rt/trunk/lib/asan/asan_malloc_mac.cc
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc
>>
>> 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=200700&r1=200699&r2=200700&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/asan_mac.cc (original)
>> +++ compiler-rt/trunk/lib/asan/asan_mac.cc Mon Feb 3 09:32:19 2014
>> @@ -23,6 +23,7 @@
>> #include "asan_thread.h"
>> #include "sanitizer_common/sanitizer_atomic.h"
>> #include "sanitizer_common/sanitizer_libc.h"
>> +#include "sanitizer_common/sanitizer_mac.h"
>>
>> #include <crt_externs.h> // for _NSGetArgv
>> #include <dlfcn.h> // for dladdr()
>> @@ -53,43 +54,6 @@ void GetPcSpBp(void *context, uptr *pc,
>> # endif // SANITIZER_WORDSIZE
>> }
>>
>> -MacosVersion cached_macos_version = MACOS_VERSION_UNINITIALIZED;
>> -
>> -MacosVersion GetMacosVersionInternal() {
>> - int mib[2] = { CTL_KERN, KERN_OSRELEASE };
>> - char version[100];
>> - uptr len = 0, maxlen = sizeof(version) / sizeof(version[0]);
>> - for (uptr i = 0; i < maxlen; i++) version[i] = '\0';
>> - // Get the version length.
>> - CHECK_NE(sysctl(mib, 2, 0, &len, 0, 0), -1);
>> - CHECK_LT(len, maxlen);
>> - CHECK_NE(sysctl(mib, 2, version, &len, 0, 0), -1);
>> - switch (version[0]) {
>> - case '9': return MACOS_VERSION_LEOPARD;
>> - case '1': {
>> - switch (version[1]) {
>> - case '0': return MACOS_VERSION_SNOW_LEOPARD;
>> - case '1': return MACOS_VERSION_LION;
>> - case '2': return MACOS_VERSION_MOUNTAIN_LION;
>> - case '3': return MACOS_VERSION_MAVERICKS;
>> - default: return MACOS_VERSION_UNKNOWN;
>> - }
>> - }
>> - default: return MACOS_VERSION_UNKNOWN;
>> - }
>> -}
>> -
>> -MacosVersion GetMacosVersion() {
>> - atomic_uint32_t *cache =
>> - reinterpret_cast<atomic_uint32_t*>(&cached_macos_version);
>> - MacosVersion result =
>> - static_cast<MacosVersion>(atomic_load(cache,
>> memory_order_acquire));
>> - if (result == MACOS_VERSION_UNINITIALIZED) {
>> - result = GetMacosVersionInternal();
>> - atomic_store(cache, result, memory_order_release);
>> - }
>> - return result;
>> -}
>>
>> bool PlatformHasDifferentMemcpyAndMemmove() {
>> // On OS X 10.7 memcpy() and memmove() are both resolved
>>
>> Modified: compiler-rt/trunk/lib/asan/asan_mac.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.h?rev=200700&r1=200699&r2=200700&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/asan_mac.h (original)
>> +++ compiler-rt/trunk/lib/asan/asan_mac.h Mon Feb 3 09:32:19 2014
>> @@ -36,22 +36,12 @@ typedef struct __CFRuntimeBase {
>> #endif
>> } CFRuntimeBase;
>>
>> -enum MacosVersion {
>> - MACOS_VERSION_UNINITIALIZED = 0,
>> - MACOS_VERSION_UNKNOWN,
>> - MACOS_VERSION_LEOPARD,
>> - MACOS_VERSION_SNOW_LEOPARD,
>> - MACOS_VERSION_LION,
>> - MACOS_VERSION_MOUNTAIN_LION,
>> - MACOS_VERSION_MAVERICKS
>> -};
>>
>> // Used by asan_malloc_mac.cc and asan_mac.cc
>> extern "C" void __CFInitialize();
>>
>> namespace __asan {
>>
>> -MacosVersion GetMacosVersion();
>> void MaybeReplaceCFAllocator();
>>
>> } // namespace __asan
>>
>> Modified: compiler-rt/trunk/lib/asan/asan_malloc_mac.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_malloc_mac.cc?rev=200700&r1=200699&r2=200700&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/asan_malloc_mac.cc (original)
>> +++ compiler-rt/trunk/lib/asan/asan_malloc_mac.cc Mon Feb 3 09:32:19 2014
>> @@ -28,6 +28,7 @@
>> #include "asan_report.h"
>> #include "asan_stack.h"
>> #include "asan_stats.h"
>> +#include "sanitizer_common/sanitizer_mac.h"
>>
>> // Similar code is used in Google Perftools,
>> // http://code.google.com/p/google-perftools.
>>
>> 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=200700&r1=200699&r2=200700&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc Mon Feb 3
>> 09:32:19 2014
>> @@ -7,9 +7,8 @@
>> //
>>
>> //===----------------------------------------------------------------------===//
>> //
>> -// This file is shared between AddressSanitizer and ThreadSanitizer
>> -// run-time libraries and implements mac-specific functions from
>> -// sanitizer_libc.h.
>> +// This file is shared between various sanitizers' runtime libraries and
>> +// implements OSX-specific functions.
>>
>> //===----------------------------------------------------------------------===//
>>
>> #include "sanitizer_platform.h"
>> @@ -26,6 +25,7 @@
>> #include "sanitizer_flags.h"
>> #include "sanitizer_internal_defs.h"
>> #include "sanitizer_libc.h"
>> +#include "sanitizer_mac.h"
>> #include "sanitizer_placement_new.h"
>> #include "sanitizer_procmaps.h"
>>
>> @@ -37,6 +37,7 @@
>> #include <sys/mman.h>
>> #include <sys/resource.h>
>> #include <sys/stat.h>
>> +#include <sys/sysctl.h>
>> #include <sys/types.h>
>> #include <unistd.h>
>> #include <libkern/OSAtomic.h>
>> @@ -249,6 +250,44 @@ bool IsDeadlySignal(int signum) {
>> return (signum == SIGSEGV || signum == SIGBUS) &&
>> common_flags()->handle_segv;
>> }
>>
>> +MacosVersion cached_macos_version = MACOS_VERSION_UNINITIALIZED;
>> +
>> +MacosVersion GetMacosVersionInternal() {
>> + int mib[2] = { CTL_KERN, KERN_OSRELEASE };
>> + char version[100];
>> + uptr len = 0, maxlen = sizeof(version) / sizeof(version[0]);
>> + for (uptr i = 0; i < maxlen; i++) version[i] = '\0';
>> + // Get the version length.
>> + CHECK_NE(sysctl(mib, 2, 0, &len, 0, 0), -1);
>> + CHECK_LT(len, maxlen);
>> + CHECK_NE(sysctl(mib, 2, version, &len, 0, 0), -1);
>> + switch (version[0]) {
>> + case '9': return MACOS_VERSION_LEOPARD;
>> + case '1': {
>> + switch (version[1]) {
>> + case '0': return MACOS_VERSION_SNOW_LEOPARD;
>> + case '1': return MACOS_VERSION_LION;
>> + case '2': return MACOS_VERSION_MOUNTAIN_LION;
>> + case '3': return MACOS_VERSION_MAVERICKS;
>> + default: return MACOS_VERSION_UNKNOWN;
>> + }
>> + }
>> + default: return MACOS_VERSION_UNKNOWN;
>> + }
>> +}
>> +
>> +MacosVersion GetMacosVersion() {
>> + atomic_uint32_t *cache =
>> + reinterpret_cast<atomic_uint32_t*>(&cached_macos_version);
>> + MacosVersion result =
>> + static_cast<MacosVersion>(atomic_load(cache,
>> memory_order_acquire));
>> + if (result == MACOS_VERSION_UNINITIALIZED) {
>> + result = GetMacosVersionInternal();
>> + atomic_store(cache, result, memory_order_release);
>> + }
>> + return result;
>> +}
>> +
>> } // namespace __sanitizer
>>
>> #endif // SANITIZER_MAC
>>
>> Added: compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h?rev=200700&view=auto
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h (added)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h Mon Feb 3
>> 09:32:19 2014
>> @@ -0,0 +1,32 @@
>> +//===-- sanitizer_mac.h -----------------------------------------*- C++
>> -*-===//
>> +//
>> +// 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 various sanitizers' runtime libraries and
>> +// provides definitions for OSX-specific functions.
>>
>> +//===----------------------------------------------------------------------===//
>> +#ifndef SANITIZER_MAC_H
>> +#define SANITIZER_MAC_H
>
>
> Make this file empty on non-Mac platforms.
> Add it to the list in compiler-rt/lib/sanitizer_common/CMakeLists.txt
>
>>
>> +
>> +namespace __sanitizer {
>> +
>> +enum MacosVersion {
>> + MACOS_VERSION_UNINITIALIZED = 0,
>> + MACOS_VERSION_UNKNOWN,
>> + MACOS_VERSION_LEOPARD,
>> + MACOS_VERSION_SNOW_LEOPARD,
>> + MACOS_VERSION_LION,
>> + MACOS_VERSION_MOUNTAIN_LION,
>> + MACOS_VERSION_MAVERICKS
>> +};
>> +
>> +MacosVersion GetMacosVersion();
>> +
>> +} // namespace __sanitizer
>> +
>> +#endif // SANITIZER_MAC_H
>>
>> Propchange: compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.h
>>
>> ------------------------------------------------------------------------------
>> svn:eol-style = LF
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
>
> --
> Alexey Samsonov, MSK
--
Alexander Potapenko
Software Engineer
Google Moscow
More information about the llvm-commits
mailing list