From 12f27fc4b505da848a06b37488c5717bf9e3b85d Mon Sep 17 00:00:00 2001 From: Julian Lettner Date: Tue, 28 Jul 2020 09:44:02 -0700 Subject: [PATCH] [Darwin] Cleanup code via improved GetMacosAlignedVersion() Checking the OS version via `GetMacosAlignedVersion()` now works in simulators [1]. Let's use it to simplify `DyldNeedsEnvVariable()`. [1] 3fb0de820796cc6e322c8378713d375d9870a353 Reviewed By: delcypher Differential Revision: https://reviews.llvm.org/D81197 --- .../lib/sanitizer_common/sanitizer_mac.cpp | 16 +++------------- compiler-rt/lib/sanitizer_common/sanitizer_mac.h | 1 + 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp index 522a909e9528..f96f18713197 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp @@ -879,20 +879,10 @@ bool ReexecDisabled() { return false; } -extern "C" SANITIZER_WEAK_ATTRIBUTE double dyldVersionNumber; -static const double kMinDyldVersionWithAutoInterposition = 360.0; - -bool DyldNeedsEnvVariable() { - // Although sanitizer support was added to LLVM on OS X 10.7+, GCC users - // still may want use them on older systems. On older Darwin platforms, dyld - // doesn't export dyldVersionNumber symbol and we simply return true. - if (!&dyldVersionNumber) return true; +static bool DyldNeedsEnvVariable() { // If running on OS X 10.11+ or iOS 9.0+, dyld will interpose even if - // DYLD_INSERT_LIBRARIES is not set. However, checking OS version via - // GetMacosAlignedVersion() doesn't work for the simulator. Let's instead - // check `dyldVersionNumber`, which is exported by dyld, against a known - // version number from the first OS release where this appeared. - return dyldVersionNumber < kMinDyldVersionWithAutoInterposition; + // DYLD_INSERT_LIBRARIES is not set. + return GetMacosAlignedVersion() < MacosVersion(10, 11); } void MaybeReexec() { diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_mac.h b/compiler-rt/lib/sanitizer_common/sanitizer_mac.h index 90ecff4815c2..f61ebe2566e5 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_mac.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_mac.h @@ -44,6 +44,7 @@ struct VersionBase { return major > other.major || (major == other.major && minor >= other.minor); } + bool operator<(const VersionType &other) const { return !(*this >= other); } }; struct MacosVersion : VersionBase { -- GitLab