forked from OSchip/llvm-project
Revert "[Darwin] Fix OS version checks inside simulators"
This reverts commit b16dfbead2
.
Accidental push, reverting and creating a new revision.
This commit is contained in:
parent
5d2be1a188
commit
bd88991a01
|
@ -606,32 +606,9 @@ HandleSignalMode GetHandleSignalMode(int signum) {
|
|||
return result;
|
||||
}
|
||||
|
||||
void ParseVersion(const char *vers, u16 *major, u16 *minor) {
|
||||
// Format: <major>.<minor>[.<patch>]\0
|
||||
CHECK_GE(internal_strlen(vers), 3);
|
||||
const char *p = vers;
|
||||
*major = internal_simple_strtoll(p, &p, /*base=*/10);
|
||||
CHECK_EQ(*p, '.');
|
||||
p += 1;
|
||||
*minor = internal_simple_strtoll(p, &p, /*base=*/10);
|
||||
}
|
||||
|
||||
// Aligned versions example:
|
||||
// Darwin 19 -- macOS 10.15 -- iOS 13 -- tvOS 13 -- watchOS 6
|
||||
static u16 GetDarwinKernelMajorFromOSMajor(u16 os_major) {
|
||||
u16 offset;
|
||||
if (SANITIZER_IOS || SANITIZER_TVOS)
|
||||
offset = 6;
|
||||
else if (SANITIZER_WATCHOS)
|
||||
offset = 13;
|
||||
else // macOS
|
||||
UNREACHABLE("GetDarwinKernelMajorFromOSMajor() does not support macOS");
|
||||
|
||||
return os_major + offset;
|
||||
}
|
||||
|
||||
// This corresponds to Triple::getMacOSXVersion() in the Clang driver.
|
||||
static MacosVersion GetMacosVersionFromDarwinMajor(u16 kernel_major) {
|
||||
static MacosVersion GetMacosAlignedVersionInternal() {
|
||||
u16 kernel_major = GetDarwinKernelVersion().major;
|
||||
// Darwin 0-3 -> unsupported
|
||||
// Darwin 4-19 -> macOS 10.x
|
||||
// Darwin 20+ -> macOS 11+
|
||||
|
@ -647,22 +624,6 @@ static MacosVersion GetMacosVersionFromDarwinMajor(u16 kernel_major) {
|
|||
return MacosVersion(major, minor);
|
||||
}
|
||||
|
||||
static MacosVersion GetMacosAlignedVersionInternal() {
|
||||
if (SANITIZER_IOSSIM) {
|
||||
if (auto vers = GetEnv("SIMULATOR_RUNTIME_VERSION")) {
|
||||
u16 major, minor;
|
||||
ParseVersion(vers, &major, &minor);
|
||||
u16 kernel_major = GetDarwinKernelMajorFromOSMajor(major);
|
||||
return GetMacosVersionFromDarwinMajor(kernel_major);
|
||||
}
|
||||
Report("WARNING: Running in simulator but SIMULATOR_RUNTIME_VERSION env "
|
||||
"var is not set.\n");
|
||||
}
|
||||
|
||||
u16 kernel_major = GetDarwinKernelVersion().major;
|
||||
return GetMacosVersionFromDarwinMajor(kernel_major);
|
||||
}
|
||||
|
||||
static_assert(sizeof(MacosVersion) == sizeof(atomic_uint32_t::Type),
|
||||
"MacosVersion cache size");
|
||||
static atomic_uint32_t cached_macos_version;
|
||||
|
@ -678,14 +639,24 @@ MacosVersion GetMacosAlignedVersion() {
|
|||
return *reinterpret_cast<MacosVersion *>(&result);
|
||||
}
|
||||
|
||||
void ParseVersion(const char *vers, u16 *major, u16 *minor) {
|
||||
// Format: <major>.<minor>.<patch>\0
|
||||
CHECK_GE(internal_strlen(vers), 5);
|
||||
const char *p = vers;
|
||||
*major = internal_simple_strtoll(p, &p, /*base=*/10);
|
||||
CHECK_EQ(*p, '.');
|
||||
p += 1;
|
||||
*minor = internal_simple_strtoll(p, &p, /*base=*/10);
|
||||
}
|
||||
|
||||
DarwinKernelVersion GetDarwinKernelVersion() {
|
||||
char vers[100];
|
||||
size_t len = sizeof(vers);
|
||||
int res = internal_sysctlbyname("kern.osrelease", vers, &len, nullptr, 0);
|
||||
char buf[100];
|
||||
size_t len = sizeof(buf);
|
||||
int res = internal_sysctlbyname("kern.osrelease", buf, &len, nullptr, 0);
|
||||
CHECK_EQ(res, 0);
|
||||
|
||||
u16 major, minor;
|
||||
ParseVersion(vers, &major, &minor);
|
||||
ParseVersion(buf, &major, &minor);
|
||||
|
||||
return DarwinKernelVersion(major, minor);
|
||||
}
|
||||
|
|
|
@ -22,35 +22,6 @@
|
|||
|
||||
namespace __sanitizer {
|
||||
|
||||
void ParseVersion(const char *vers, u16 *major, u16 *minor);
|
||||
|
||||
TEST(SanitizerMac, ParseVersion) {
|
||||
u16 major, minor;
|
||||
|
||||
ParseVersion("11.22.33", &major, &minor);
|
||||
EXPECT_EQ(major, 11); EXPECT_EQ(minor, 22);
|
||||
|
||||
ParseVersion("1.2", &major, &minor);
|
||||
EXPECT_EQ(major, 1); EXPECT_EQ(minor, 2);
|
||||
}
|
||||
|
||||
#if SANITIZER_IOSSIM
|
||||
TEST(SanitizerMac, GetMacosAlignedVersion) {
|
||||
const char *vers_str;
|
||||
if (SANITIZER_IOS || SANITIZER_TVOS) {
|
||||
vers_str = "13.0";
|
||||
} else if (SANITIZER_WATCHOS) {
|
||||
vers_str = "6.5";
|
||||
} else {
|
||||
FAIL() << "unsupported simulator runtime";
|
||||
}
|
||||
setenv("SIMULATOR_RUNTIME_VERSION", vers_str, /*overwrite=*/1);
|
||||
|
||||
MacosVersion vers = GetMacosAlignedVersion();
|
||||
EXPECT_EQ(vers.major, 10);
|
||||
EXPECT_EQ(vers.minor, 15);
|
||||
}
|
||||
#else
|
||||
TEST(SanitizerMac, GetMacosAlignedVersion) {
|
||||
MacosVersion vers = GetMacosAlignedVersion();
|
||||
u16 kernel_major = GetDarwinKernelVersion().major;
|
||||
|
@ -60,7 +31,15 @@ TEST(SanitizerMac, GetMacosAlignedVersion) {
|
|||
EXPECT_EQ(vers.major, expected_major);
|
||||
EXPECT_EQ(vers.minor, expected_minor);
|
||||
}
|
||||
#endif
|
||||
|
||||
void ParseVersion(const char *vers, u16 *major, u16 *minor);
|
||||
|
||||
TEST(SanitizerMac, ParseVersion) {
|
||||
u16 major, minor;
|
||||
ParseVersion("11.22.33", &major, &minor);
|
||||
EXPECT_EQ(major, 11);
|
||||
EXPECT_EQ(minor, 22);
|
||||
}
|
||||
|
||||
TEST(SanitizerMac, GetDarwinKernelVersion) {
|
||||
DarwinKernelVersion vers = GetDarwinKernelVersion();
|
||||
|
|
Loading…
Reference in New Issue