mac: Switch from <AvailabilityMacros.h> to <Availability.h>

The macOS 11.0 SDK, as of Xcode 12b6 12A8189n, has not updated
<AvailabilityMacros.h> with a MAC_OS_X_VERSION_11_0 or
MAC_OS_X_VERSION_10_16 constant. However, the <Availability.h> interface
has been updated to provide both __MAC_11_0 and __MAC_10_16.
<AvailabilityMacros.h>’s MAC_OS_X_VERSION_MAX_ALLOWED, which is supposed
to identify the SDK version, is broken in the 11.0 SDK in that whenever
the deployment target is set to 10.15 or earlier, the SDK will be
mis-identified through this interface as 10.15. When using the
<Availability.h> equivalent, __MAC_OS_X_VERSION_MAX_ALLOWED, the 11.0
SDK is identified as 10.16 (arguably it should be internally versioned
as 11.0, but at least this interface allows it to be detected
unambiguously.) It’s clear that the <AvailabilityMacros.h> interface
provides no meaningful support for the macOS 11.0 SDK at all, but
<Availability.h> does.

<Availability.h> was introduced in the Mac OS X 10.5 SDK, so there is no
relevant SDK version compatibility problem with this interface.

Key differences between these interfaces for the purposes used by
Crashpad:
 - <AvailabilityMacros.h> → <Availability.h>
 - MAC_OS_X_VERSION_MIN_REQUIRED (DT) → __MAC_OS_X_VERSION_MIN_REQUIRED
 - MAC_OS_X_VERSION_MAX_ALLOWED (SDK) → __MAC_OS_X_VERSION_MAX_ALLOWED
 - MAC_OS_X_VERSION_x_y → __MAC_x_y
 - <Availability.h> __MAC_OS_X_VERSION_* SDK/DT macros are only
   available when targeting macOS, while <AvailabilityMacros.h>
   MAC_OS_X_VERSION_* SDK/DT macros are available on all Apple platforms,
   which may be a source of confusion. (<Availability.h> __MAC_* macros
   do remain available on all Apple platforms.)

This change was made mostly mechanically by:

sed -i '' -Ee 's/<AvailabilityMacros.h>/<Availability.h>/g' \
    $(git grep -E -l '<AvailabilityMacros.h>' |
          grep -v AvailabilityMacros.h)

sed -i '' -Ee 's/(MAC_OS_X_VERSION_(MIN_REQUIRED|MAX_ALLOWED))/__\1/g' \
    $(git grep -E -l 'MAC_OS_X_VERSION_(MIN_REQUIRED|MAX_ALLOWED)' |
          grep -v AvailabilityMacros.h)

sed -i '' -Ee 's/(MAC_OS_X_VERSION_(10_[0-9]+))/__MAC_\2/g' \
    $(git grep -E -l 'MAC_OS_X_VERSION_(10_[0-9]+)' |
          grep -v AvailabilityMacros.h)

Bug: crashpad:347
Change-Id: Iab2d381a09838cdbc08ab409eea7e96320e28d59
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2382421
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
GitOrigin-RevId: bdf94713241b2656c01601d3e44858deb8d19fda
diff --git a/compat/BUILD.gn b/compat/BUILD.gn
index 2436b84..a38724c 100644
--- a/compat/BUILD.gn
+++ b/compat/BUILD.gn
@@ -57,7 +57,7 @@
     # static_library.
     group(target_name) {
       forward_variables_from(invoker, "*")
-      not_needed(["configs"])
+      not_needed([ "configs" ])
     }
   } else {
     static_library(target_name) {
@@ -71,7 +71,8 @@
 
   if (crashpad_is_mac || crashpad_is_ios) {
     sources += [
-      "mac/AvailabilityMacros.h",
+      "mac/Availability.h",
+      "mac/AvailabilityVersions.h",
       "mac/kern/exc_resource.h",
       "mac/mach-o/loader.h",
       "mac/mach/i386/thread_state.h",
diff --git a/compat/compat.gyp b/compat/compat.gyp
index b99d690..1c2eeaf 100644
--- a/compat/compat.gyp
+++ b/compat/compat.gyp
@@ -38,7 +38,8 @@
         'linux/signal.h',
         'linux/sys/ptrace.h',
         'linux/sys/user.h',
-        'mac/AvailabilityMacros.h',
+        'mac/Availability.h',
+        'mac/AvailabilityVersions.h',
         'mac/kern/exc_resource.h',
         'mac/mach/i386/thread_state.h',
         'mac/mach/mach.h',
diff --git a/compat/mac/Availability.h b/compat/mac/Availability.h
new file mode 100644
index 0000000..b8f8f2d
--- /dev/null
+++ b/compat/mac/Availability.h
@@ -0,0 +1,28 @@
+// Copyright 2020 The Crashpad Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef CRASHPAD_COMPAT_MAC_AVAILABILITY_H_
+#define CRASHPAD_COMPAT_MAC_AVAILABILITY_H_
+
+// Until the 10.15 SDK, the contents of <AvailabilityVersions.h> was in-line in
+// <Availability.h>, but since then, it was broken out into its own header.
+// This compat version of <Availability.h> allows these macros to always appear
+// to be provided by the new header, <AvailabilityVersions.h>, even when an
+// older SDK is in use.
+
+#include_next <Availability.h>
+
+#include <AvailabilityVersions.h>
+
+#endif  // CRASHPAD_COMPAT_MAC_AVAILABILITY_H_
diff --git a/compat/mac/AvailabilityMacros.h b/compat/mac/AvailabilityMacros.h
deleted file mode 100644
index a83d2a4..0000000
--- a/compat/mac/AvailabilityMacros.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2014 The Crashpad Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef CRASHPAD_COMPAT_MAC_AVAILABILITYMACROS_H_
-#define CRASHPAD_COMPAT_MAC_AVAILABILITYMACROS_H_
-
-#include_next <AvailabilityMacros.h>
-
-// 10.7 SDK
-
-#ifndef MAC_OS_X_VERSION_10_7
-#define MAC_OS_X_VERSION_10_7 1070
-#endif
-
-// 10.8 SDK
-
-#ifndef MAC_OS_X_VERSION_10_8
-#define MAC_OS_X_VERSION_10_8 1080
-#endif
-
-// 10.9 SDK
-
-#ifndef MAC_OS_X_VERSION_10_9
-#define MAC_OS_X_VERSION_10_9 1090
-#endif
-
-// 10.10 SDK
-
-#ifndef MAC_OS_X_VERSION_10_10
-#define MAC_OS_X_VERSION_10_10 101000
-#endif
-
-// 10.11 SDK
-
-#ifndef MAC_OS_X_VERSION_10_11
-#define MAC_OS_X_VERSION_10_11 101100
-#endif
-
-// 10.12 SDK
-
-#ifndef MAC_OS_X_VERSION_10_12
-#define MAC_OS_X_VERSION_10_12 101200
-#endif
-
-// 10.13 SDK
-
-#ifndef MAC_OS_X_VERSION_10_13
-#define MAC_OS_X_VERSION_10_13 101300
-#endif
-
-// 10.14 SDK
-
-#ifndef MAC_OS_X_VERSION_10_14
-#define MAC_OS_X_VERSION_10_14 101400
-#endif
-
-// 10.15 SDK
-
-#ifndef MAC_OS_X_VERSION_10_15
-#define MAC_OS_X_VERSION_10_15 101500
-#endif
-
-#endif  // CRASHPAD_COMPAT_MAC_AVAILABILITYMACROS_H_
diff --git a/compat/mac/AvailabilityVersions.h b/compat/mac/AvailabilityVersions.h
new file mode 100644
index 0000000..8e932c5
--- /dev/null
+++ b/compat/mac/AvailabilityVersions.h
@@ -0,0 +1,86 @@
+// Copyright 2020 The Crashpad Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef CRASHPAD_COMPAT_MAC_AVAILABILITYVERSIONS_H_
+#define CRASHPAD_COMPAT_MAC_AVAILABILITYVERSIONS_H_
+
+#if __has_include_next(<AvailabilityVersions.h>)
+#include_next <AvailabilityVersions.h>
+#endif
+
+// 10.7 SDK
+
+#ifndef __MAC_10_7
+#define __MAC_10_7 1070
+#endif
+
+// 10.8 SDK
+
+#ifndef __MAC_10_8
+#define __MAC_10_8 1080
+#endif
+
+// 10.9 SDK
+
+#ifndef __MAC_10_9
+#define __MAC_10_9 1090
+#endif
+
+// 10.10 SDK
+
+#ifndef __MAC_10_10
+#define __MAC_10_10 101000
+#endif
+
+// 10.11 SDK
+
+#ifndef __MAC_10_11
+#define __MAC_10_11 101100
+#endif
+
+// 10.12 SDK
+
+#ifndef __MAC_10_12
+#define __MAC_10_12 101200
+#endif
+
+// 10.13 SDK
+
+#ifndef __MAC_10_13
+#define __MAC_10_13 101300
+#endif
+
+// 10.14 SDK
+
+#ifndef __MAC_10_14
+#define __MAC_10_14 101400
+#endif
+
+// 10.15 SDK
+
+#ifndef __MAC_10_15
+#define __MAC_10_15 101500
+#endif
+
+// 11.0 SDK
+
+#ifndef __MAC_10_16
+#define __MAC_10_16 101600
+#endif
+
+#ifndef __MAC_11_0
+#define __MAC_11_0 110000
+#endif
+
+#endif  // CRASHPAD_COMPAT_MAC_AVAILABILITYVERSIONS_H_
diff --git a/minidump/minidump_misc_info_writer.cc b/minidump/minidump_misc_info_writer.cc
index d2d8511..1343560 100644
--- a/minidump/minidump_misc_info_writer.cc
+++ b/minidump/minidump_misc_info_writer.cc
@@ -31,7 +31,7 @@
 #include "util/numeric/safe_assignment.h"
 
 #if defined(OS_APPLE)
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #elif defined(OS_ANDROID)
 #include <android/api-level.h>
 #endif
@@ -66,20 +66,19 @@
   return machine_description;
 }
 
-#if defined(OS_APPLE)
-// Converts the value of the MAC_OS_VERSION_MIN_REQUIRED or
-// MAC_OS_X_VERSION_MAX_ALLOWED macro from <AvailabilityMacros.h> to a number
+#if defined(OS_MAC)
+// Converts the value of the __MAC_OS_X_VERSION_MIN_REQUIRED or
+// __MAC_OS_X_VERSION_MAX_ALLOWED macro from <Availability.h> to a number
 // identifying the minor macOS version that it represents. For example, with an
-// argument of MAC_OS_X_VERSION_10_6, this function will return 6.
+// argument of __MAC_10_6, this function will return 6.
 int AvailabilityVersionToMacOSXMinorVersion(int availability) {
-  // Through MAC_OS_X_VERSION_10_9, the minor version is the tens digit.
+  // Through __MAC_10_9, the minor version is the tens digit.
   if (availability >= 1000 && availability <= 1099) {
     return (availability / 10) % 10;
   }
 
-  // After MAC_OS_X_VERSION_10_9, the older format was insufficient to represent
-  // versions. Since then, the minor version is the thousands and hundreds
-  // digits.
+  // After __MAC_10_9, the older format was insufficient to represent versions.
+  // Since then, the minor version is the thousands and hundreds digits.
   if (availability >= 100000 && availability <= 109999) {
     return (availability / 100) % 100;
   }
@@ -136,11 +135,11 @@
                                                       PACKAGE_VERSION,
                                                       kOS);
 
-#if defined(OS_APPLE)
+#if defined(OS_MAC)
   debug_build_string += base::StringPrintf(
       ",%d,%d",
-      AvailabilityVersionToMacOSXMinorVersion(MAC_OS_X_VERSION_MIN_REQUIRED),
-      AvailabilityVersionToMacOSXMinorVersion(MAC_OS_X_VERSION_MAX_ALLOWED));
+      AvailabilityVersionToMacOSXMinorVersion(__MAC_OS_X_VERSION_MIN_REQUIRED),
+      AvailabilityVersionToMacOSXMinorVersion(__MAC_OS_X_VERSION_MAX_ALLOWED));
 #elif defined(OS_ANDROID)
   debug_build_string += base::StringPrintf(",%d", __ANDROID_API__);
 #endif
diff --git a/snapshot/mac/mach_o_image_reader_test.cc b/snapshot/mac/mach_o_image_reader_test.cc
index 53826bf..f1f3b1d 100644
--- a/snapshot/mac/mach_o_image_reader_test.cc
+++ b/snapshot/mac/mach_o_image_reader_test.cc
@@ -14,7 +14,7 @@
 
 #include "snapshot/mac/mach_o_image_reader.h"
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #include <dlfcn.h>
 #include <mach-o/dyld.h>
 #include <mach-o/dyld_images.h>
@@ -606,7 +606,7 @@
     ASSERT_NO_FATAL_FAILURE(ExpectSymbolTable(mach_header, &image_reader));
   }
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
   // If dyld is new enough to record UUIDs, check the UUID of any module that
   // it says has one. Note that dyld doesn’t record UUIDs of anything that
   // loaded out of the shared cache, but it should at least have a UUID for the
diff --git a/snapshot/mac/process_reader_mac.cc b/snapshot/mac/process_reader_mac.cc
index ca2c1f7..fafa615 100644
--- a/snapshot/mac/process_reader_mac.cc
+++ b/snapshot/mac/process_reader_mac.cc
@@ -14,7 +14,7 @@
 
 #include "snapshot/mac/process_reader_mac.h"
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #include <mach-o/loader.h>
 #include <mach/mach_vm.h>
 
@@ -213,7 +213,7 @@
 // This may look for the module that matches the executable path in the same
 // data set that vmmap uses.
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
   // The task_dyld_info_data_t struct grew in 10.7, adding the format field.
   // Don’t check this field if it’s not present, which can happen when either
   // the SDK used at compile time or the kernel at run time are too old and
diff --git a/snapshot/mac/process_reader_mac_test.cc b/snapshot/mac/process_reader_mac_test.cc
index 2d64ff1..3233228 100644
--- a/snapshot/mac/process_reader_mac_test.cc
+++ b/snapshot/mac/process_reader_mac_test.cc
@@ -14,9 +14,9 @@
 
 #include "snapshot/mac/process_reader_mac.h"
 
-#include <AvailabilityMacros.h>
-#include <errno.h>
+#include <Availability.h>
 #include <OpenCL/opencl.h>
+#include <errno.h>
 #include <mach-o/dyld.h>
 #include <mach-o/dyld_images.h>
 #include <mach/mach.h>
@@ -569,12 +569,12 @@
     cl_int rv = clGetPlatformIDs(1, &platform_id, nullptr);
     ASSERT_EQ(rv, CL_SUCCESS) << "clGetPlatformIDs";
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_10 && \
-    MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
-// cl_device_id is really available in OpenCL.framework back to 10.5, but in
-// the 10.10 SDK and later, OpenCL.framework includes <OpenGL/CGLDevice.h>,
-// which has its own cl_device_id that was introduced in 10.10. That
-// triggers erroneous availability warnings.
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_10 && \
+    __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_10
+    // cl_device_id is really available in OpenCL.framework back to 10.5, but in
+    // the 10.10 SDK and later, OpenCL.framework includes <OpenGL/CGLDevice.h>,
+    // which has its own cl_device_id that was introduced in 10.10. That
+    // triggers erroneous availability warnings.
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wunguarded-availability"
 #define DISABLED_WUNGUARDED_AVAILABILITY
@@ -640,7 +640,7 @@
 // OpenCL kernels that run on the CPU do not result in cl_kernels images
 // appearing on that OS version.
 bool ExpectCLKernels() {
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_7
   return true;
 #else
   return MacOSXMinorVersion() >= 7;
diff --git a/snapshot/mac/process_types_test.cc b/snapshot/mac/process_types_test.cc
index 0ad2869..5e5ebf1 100644
--- a/snapshot/mac/process_types_test.cc
+++ b/snapshot/mac/process_types_test.cc
@@ -14,7 +14,7 @@
 
 #include "snapshot/mac/process_types.h"
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #include <mach/mach.h>
 #include <string.h>
 
@@ -68,7 +68,7 @@
   if (self_image_infos->version >= 2) {
     EXPECT_TRUE(self_image_infos->libSystemInitialized);
   }
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
   if (self_image_infos->version >= 9) {
     EXPECT_EQ(self_image_infos->dyldAllImageInfosAddress, self_image_infos);
   }
@@ -90,7 +90,7 @@
 
   // This field is only present in the OS X 10.7 SDK (at build time) and kernel
   // (at run time).
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
   if (MacOSXMinorVersion() >= 7) {
 #if !defined(ARCH_CPU_64_BITS)
     EXPECT_EQ(dyld_info.all_image_info_format, TASK_DYLD_ALL_IMAGE_INFO_32);
@@ -103,15 +103,15 @@
   ProcessReaderMac process_reader;
   ASSERT_TRUE(process_reader.Initialize(mach_task_self()));
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_15
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_15
   constexpr uint32_t kDyldAllImageInfosVersionInSDK = 16;
-#elif MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12
+#elif __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_12
   constexpr uint32_t kDyldAllImageInfosVersionInSDK = 15;
-#elif MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
+#elif __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_9
   constexpr uint32_t kDyldAllImageInfosVersionInSDK = 14;
-#elif MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#elif __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
   constexpr uint32_t kDyldAllImageInfosVersionInSDK = 12;
-#elif MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
+#elif __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_6
   constexpr uint32_t kDyldAllImageInfosVersionInSDK = 7;
 #else
   constexpr uint32_t kDyldAllImageInfosVersionInSDK = 1;
@@ -126,11 +126,11 @@
   // test can only be performed if the run-time OS natively uses the same format
   // structure as the SDK.
   bool test_expected_size_for_version_matches_sdk_sizeof;
-#if MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_12
+#if __MAC_OS_X_VERSION_MAX_ALLOWED == __MAC_10_12
   test_expected_size_for_version_matches_sdk_sizeof =
       mac_os_x_minor_version == 12;
-#elif MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13 && \
-    MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_15
+#elif __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_13 && \
+    __MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_15
   test_expected_size_for_version_matches_sdk_sizeof =
       mac_os_x_minor_version >= 13 && mac_os_x_minor_version <= 14;
 #else
@@ -257,7 +257,7 @@
     EXPECT_EQ(proctype_image_infos.systemOrderFlag,
               implicit_cast<uint64_t>(self_image_infos->systemOrderFlag));
   }
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
   if (proctype_image_infos.version >= 8) {
     EXPECT_EQ(proctype_image_infos.uuidArrayCount,
               implicit_cast<uint64_t>(self_image_infos->uuidArrayCount));
@@ -299,7 +299,7 @@
               implicit_cast<uint64_t>(self_image_infos->sharedCacheSlide));
   }
 #endif
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_9
   if (proctype_image_infos.version >= 13) {
     EXPECT_EQ(memcmp(self_image_infos->sharedCacheUUID,
                      proctype_image_infos.sharedCacheUUID,
@@ -307,7 +307,7 @@
               0);
   }
 #endif
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_12
   if (proctype_image_infos.version >= 15) {
     EXPECT_EQ(proctype_image_infos.infoArrayChangeTimestamp,
               self_image_infos->infoArrayChangeTimestamp);
@@ -327,7 +327,7 @@
   }
 #endif
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_12
   // As dyld_all_image_infos has evolved over time, new fields were added to the
   // reserved region. process_types::dyld_all_image_infos declares a recent
   // version of the structure, but an older SDK may declare an older version
@@ -352,7 +352,7 @@
   }
 #endif
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_13
   if (proctype_image_infos.version >= 15 && mac_os_x_minor_version >= 13) {
     EXPECT_EQ(proctype_image_infos.compact_dyld_image_info_addr,
               self_image_infos->compact_dyld_image_info_addr);
@@ -361,7 +361,7 @@
   }
 #endif
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_15
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_15
   if (proctype_image_infos.version >= 16) {
     EXPECT_EQ(proctype_image_infos.platform, self_image_infos->platform);
   }
@@ -399,7 +399,7 @@
     }
   }
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
   if (proctype_image_infos.version >= 8) {
     std::vector<process_types::dyld_uuid_info> proctype_uuid_info_vector(
         proctype_image_infos.uuidArrayCount);
diff --git a/snapshot/mac/system_snapshot_mac.cc b/snapshot/mac/system_snapshot_mac.cc
index 62eb814..e3bfc1c 100644
--- a/snapshot/mac/system_snapshot_mac.cc
+++ b/snapshot/mac/system_snapshot_mac.cc
@@ -14,7 +14,7 @@
 
 #include "snapshot/mac/system_snapshot_mac.h"
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #include <stddef.h>
 #include <sys/sysctl.h>
 #include <sys/types.h>
@@ -364,7 +364,7 @@
       // xnu-6153.11.26/bsd/kern/kern_sysctl.c (10.14.4 and 10.14.5 xnu source
       // are not yet available). In newer production kernels, NX is always
       // enabled. See 10.15.0 xnu-6153.11.26/osfmk/x86_64/pmap.c nx_enabled.
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_14
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_14
       const bool nx_always_enabled = true;
 #else  // DT >= 10.14
       base::ScopedClearLastError reset_errno;
diff --git a/test/mac/dyld.cc b/test/mac/dyld.cc
index fb2156e..ba1cb56 100644
--- a/test/mac/dyld.cc
+++ b/test/mac/dyld.cc
@@ -14,10 +14,10 @@
 
 #include "test/mac/dyld.h"
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #include <dlfcn.h>
-#include <mach/mach.h>
 #include <mach-o/dyld.h>
+#include <mach/mach.h>
 #include <stdint.h>
 
 #include "base/logging.h"
@@ -25,7 +25,7 @@
 #include "test/scoped_module_handle.h"
 #include "util/numeric/safe_assignment.h"
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_13
+#if __MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_13
 extern "C" {
 
 // A non-public dyld API, declared in 10.12.4
@@ -41,14 +41,14 @@
 namespace test {
 
 const dyld_all_image_infos* DyldGetAllImageInfos() {
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_13
+#if __MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_13
   // When building with the pre-10.13 SDK, the weak_import declaration above is
   // available and a symbol will be present in the SDK to link against. If the
   // old interface is also available at run time (running on pre-10.13), use it.
   if (_dyld_get_all_image_infos) {
     return _dyld_get_all_image_infos();
   }
-#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_13
+#elif __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_13
   // When building with the 10.13 SDK or later, but able to run on pre-10.13,
   // look for _dyld_get_all_image_infos in the same module that provides
   // _dyld_image_count. There’s no symbol in the SDK to link against, so this is
diff --git a/test/mac/mach_multiprocess.cc b/test/mac/mach_multiprocess.cc
index eaa6a17..01b242a 100644
--- a/test/mac/mach_multiprocess.cc
+++ b/test/mac/mach_multiprocess.cc
@@ -14,7 +14,7 @@
 
 #include "test/mac/mach_multiprocess.h"
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #include <bsm/libbsm.h>
 
 #include <memory>
@@ -150,7 +150,7 @@
   // and other processes will be able to look it up and send messages to it,
   // these checks disambiguate genuine failures later on in the test from those
   // that would occur if an errant process sends a message to this service.
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
+#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8
   uid_t audit_auid;
   uid_t audit_euid;
   gid_t audit_egid;
diff --git a/util/mach/exc_server_variants.cc b/util/mach/exc_server_variants.cc
index e4c2d19..ed3dda7 100644
--- a/util/mach/exc_server_variants.cc
+++ b/util/mach/exc_server_variants.cc
@@ -14,7 +14,7 @@
 
 #include "util/mach/exc_server_variants.h"
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #include <string.h>
 
 #include <algorithm>
@@ -682,7 +682,7 @@
                                              exception_behavior_t behavior,
                                              bool set_thread_state) {
   if (exception == EXC_CRASH
-#if !defined(OS_IOS) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11
+#if !defined(OS_IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_11
       && MacOSXMinorVersion() >= 11
 #endif
      ) {
diff --git a/util/mach/exception_types.cc b/util/mach/exception_types.cc
index 2a1f3c0..a959eb5 100644
--- a/util/mach/exception_types.cc
+++ b/util/mach/exception_types.cc
@@ -15,11 +15,10 @@
 #include "util/mach/exception_types.h"
 
 #include <Availability.h>
-#include <AvailabilityMacros.h>
 #include <dlfcn.h>
 #include <errno.h>
-#include <libproc.h>
 #include <kern/exc_resource.h>
+#include <libproc.h>
 #include <strings.h>
 
 #include "base/check_op.h"
@@ -29,7 +28,7 @@
 #include "util/mach/mach_extensions.h"
 #include "util/numeric/in_range_cast.h"
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_9
 
 extern "C" {
 
@@ -83,13 +82,13 @@
 // present on OS X 10.9 and later. If it’s not available, sets errno to ENOSYS
 // and returns -1.
 int ProcGetWakemonParams(pid_t pid, int* rate_hz, int* flags) {
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9
+#if __MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_9
   // proc_get_wakemon_params() isn’t in the SDK. Look it up dynamically.
   static ProcGetWakemonParamsType proc_get_wakemon_params =
       GetProcGetWakemonParams();
 #endif
 
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9
+#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_9
   // proc_get_wakemon_params() is definitely available if the deployment target
   // is 10.9 or newer.
   if (!proc_get_wakemon_params) {
diff --git a/util/mach/mach_extensions.cc b/util/mach/mach_extensions.cc
index cefb9bf..4b38cd5 100644
--- a/util/mach/mach_extensions.cc
+++ b/util/mach/mach_extensions.cc
@@ -15,7 +15,6 @@
 #include "util/mach/mach_extensions.h"
 
 #include <Availability.h>
-#include <AvailabilityMacros.h>
 #include <pthread.h>
 
 #include "base/mac/mach_logging.h"
@@ -50,7 +49,7 @@
 #error This code was not ported to iOS versions older than 7
 #endif
 
-#if !defined(OS_IOS) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9
+#if !defined(OS_IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_9
   const int mac_os_x_minor_version = MacOSXMinorVersion();
 #endif
 
@@ -67,7 +66,7 @@
       EXC_MASK_MACH_SYSCALL |
       EXC_MASK_RPC_ALERT |
       EXC_MASK_MACHINE;
-#if !defined(OS_IOS) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
+#if !defined(OS_IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8
   if (mac_os_x_minor_version < 8) {
     return kExcMaskAll_10_6;
   }
@@ -77,7 +76,7 @@
   // xnu-2050.48.11/osfmk/mach/exception_types.h.
   constexpr exception_mask_t kExcMaskAll_10_8 =
       kExcMaskAll_10_6 | EXC_MASK_RESOURCE;
-#if !defined(OS_IOS) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9
+#if !defined(OS_IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_9
   if (mac_os_x_minor_version < 9) {
     return kExcMaskAll_10_8;
   }
@@ -97,7 +96,7 @@
 #error This code was not ported to iOS versions older than 9
 #endif
 
-#if !defined(OS_IOS) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11
+#if !defined(OS_IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_11
   if (MacOSXMinorVersion() < 11) {
     return kExcMaskValid_10_6;
   }
diff --git a/util/mach/mach_message.cc b/util/mach/mach_message.cc
index 72d71e3..1443e14 100644
--- a/util/mach/mach_message.cc
+++ b/util/mach/mach_message.cc
@@ -14,7 +14,7 @@
 
 #include "util/mach/mach_message.h"
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 
 #include <limits>
 
@@ -269,7 +269,7 @@
   const mach_msg_audit_trailer_t* audit_trailer =
       reinterpret_cast<const mach_msg_audit_trailer_t*>(trailer);
 
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
+#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8
   pid_t audit_pid;
   audit_token_to_au32(audit_trailer->msgh_audit,
                       nullptr,
diff --git a/util/stdlib/objc.h b/util/stdlib/objc.h
index faaa453..b5e5b6c 100644
--- a/util/stdlib/objc.h
+++ b/util/stdlib/objc.h
@@ -15,10 +15,10 @@
 #ifndef CRASHPAD_UTIL_STDLIB_OBJC_H_
 #define CRASHPAD_UTIL_STDLIB_OBJC_H_
 
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #include <objc/objc.h>
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
+#if __MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_8
 
 // In order for the @NO and @YES literals to work, NO and YES must be defined as
 // __objc_no and __objc_yes. See
diff --git a/util/stdlib/strnlen.cc b/util/stdlib/strnlen.cc
index 07b0db5..872c0eb 100644
--- a/util/stdlib/strnlen.cc
+++ b/util/stdlib/strnlen.cc
@@ -14,9 +14,9 @@
 
 #include "util/stdlib/strnlen.h"
 
-#if defined(OS_MAC) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
+#if defined(OS_MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
 // Redeclare a method only available on Mac OS X 10.7 and later to suppress a
 // -Wpartial-availability warning.
 extern "C" {
@@ -27,7 +27,7 @@
 namespace crashpad {
 
 size_t strnlen(const char* string, size_t max_length) {
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_7
   if (::strnlen) {
     return ::strnlen(string, max_length);
   }
diff --git a/util/stdlib/strnlen.h b/util/stdlib/strnlen.h
index b88f2da..59253b7 100644
--- a/util/stdlib/strnlen.h
+++ b/util/stdlib/strnlen.h
@@ -21,7 +21,7 @@
 #include "build/build_config.h"
 
 #if defined(OS_MAC)
-#include <AvailabilityMacros.h>
+#include <Availability.h>
 #endif
 
 namespace crashpad {
@@ -38,7 +38,7 @@
 //!     and not all systems’ standard libraries provide an implementation.
 size_t strnlen(const char* string, size_t max_length);
 
-#if !defined(OS_MAC) || MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+#if !defined(OS_MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_7
 inline size_t strnlen(const char* string, size_t max_length) {
   return ::strnlen(string, max_length);
 }