diff --git a/Make.config b/Make.config
index be1077afb6f3..2d7b4da74c51 100644
--- a/Make.config
+++ b/Make.config
@@ -119,9 +119,9 @@ MACCATALYST_NUGET_VERSION_NO_METADATA=$(MACCATALYST_NUGET_VERSION)-$(NUGET_PRERE
MACCATALYST_NUGET_VERSION_FULL=$(MACCATALYST_NUGET_VERSION_NO_METADATA)+$(NUGET_BUILD_METADATA)
# Xcode version should have both a major and a minor version (even if the minor version is 0)
-XCODE_VERSION=12.3
-XCODE_URL=http://xamarin-storage/bot-provisioning/xcodes/Xcode_12.3.xip
-XCODE_DEVELOPER_ROOT=/Applications/Xcode_12.3.0.app/Contents/Developer
+XCODE_VERSION=12.5
+XCODE_URL=http://xamarin-storage/bot-provisioning/xcodes/Xcode_12.5_beta.xip
+XCODE_DEVELOPER_ROOT=/Applications/Xcode_12.5.0-beta.app/Contents/Developer
XCODE_PRODUCT_BUILD_VERSION:=$(shell /usr/libexec/PlistBuddy -c 'Print :ProductBuildVersion' $(XCODE_DEVELOPER_ROOT)/../version.plist)
# Mono version embedded in XI/XM (NEEDED_MONO_VERSION/BRANCH) are specified in mk/mono.mk
@@ -129,9 +129,9 @@ include $(TOP)/mk/mono.mk
MONO_HASH := $(NEEDED_MONO_VERSION)
# Minimum Mono version for building XI/XM
-MIN_MONO_VERSION=6.12.0.39
+MIN_MONO_VERSION=6.12.0.114
MAX_MONO_VERSION=6.12.99
-MIN_MONO_URL=https://xamjenkinsartifact.azureedge.net/build-package-osx-mono/2020-02/41/338349925cd380cad2d19c6c15184cf22cf14800/MonoFramework-MDK-6.12.0.39.macos10.xamarin.universal.pkg
+MIN_MONO_URL=https://xamjenkinsartifact.azureedge.net/build-package-osx-mono/2020-02/121/5e9cb6d1c1de430965312927d5aed7fcb27bfa73/MonoFramework-MDK-6.12.0.114.macos10.xamarin.universal.pkg
# Minimum Mono version for Xamarin.Mac apps using the system mono
MIN_XM_MONO_VERSION=6.4.0.94
@@ -152,7 +152,7 @@ MAX_SHARPIE_VERSION=3.5.99
MIN_SHARPIE_URL=https://download.visualstudio.microsoft.com/download/pr/83e81fcc-39cd-4c2d-b906-ea635f424aaa/2cd8d79588fbb61fa0f4594c85cccfe6/objectivesharpie-3.5.38.pkg
# Minimum OSX versions for building XI/XM
-MIN_OSX_BUILD_VERSION=10.15.4
+MIN_OSX_BUILD_VERSION=11.0
# Minimum OSX version for executing XI/XM tooling.
MIN_OSX_VERSION_FOR_IOS=10.11
MIN_OSX_VERSION_FOR_MAC=10.11
diff --git a/Make.versions b/Make.versions
index 645fcb22a77f..e566ec5c6a12 100644
--- a/Make.versions
+++ b/Make.versions
@@ -48,8 +48,8 @@
# line changed in git).
#
-IOS_PACKAGE_VERSION=14.14.1.$(IOS_COMMIT_DISTANCE)
-MAC_PACKAGE_VERSION=7.8.1.$(MAC_COMMIT_DISTANCE)
+IOS_PACKAGE_VERSION=14.15.1.$(IOS_COMMIT_DISTANCE)
+MAC_PACKAGE_VERSION=7.9.1.$(MAC_COMMIT_DISTANCE)
#
# ** NuGet package version numbers **
@@ -66,8 +66,8 @@ MAC_PACKAGE_VERSION=7.8.1.$(MAC_COMMIT_DISTANCE)
# WARNING: Do **not** use versions higher than the available Xcode SDK or else we will have issues with mtouch (See https://github.com/xamarin/xamarin-macios/issues/7705)
# When bumping the major macOS version in MACOS_NUGET_VERSION also update the macOS version where we execute on bots in jenkins/Jenkinsfile (in the 'node' element)
-IOS_NUGET_VERSION=14.3.100
-TVOS_NUGET_VERSION=14.3.100
-WATCHOS_NUGET_VERSION=7.2.100
-MACOS_NUGET_VERSION=11.1.100
-MACCATALYST_NUGET_VERSION=14.3.100
+IOS_NUGET_VERSION=14.5.100
+TVOS_NUGET_VERSION=14.5.100
+WATCHOS_NUGET_VERSION=7.4.100
+MACOS_NUGET_VERSION=11.3.100
+MACCATALYST_NUGET_VERSION=14.5.100
diff --git a/Versions-ios.plist.in b/Versions-ios.plist.in
index eaf21a0fe033..bfb0141ae435 100644
--- a/Versions-ios.plist.in
+++ b/Versions-ios.plist.in
@@ -44,6 +44,8 @@
14.1
14.2
14.3
+ 14.4
+ 14.5
tvOS
@@ -70,6 +72,8 @@
14.0
14.2
14.3
+ 14.4
+ 14.5
watchOS
@@ -93,6 +97,8 @@
7.0
7.1
7.2
+ 7.3
+ 7.4
MacCatalyst
@@ -103,6 +109,7 @@
13.5
14.2
14.3
+ 14.5
MacCatalystVersionMap
@@ -121,6 +128,10 @@
11.0
14.3
11.1
+ 14.4
+ 11.2
+ 14.5
+ 11.3
RecommendedXcodeVersion
@XCODE_VERSION@
diff --git a/Versions-mac.plist.in b/Versions-mac.plist.in
index a038e19320d6..ab0e8e62b0c3 100644
--- a/Versions-mac.plist.in
+++ b/Versions-mac.plist.in
@@ -20,6 +20,8 @@
10.16
11.0
11.1
+ 11.2
+ 11.3
RecommendedXcodeVersion
diff --git a/mk/xamarin.mk b/mk/xamarin.mk
index bec859057640..153bb5a5aaa3 100644
--- a/mk/xamarin.mk
+++ b/mk/xamarin.mk
@@ -7,7 +7,7 @@ MONO_BRANCH := $(shell cd $(MONO_PATH) 2> /dev/null && git symbolic-ref --sho
endif
ifdef ENABLE_XAMARIN
-NEEDED_MACCORE_VERSION := 428964bf32f06862eb4209129c6fb5b882c3b9be
+NEEDED_MACCORE_VERSION := de616ca53e22ebea66216374a15b8caf2ca77e3c
NEEDED_MACCORE_BRANCH := d16-9
MACCORE_DIRECTORY := maccore
diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets
index b03cf85b4cba..15b4c050f5e7 100644
--- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets
+++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets
@@ -216,10 +216,6 @@ Copyright (C) 2014 Xamarin. All rights reserved.
Inputs="@(_CompileToNativeInput);@(_FileNativeReference);@(BundleDependentFiles)"
Outputs="$(_AppBundlePath)Contents\MacOS\$(_AppBundleName);$(DeviceSpecificOutputPath)bundler.stamp">
-
- <_FrameworkNativeReference Include="@(_FrameworkNativeReference -> '%(Identity)/%(Filename)')" Condition="'%(Extension)' == '.framework' Or '%(Extension)' == '.xcframework'" />
-
-
-
- <_FrameworkNativeReference Include="@(_FrameworkNativeReference -> '%(Identity)/%(Filename)')" Condition="'%(Extension)' == '.framework' Or '%(Extension)' == '.xcframework'" />
-
-
{
return (arg.AvailabilityKind != AvailabilityKind.Introduced) || (arg.Platform != Platform);
diff --git a/tests/introspection/ApiProtocolTest.cs b/tests/introspection/ApiProtocolTest.cs
index ee643e609e21..07c01792b705 100644
--- a/tests/introspection/ApiProtocolTest.cs
+++ b/tests/introspection/ApiProtocolTest.cs
@@ -116,6 +116,9 @@ protected virtual bool Skip (Type type, string protocolName)
case "PKTransitPassProperties": // Conformance not in headers
// Xcode 12.2
case "VSAccountApplicationProvider": // Conformance not in headers
+ // Xcode 12.5
+ case "HMCharacteristicMetadata":
+ case "HMAccessoryCategory":
return true;
}
break;
diff --git a/tests/introspection/Mac/MacApiProtocolTest.cs b/tests/introspection/Mac/MacApiProtocolTest.cs
index 7c2b456c0a17..9cf91165860c 100644
--- a/tests/introspection/Mac/MacApiProtocolTest.cs
+++ b/tests/introspection/Mac/MacApiProtocolTest.cs
@@ -85,6 +85,11 @@ protected override bool Skip (Type type, string protocolName)
case "NSPrintInfo": // Conformance not in headers
case "NSPrinter": // Conformance not in headers
return true;
+ // Xcode 12.5
+ case "CXCall": // Conformance not in headers
+ case "CXCallUpdate": // Conformance not in headers
+ case "CXProviderConfiguration": // Conformance not in headers
+ return true;
default:
// CIFilter started implementing NSSecureCoding in 10.11
if (!Mac.CheckSystemVersion (10, 11) && (type == typeof(CIFilter) || type.IsSubclassOf (typeof(CIFilter))))
@@ -110,6 +115,8 @@ protected override bool Skip (Type type, string protocolName)
case "NSCollectionViewUpdateItem": // Not declared in header file
case "MLPredictionOptions": // Not declared in header file
case "FPUIActionExtensionContext": // Conformance not in headers
+ // Xcode 12.5
+ case "CXCall": // Conformance not in headers
return true;
}
break;
@@ -170,6 +177,10 @@ protected override bool Skip (Type type, string protocolName)
case "NSUrlSessionTaskTransactionMetrics": // Conformance not in headers
case "NSFileProviderDomain": // Conformance not in headers
case "FPUIActionExtensionContext": // Conformance not in headers
+ // Xcode 12.5
+ case "CXCall": // Conformance not in headers
+ case "CXCallUpdate": // Conformance not in headers
+ case "CXProviderConfiguration": // Conformance not in headers
return true;
}
break;
diff --git a/tests/mmp-regression/Makefile b/tests/mmp-regression/Makefile
index 535fad54a8d1..e86b38c80360 100644
--- a/tests/mmp-regression/Makefile
+++ b/tests/mmp-regression/Makefile
@@ -32,7 +32,7 @@ $(foreach test,$(ALL_TESTS),$(test)/bin): dylib/libTest.dylib
$(QF_GEN) if ! $(SYSTEM_XIBUILD) -- $(@D)/$(@D).csproj /p:Configuration=$(CONFIG); then EC=$$?; rm -Rf $@; exit $$EC; fi
dylib/libTest.dylib: dylib/src.c
- $(QF_GEN) $(XCODE_CC) $< -o$@ -arch x86_64 -shared
+ $(QF_GEN) $(XCODE_CC) $< -o$@ -arch x86_64 -shared -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
build: $(foreach test,$(ALL_TESTS),$(test)/bin)
diff --git a/tests/monotouch-test/GameKit/LeaderboardViewControllerTest.cs b/tests/monotouch-test/GameKit/LeaderboardViewControllerTest.cs
index b3fa482ce239..7afa7ec19fc4 100644
--- a/tests/monotouch-test/GameKit/LeaderboardViewControllerTest.cs
+++ b/tests/monotouch-test/GameKit/LeaderboardViewControllerTest.cs
@@ -32,13 +32,11 @@ public class LeaderboardViewControllerTest {
public void DefaultCtor ()
{
#if MONOMAC
- // For some reason the init method is not allowed on Xcode 12.2 Beta 3 anymore
- // but was allowed before that said this class got deprecated in 10.10 so it may now be
- // a permanent change.
- if (TestRuntime.CheckExactXcodeVersion (12, 2, beta: 3))
+ // fails when executed under BigSur - this has been deprecated for a while (even if it remains working elsewhere)
+ if (TestRuntime.CheckSystemVersion (PlatformName.MacOSX, 11, 0))
Assert.Inconclusive ("'LeaderboardViewControllerTest' the native 'init' method returned nil.");
-#endif
TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 10, 8, throwIfOtherPlatform: false);
+#endif
using (var vc = new GKLeaderboardViewController ()) {
Assert.Null (vc.Category, "Category");
Assert.Null (vc.Delegate, "Delegate");
diff --git a/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/ResolveNativeReferencesTaskTest.cs b/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/ResolveNativeReferencesTaskTest.cs
index ca631d7623d1..fcaae86ba197 100644
--- a/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/ResolveNativeReferencesTaskTest.cs
+++ b/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/ResolveNativeReferencesTaskTest.cs
@@ -9,16 +9,16 @@ namespace Xamarin.MacDev.Tasks.Tests {
public class ResolveNativeReferencesTaskTest {
// single arch request (subset are fine)
- [TestCase ("iOS", null, "arm64", "ios-arm64/Universal.framework")]
- [TestCase ("iOS", "simulator", "x86_64", "ios-arm64_x86_64-simulator/Universal.framework")] // subset
- [TestCase ("iOS", "maccatalyst", "x86_64", "ios-arm64_x86_64-maccatalyst/Universal.framework")] // subset
- [TestCase ("tvOS", null, "arm64", "tvos-arm64/Universal.framework")]
- [TestCase ("tvOS", "simulator", "x86_64", "tvos-arm64_x86_64-simulator/Universal.framework")] // subset
- [TestCase ("watchOS", null, "arm64_32", "watchos-arm64_32_armv7k/Universal.framework")]
- [TestCase ("watchOS", "simulator", "x86_64", "watchos-arm64_x86_64-simulator/Universal.framework")] // subset
- [TestCase ("macOS", null, "x86_64", "macos-arm64_x86_64/Universal.framework")] // subset
+ [TestCase ("iOS", null, "arm64", "ios-arm64/Universal.framework/Universal")]
+ [TestCase ("iOS", "simulator", "x86_64", "ios-arm64_x86_64-simulator/Universal.framework/Universal")] // subset
+ [TestCase ("iOS", "maccatalyst", "x86_64", "ios-arm64_x86_64-maccatalyst/Universal.framework/Universal")] // subset
+ [TestCase ("tvOS", null, "arm64", "tvos-arm64/Universal.framework/Universal")]
+ [TestCase ("tvOS", "simulator", "x86_64", "tvos-arm64_x86_64-simulator/Universal.framework/Universal")] // subset
+ [TestCase ("watchOS", null, "arm64_32", "watchos-arm64_32_armv7k/Universal.framework/Universal")]
+ [TestCase ("watchOS", "simulator", "x86_64", "watchos-arm64_x86_64-simulator/Universal.framework/Universal")] // subset
+ [TestCase ("macOS", null, "x86_64", "macos-arm64_x86_64/Universal.framework/Universal")] // subset
// multiple arch request (all must be present)
- [TestCase ("macOS", null, "x86_64, arm64", "macos-arm64_x86_64/Universal.framework")]
+ [TestCase ("macOS", null, "x86_64, arm64", "macos-arm64_x86_64/Universal.framework/Universal")]
// failure to resolve requested architecture
[TestCase ("iOS", "simulator", "i386, x86_64", "")] // i386 not available
// failure to resolve mismatched variant
@@ -34,10 +34,10 @@ public void Xcode12_x (string platform, string variant, string architecture, str
Assert.That (result, Is.EqualTo (expected), expected);
}
- [TestCase ("iOS", null, "ARMv7", "ios-arm64_armv7_armv7s/XTest.framework")]
+ [TestCase ("iOS", null, "ARMv7", "ios-arm64_armv7_armv7s/XTest.framework/XTest")]
// there was no 64bits simulator for watchOS but a i386 one was available
[TestCase ("watchOS", "simulator", "x86_64", "")]
- [TestCase ("watchOS", "simulator", "i386", "watchos-i386-simulator/XTest.framework")]
+ [TestCase ("watchOS", "simulator", "i386", "watchos-i386-simulator/XTest.framework/XTest")]
public void PreXcode12 (string platform, string variant, string architecture, string expected)
{
var path = Path.Combine (Path.GetDirectoryName (GetType ().Assembly.Location), "Resources", "xcf-prexcode12.plist");
diff --git a/tests/msbuild/Xamarin.MacDev.Tests/MSBuild-Smoke.cs b/tests/msbuild/Xamarin.MacDev.Tests/MSBuild-Smoke.cs
index ffdde04db021..4b3f302bd492 100644
--- a/tests/msbuild/Xamarin.MacDev.Tests/MSBuild-Smoke.cs
+++ b/tests/msbuild/Xamarin.MacDev.Tests/MSBuild-Smoke.cs
@@ -152,7 +152,8 @@ public void Build_BindingLibrary_SmokeTest (string projectName)
[TestCase ("BindingProjectWithNoTag.csproj")]
public void BuildingSameBindingProject_TwoTimes_ShallNotInvokeMMPTwoTimes (string project)
{
- const string nativeRefItemGroup = "DynamicFalse";
+ var dylib = Path.GetFullPath (Path.Combine (TI.TestDirectory, "test-libraries", ".libs", "macos", "libtest.dylib"));
+ string nativeRefItemGroup = $"DynamicFalse";
RunMSBuildTest (tmpDir => {
var config = new TI.UnifiedTestConfig (tmpDir) { ProjectName = project, ItemGroup = nativeRefItemGroup };
diff --git a/tests/mtouch/MTouch.cs b/tests/mtouch/MTouch.cs
index 01c2dd41bd59..da58dd5f47c9 100644
--- a/tests/mtouch/MTouch.cs
+++ b/tests/mtouch/MTouch.cs
@@ -3848,7 +3848,7 @@ public void ManyBigPInvokes ()
var tmpdir = Cache.CreateTemporaryDirectory ();
var m = Path.Combine (tmpdir, "file.m");
var cs = Path.Combine (tmpdir, "file.cs");
- var functions = 2500;
+ var functions = 8000;
var m_writer = new StringBuilder ();
var cs_writer = new StringBuilder ("\n");
cs_writer.AppendLine ("namespace Tester {");
diff --git a/tests/mtouch/MTouchTool.cs b/tests/mtouch/MTouchTool.cs
index 48597eb935a6..b4d9ff3d6a53 100644
--- a/tests/mtouch/MTouchTool.cs
+++ b/tests/mtouch/MTouchTool.cs
@@ -861,7 +861,8 @@ public static IEnumerable GetNativeSymbolsInExecutable (string executabl
if (v.StartsWith (executable, StringComparison.Ordinal) && v.EndsWith (":", StringComparison.Ordinal))
return false;
- if (v == "no symbols")
+ // nm changed its output on xcode 12.5 (it will fail, on purpose, with earlier versions)
+ if (v.EndsWith (": no symbols", StringComparison.Ordinal))
return false;
return true;
diff --git a/tests/xtro-sharpie/common-CoreFoundation.ignore b/tests/xtro-sharpie/common-CoreFoundation.ignore
index 1f32d047651c..05a20c887812 100644
--- a/tests/xtro-sharpie/common-CoreFoundation.ignore
+++ b/tests/xtro-sharpie/common-CoreFoundation.ignore
@@ -277,6 +277,7 @@
!missing-field! kCFURLUbiquitousItemHasUnresolvedConflictsKey not bound
!missing-field! kCFURLUbiquitousItemIsDownloadedKey not bound
!missing-field! kCFURLUbiquitousItemIsDownloadingKey not bound
+!missing-field! kCFURLUbiquitousItemIsExcludedFromSyncKey not bound
!missing-field! kCFURLUbiquitousItemIsUploadedKey not bound
!missing-field! kCFURLUbiquitousItemIsUploadingKey not bound
!missing-field! kCFURLUbiquitousItemPercentDownloadedKey not bound
diff --git a/tests/xtro-sharpie/common-MLCompute.ignore b/tests/xtro-sharpie/common-MLCompute.ignore
index b18d56ad5aab..91c74b8427ae 100644
--- a/tests/xtro-sharpie/common-MLCompute.ignore
+++ b/tests/xtro-sharpie/common-MLCompute.ignore
@@ -1,12 +1,6 @@
-## sharpie skip empty types - but they can be used
-!unknown-type! MLCTensorOptimizerDeviceData bound
-
## `*Count` are not constant values and can change in the future
-!missing-enum-value! MLCActivationType native value MLCActivationTypeCount = 19 not bound
-!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationCount = 26 not bound
!missing-enum-value! MLCDataType native value MLCDataTypeCount = 8 not bound
!missing-enum-value! MLCDeviceType native value MLCDeviceTypeCount = 3 not bound
!missing-enum-value! MLCLossType native value MLCLossTypeCount = 9 not bound
!missing-enum-value! MLCPoolingType native value MLCPoolingTypeCount = 4 not bound
!missing-enum-value! MLCRandomInitializerType native value MLCRandomInitializerTypeCount = 4 not bound
-!missing-enum-value! MLCReductionType native value MLCReductionTypeCount = 7 not bound
diff --git a/tests/xtro-sharpie/common-VideoSubscriberAccount.ignore b/tests/xtro-sharpie/common-VideoSubscriberAccount.ignore
deleted file mode 100644
index 40873ae4fc0e..000000000000
--- a/tests/xtro-sharpie/common-VideoSubscriberAccount.ignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Present, intro is happy and the header is there but seems that
-# Apple forgot to add it to the public umbrella framework
-!unknown-type! VSAccountApplicationProvider bound
diff --git a/tests/xtro-sharpie/iOS-AVFoundation.todo b/tests/xtro-sharpie/iOS-AVFoundation.todo
new file mode 100644
index 000000000000..7630a29ed60f
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-AVFoundation.todo
@@ -0,0 +1,64 @@
+!missing-enum! AVAudioSessionInterruptionReason not bound
+!missing-enum! AVPlayerInterstitialEventRestrictions not bound
+!missing-enum! AVVariantPreferences not bound
+!missing-enum-value! AVAudioSessionCategoryOptions native value AVAudioSessionCategoryOptionOverrideMutedMicrophoneInterruption = 128 not bound
+!missing-field! AVAssetDownloadTaskPrefersLosslessAudioKey not bound
+!missing-field! AVAudioSessionInterruptionReasonKey not bound
+!missing-field! AVPlayerInterstitialEventObserverCurrentEventDidChangeNotification not bound
+!missing-field! AVPlayerInterstitialEventObserverEventsDidChangeNotification not bound
+!missing-field! AVPlayerWaitingDuringInterstitialEventReason not bound
+!missing-field! AVSampleBufferDisplayLayerOutputObscuredDueToInsufficientExternalProtectionDidChangeNotification not bound
+!missing-pinvoke! AVSampleBufferAttachContentKey is not bound
+!missing-protocol-member! AVContentKeyRecipient::contentKeySession:didProvideContentKey: not found
+!missing-protocol-member! AVQueuedSampleBufferRendering::hasSufficientMediaDataForReliablePlaybackStart not found
+!missing-selector! +AVContentKeySpecifier::contentKeySpecifierForKeySystem:identifier:options: not bound
+!missing-selector! +AVPlayerInterstitialEvent::interstitialEventWithPrimaryItem:date:templateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::interstitialEventWithPrimaryItem:time:templateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::playerInterstitialEventWithPrimaryItem:date:interstitialTemplateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::playerInterstitialEventWithPrimaryItem:time:interstitialTemplateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEventController::interstitialEventControllerWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventController::playerInterstitialEventControllerWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventObserver::interstitialEventObserverWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventObserver::playerInterstitialEventObserverWithPrimaryPlayer: not bound
+!missing-selector! AVAudioSession::prefersNoInterruptionsFromSystemAlerts not bound
+!missing-selector! AVAudioSession::setPrefersNoInterruptionsFromSystemAlerts:error: not bound
+!missing-selector! AVContentKey::contentKeySpecifier not bound
+!missing-selector! AVContentKeyRequest::contentKey not bound
+!missing-selector! AVContentKeyRequest::contentKeySpecifier not bound
+!missing-selector! AVContentKeySpecifier::identifier not bound
+!missing-selector! AVContentKeySpecifier::initForKeySystem:identifier:options: not bound
+!missing-selector! AVContentKeySpecifier::keySystem not bound
+!missing-selector! AVContentKeySpecifier::options not bound
+!missing-selector! AVPlayerInterstitialEvent::date not bound
+!missing-selector! AVPlayerInterstitialEvent::interstitialTemplateItems not bound
+!missing-selector! AVPlayerInterstitialEvent::primaryItem not bound
+!missing-selector! AVPlayerInterstitialEvent::restrictions not bound
+!missing-selector! AVPlayerInterstitialEvent::resumptionOffset not bound
+!missing-selector! AVPlayerInterstitialEvent::templateItems not bound
+!missing-selector! AVPlayerInterstitialEvent::time not bound
+!missing-selector! AVPlayerInterstitialEventController::cancelCurrentEventWithResumptionOffset: not bound
+!missing-selector! AVPlayerInterstitialEventController::events not bound
+!missing-selector! AVPlayerInterstitialEventController::initWithPrimaryPlayer: not bound
+!missing-selector! AVPlayerInterstitialEventController::interstitialEvents not bound
+!missing-selector! AVPlayerInterstitialEventController::setEvents: not bound
+!missing-selector! AVPlayerInterstitialEventController::setInterstitialEvents: not bound
+!missing-selector! AVPlayerInterstitialEventObserver::currentEvent not bound
+!missing-selector! AVPlayerInterstitialEventObserver::events not bound
+!missing-selector! AVPlayerInterstitialEventObserver::initWithPrimaryPlayer: not bound
+!missing-selector! AVPlayerInterstitialEventObserver::interstitialEvents not bound
+!missing-selector! AVPlayerInterstitialEventObserver::interstitialPlayer not bound
+!missing-selector! AVPlayerInterstitialEventObserver::primaryPlayer not bound
+!missing-selector! AVPlayerItem::automaticallyHandlesInterstitialEvents not bound
+!missing-selector! AVPlayerItem::setAutomaticallyHandlesInterstitialEvents: not bound
+!missing-selector! AVPlayerItem::setVariantPreferences: not bound
+!missing-selector! AVPlayerItem::templatePlayerItem not bound
+!missing-selector! AVPlayerItem::variantPreferences not bound
+!missing-selector! AVSampleBufferDisplayLayer::outputObscuredDueToInsufficientExternalProtection not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::delaysRateChangeUntilHasSufficientMediaData not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::setDelaysRateChangeUntilHasSufficientMediaData: not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::setRate:time:atHostTime: not bound
+!missing-type! AVContentKey not bound
+!missing-type! AVContentKeySpecifier not bound
+!missing-type! AVPlayerInterstitialEvent not bound
+!missing-type! AVPlayerInterstitialEventController not bound
+!missing-type! AVPlayerInterstitialEventObserver not bound
diff --git a/tests/xtro-sharpie/iOS-AudioToolbox.todo b/tests/xtro-sharpie/iOS-AudioToolbox.todo
new file mode 100644
index 000000000000..2930d8a27b8d
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-AudioToolbox.todo
@@ -0,0 +1 @@
+!missing-enum-value! AudioComponentInstantiationOptions native value kAudioComponentInstantiation_LoadedRemotely = 2147483648 not bound
diff --git a/tests/xtro-sharpie/iOS-CallKit.todo b/tests/xtro-sharpie/iOS-CallKit.todo
new file mode 100644
index 000000000000..9b7937e9110f
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-CallKit.todo
@@ -0,0 +1,4 @@
+!missing-enum! CXErrorCodeNotificationServiceExtensionError not bound
+!missing-enum-value! CXErrorCode native value CXErrorCodeMissingVoIPBackgroundMode = 3 not bound
+!missing-field! CXErrorDomainNotificationServiceExtension not bound
+!missing-selector! +CXProvider::reportNewIncomingVoIPPushPayload:completion: not bound
diff --git a/tests/xtro-sharpie/iOS-ClassKit.todo b/tests/xtro-sharpie/iOS-ClassKit.todo
new file mode 100644
index 000000000000..20c544588568
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-ClassKit.todo
@@ -0,0 +1,5 @@
+!missing-selector! CLSActivity::removeAllActivityItems not bound
+!missing-selector! CLSContext::addNavigationChildContext: not bound
+!missing-selector! CLSContext::navigationChildContexts not bound
+!missing-selector! CLSContext::removeNavigationChildContext: not bound
+!missing-selector! CLSDataStore::fetchActivityForURL:completion: not bound
diff --git a/tests/xtro-sharpie/iOS-ExposureNotification.ignore b/tests/xtro-sharpie/iOS-ExposureNotification.ignore
index 326df0987277..446e1678c4b0 100644
--- a/tests/xtro-sharpie/iOS-ExposureNotification.ignore
+++ b/tests/xtro-sharpie/iOS-ExposureNotification.ignore
@@ -121,3 +121,10 @@
!missing-selector! ENManager::setInvalidationHandler: not bound
!missing-selector! +ENManager::authorizationStatus not bound
!missing-selector! ENManager::exposureNotificationEnabled not bound
+!missing-enum! ENActivityFlags not bound
+!missing-selector! ENManager::activityHandler not bound
+!missing-selector! ENManager::diagnosisKeysAvailableHandler not bound
+!missing-selector! ENManager::preAuthorizeDiagnosisKeysWithCompletionHandler: not bound
+!missing-selector! ENManager::requestPreAuthorizedDiagnosisKeysWithCompletionHandler: not bound
+!missing-selector! ENManager::setActivityHandler: not bound
+!missing-selector! ENManager::setDiagnosisKeysAvailableHandler: not bound
diff --git a/tests/xtro-sharpie/iOS-Foundation.todo b/tests/xtro-sharpie/iOS-Foundation.todo
index 3348f73b0b0f..956cba1f3c48 100644
--- a/tests/xtro-sharpie/iOS-Foundation.todo
+++ b/tests/xtro-sharpie/iOS-Foundation.todo
@@ -28,3 +28,6 @@
!missing-selector! NSOrderedSet::orderedSetByApplyingDifference: not bound
!missing-type! NSOrderedCollectionChange not bound
!missing-type! NSOrderedCollectionDifference not bound
+## appended from unclassified file
+!missing-field! NSProgressFileOperationKindUploading not bound
+!missing-field! NSURLUbiquitousItemIsExcludedFromSyncKey not bound
diff --git a/tests/xtro-sharpie/iOS-GameController.todo b/tests/xtro-sharpie/iOS-GameController.todo
new file mode 100644
index 000000000000..dad62fa666fa
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-GameController.todo
@@ -0,0 +1,16 @@
+!missing-enum! GCDualSenseAdaptiveTriggerMode not bound
+!missing-enum! GCDualSenseAdaptiveTriggerStatus not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::armPosition not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::mode not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeFeedbackWithStartPosition:resistiveStrength: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeOff not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeVibrationWithStartPosition:amplitude:frequency: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeWeaponWithStartPosition:endPosition:resistiveStrength: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::status not bound
+!missing-selector! GCDualSenseGamepad::leftTrigger not bound
+!missing-selector! GCDualSenseGamepad::rightTrigger not bound
+!missing-selector! GCDualSenseGamepad::touchpadButton not bound
+!missing-selector! GCDualSenseGamepad::touchpadPrimary not bound
+!missing-selector! GCDualSenseGamepad::touchpadSecondary not bound
+!missing-type! GCDualSenseAdaptiveTrigger not bound
+!missing-type! GCDualSenseGamepad not bound
diff --git a/tests/xtro-sharpie/iOS-GameKit.todo b/tests/xtro-sharpie/iOS-GameKit.todo
new file mode 100644
index 000000000000..95155b9c2dcb
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-GameKit.todo
@@ -0,0 +1,7 @@
+!missing-enum! GKFriendsAuthorizationStatus not bound
+!missing-enum-value! GKError native value GKErrorFriendListDenied = 102 not bound
+!missing-enum-value! GKError native value GKErrorFriendListDescriptionMissing = 100 not bound
+!missing-enum-value! GKError native value GKErrorFriendListRestricted = 101 not bound
+!missing-selector! GKLocalPlayer::loadFriends: not bound
+!missing-selector! GKLocalPlayer::loadFriendsAuthorizationStatus: not bound
+!missing-selector! GKLocalPlayer::loadFriendsWithIdentifiers:completionHandler: not bound
diff --git a/tests/xtro-sharpie/iOS-HomeKit.todo b/tests/xtro-sharpie/iOS-HomeKit.todo
new file mode 100644
index 000000000000..1b343e28e170
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-HomeKit.todo
@@ -0,0 +1 @@
+!missing-selector! HMCameraSource::aspectRatio not bound
diff --git a/tests/xtro-sharpie/iOS-Intents.todo b/tests/xtro-sharpie/iOS-Intents.todo
new file mode 100644
index 000000000000..f3b05b0f52c5
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-Intents.todo
@@ -0,0 +1,14 @@
+!deprecated-attribute-missing! INCallRecord::caller missing a [Deprecated] attribute
+!deprecated-attribute-missing! INCallRecord::initWithIdentifier:dateCreated:caller:callRecordType:callCapability:callDuration:unseen: missing a [Deprecated] attribute
+!deprecated-attribute-missing! INCallRecord::initWithIdentifier:dateCreated:caller:callRecordType:callCapability:callDuration:unseen:numberOfCalls: missing a [Deprecated] attribute
+!extra-designated-initializer! INCallRecord::initWithIdentifier:dateCreated:caller:callRecordType:callCapability:callDuration:unseen:numberOfCalls: is incorrectly decorated with an [DesignatedInitializer] attribute
+!missing-enum-value! INMediaReference native value INMediaReferenceMy = 2 not bound
+!missing-selector! INCallGroup::groupId not bound
+!missing-selector! INCallGroup::groupName not bound
+!missing-selector! INCallGroup::initWithGroupName:groupId: not bound
+!missing-selector! INCallRecord::initWithIdentifier:dateCreated:callRecordType:callCapability:callDuration:unseen: not bound
+!missing-selector! INCallRecord::initWithIdentifier:dateCreated:callRecordType:callCapability:callDuration:unseen:numberOfCalls: not bound
+!missing-selector! INCallRecord::initWithIdentifier:dateCreated:callRecordType:callCapability:callDuration:unseen:participants:numberOfCalls:isCallerIdBlocked: not bound
+!missing-selector! INCallRecord::isCallerIdBlocked not bound
+!missing-selector! INCallRecord::participants not bound
+!missing-type! INCallGroup not bound
diff --git a/tests/xtro-sharpie/iOS-MLCompute.todo b/tests/xtro-sharpie/iOS-MLCompute.todo
new file mode 100644
index 000000000000..22549e22966c
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-MLCompute.todo
@@ -0,0 +1,40 @@
+!missing-enum! MLCComparisonOperation not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeClamp = 20 not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeCount = 21 not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeHardSwish = 19 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationCount = 30 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationDivideNoNaN = 27 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMax = 29 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMin = 28 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMultiplyNoNaN = 26 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeAll = 9 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeAny = 8 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeCount = 10 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeL1Norm = 7 not bound
+!missing-pinvoke! MLCComparisonOperationDebugDescription is not bound
+!missing-selector! +MLCActivationLayer::clampLayerWithMinValue:maxValue: not bound
+!missing-selector! +MLCActivationLayer::hardSwishLayer not bound
+!missing-selector! +MLCComparisonLayer::layerWithOperation: not bound
+!missing-selector! +MLCGatherLayer::layerWithDimension: not bound
+!missing-selector! +MLCInstanceNormalizationLayer::layerWithFeatureChannelCount:mean:variance:beta:gamma:varianceEpsilon:momentum: not bound
+!missing-selector! +MLCReductionLayer::layerWithReductionType:dimensions: not bound
+!missing-selector! +MLCScatterLayer::layerWithDimension:reduceType: not bound
+!missing-selector! +MLCSelectionLayer::layer not bound
+!missing-selector! +MLCTensorData::dataWithBytesNoCopy:length:deallocator: not bound
+!missing-selector! MLCComparisonLayer::operation not bound
+!missing-selector! MLCGatherLayer::dimension not bound
+!missing-selector! MLCGraph::gatherWithDimension:source:indices: not bound
+!missing-selector! MLCGraph::scatterWithDimension:source:indices:copyFrom:reduceType: not bound
+!missing-selector! MLCGraph::selectWithSources:condition: not bound
+!missing-selector! MLCInferenceGraph::compileWithOptions:device:inputTensors:inputTensorsData: not bound
+!missing-selector! MLCInstanceNormalizationLayer::mean not bound
+!missing-selector! MLCInstanceNormalizationLayer::variance not bound
+!missing-selector! MLCReductionLayer::dimensions not bound
+!missing-selector! MLCReshapeLayer::shape not bound
+!missing-selector! MLCScatterLayer::dimension not bound
+!missing-selector! MLCScatterLayer::reduceType not bound
+!missing-selector! MLCTrainingGraph::compileWithOptions:device:inputTensors:inputTensorsData: not bound
+!missing-type! MLCComparisonLayer not bound
+!missing-type! MLCGatherLayer not bound
+!missing-type! MLCScatterLayer not bound
+!missing-type! MLCSelectionLayer not bound
diff --git a/tests/xtro-sharpie/iOS-MediaPlayer.todo b/tests/xtro-sharpie/iOS-MediaPlayer.todo
new file mode 100644
index 000000000000..1dbf334fd31d
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-MediaPlayer.todo
@@ -0,0 +1,2 @@
+!missing-field! MPMediaItemPropertyIsPreorder not bound
+!missing-selector! MPMediaItem::isPreorder not bound
diff --git a/tests/xtro-sharpie/iOS-PassKit.todo b/tests/xtro-sharpie/iOS-PassKit.todo
new file mode 100644
index 000000000000..6ff76ddb38fe
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-PassKit.todo
@@ -0,0 +1,4 @@
+!missing-enum! PKRadioTechnology not bound
+!missing-field! PKPaymentNetworkMir not bound
+!missing-selector! PKAddCarKeyPassConfiguration::setSupportedRadioTechnologies: not bound
+!missing-selector! PKAddCarKeyPassConfiguration::supportedRadioTechnologies not bound
diff --git a/tests/xtro-sharpie/iOS-Speech.todo b/tests/xtro-sharpie/iOS-Speech.todo
new file mode 100644
index 000000000000..13d5fd0b5a2e
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-Speech.todo
@@ -0,0 +1,7 @@
+!missing-selector! SFSpeechRecognitionMetadata::averagePauseDuration not bound
+!missing-selector! SFSpeechRecognitionMetadata::speakingRate not bound
+!missing-selector! SFSpeechRecognitionMetadata::speechDuration not bound
+!missing-selector! SFSpeechRecognitionMetadata::speechStartTimestamp not bound
+!missing-selector! SFSpeechRecognitionMetadata::voiceAnalytics not bound
+!missing-selector! SFSpeechRecognitionResult::speechRecognitionMetadata not bound
+!missing-type! SFSpeechRecognitionMetadata not bound
diff --git a/tests/xtro-sharpie/iOS-StoreKit.todo b/tests/xtro-sharpie/iOS-StoreKit.todo
new file mode 100644
index 000000000000..c039c4e35ddb
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-StoreKit.todo
@@ -0,0 +1,25 @@
+!missing-selector! +SKAdNetwork::endImpression:completionHandler: not bound
+!missing-selector! +SKAdNetwork::startImpression:completionHandler: not bound
+!missing-selector! SKAdImpression::adCampaignIdentifier not bound
+!missing-selector! SKAdImpression::adDescription not bound
+!missing-selector! SKAdImpression::adImpressionIdentifier not bound
+!missing-selector! SKAdImpression::adNetworkIdentifier not bound
+!missing-selector! SKAdImpression::adPurchaserName not bound
+!missing-selector! SKAdImpression::adType not bound
+!missing-selector! SKAdImpression::advertisedAppStoreItemIdentifier not bound
+!missing-selector! SKAdImpression::setAdCampaignIdentifier: not bound
+!missing-selector! SKAdImpression::setAdDescription: not bound
+!missing-selector! SKAdImpression::setAdImpressionIdentifier: not bound
+!missing-selector! SKAdImpression::setAdNetworkIdentifier: not bound
+!missing-selector! SKAdImpression::setAdPurchaserName: not bound
+!missing-selector! SKAdImpression::setAdType: not bound
+!missing-selector! SKAdImpression::setAdvertisedAppStoreItemIdentifier: not bound
+!missing-selector! SKAdImpression::setSignature: not bound
+!missing-selector! SKAdImpression::setSourceAppStoreItemIdentifier: not bound
+!missing-selector! SKAdImpression::setTimestamp: not bound
+!missing-selector! SKAdImpression::setVersion: not bound
+!missing-selector! SKAdImpression::signature not bound
+!missing-selector! SKAdImpression::sourceAppStoreItemIdentifier not bound
+!missing-selector! SKAdImpression::timestamp not bound
+!missing-selector! SKAdImpression::version not bound
+!missing-type! SKAdImpression not bound
diff --git a/tests/xtro-sharpie/iOS-UIKit.todo b/tests/xtro-sharpie/iOS-UIKit.todo
index 4b7894a0771c..fe3d7b12b605 100644
--- a/tests/xtro-sharpie/iOS-UIKit.todo
+++ b/tests/xtro-sharpie/iOS-UIKit.todo
@@ -16,3 +16,53 @@
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::snapshotForExpandingParentItemHandler not bound
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::willCollapseItemHandler not bound
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::willExpandItemHandler not bound
+## appended from unclassified file
+!missing-enum! UIListSeparatorVisibility not bound
+!missing-enum! UIPrintRenderingQuality not bound
+!missing-enum! UISplitViewControllerDisplayModeButtonVisibility not bound
+!missing-field! UIApplicationLaunchOptionsEventAttributionKey not bound
+!missing-field! UIApplicationOpenExternalURLOptionsEventAttributionKey not bound
+!missing-field! UIApplicationOpenURLOptionsEventAttributionKey not bound
+!missing-field! UIListSeparatorAutomaticInsets not bound
+!missing-selector! UICollectionLayoutListConfiguration::itemSeparatorHandler not bound
+!missing-selector! UICollectionLayoutListConfiguration::separatorConfiguration not bound
+!missing-selector! UICollectionLayoutListConfiguration::setItemSeparatorHandler: not bound
+!missing-selector! UICollectionLayoutListConfiguration::setSeparatorConfiguration: not bound
+!missing-selector! UIEventAttribution::destinationURL not bound
+!missing-selector! UIEventAttribution::initWithSourceIdentifier:destinationURL:sourceDescription:purchaser: not bound
+!missing-selector! UIEventAttribution::purchaser not bound
+!missing-selector! UIEventAttribution::reportEndpoint not bound
+!missing-selector! UIEventAttribution::sourceDescription not bound
+!missing-selector! UIEventAttribution::sourceIdentifier not bound
+!missing-selector! UIListSeparatorConfiguration::bottomSeparatorInsets not bound
+!missing-selector! UIListSeparatorConfiguration::bottomSeparatorVisibility not bound
+!missing-selector! UIListSeparatorConfiguration::color not bound
+!missing-selector! UIListSeparatorConfiguration::initWithListAppearance: not bound
+!missing-selector! UIListSeparatorConfiguration::multipleSelectionColor not bound
+!missing-selector! UIListSeparatorConfiguration::setBottomSeparatorInsets: not bound
+!missing-selector! UIListSeparatorConfiguration::setBottomSeparatorVisibility: not bound
+!missing-selector! UIListSeparatorConfiguration::setColor: not bound
+!missing-selector! UIListSeparatorConfiguration::setMultipleSelectionColor: not bound
+!missing-selector! UIListSeparatorConfiguration::setTopSeparatorInsets: not bound
+!missing-selector! UIListSeparatorConfiguration::setTopSeparatorVisibility: not bound
+!missing-selector! UIListSeparatorConfiguration::topSeparatorInsets not bound
+!missing-selector! UIListSeparatorConfiguration::topSeparatorVisibility not bound
+!missing-selector! UIPrinterDestination::displayName not bound
+!missing-selector! UIPrinterDestination::initWithURL: not bound
+!missing-selector! UIPrinterDestination::setDisplayName: not bound
+!missing-selector! UIPrinterDestination::setTxtRecord: not bound
+!missing-selector! UIPrinterDestination::setURL: not bound
+!missing-selector! UIPrinterDestination::txtRecord not bound
+!missing-selector! UIPrinterDestination::URL not bound
+!missing-selector! UIPrintPageRenderer::currentRenderingQualityForRequestedRenderingQuality: not bound
+!missing-selector! UIPrintServiceExtension::printerDestinationsForPrintInfo: not bound
+!missing-selector! UISceneOpenExternalURLOptions::eventAttribution not bound
+!missing-selector! UISceneOpenExternalURLOptions::setEventAttribution: not bound
+!missing-selector! UISceneOpenURLOptions::eventAttribution not bound
+!missing-selector! UISplitViewController::displayModeButtonVisibility not bound
+!missing-selector! UISplitViewController::setDisplayModeButtonVisibility: not bound
+!missing-type! UIEventAttribution not bound
+!missing-type! UIEventAttributionView not bound
+!missing-type! UIListSeparatorConfiguration not bound
+!missing-type! UIPrinterDestination not bound
+!missing-type! UIPrintServiceExtension not bound
diff --git a/tests/xtro-sharpie/iOS-VideoToolbox.todo b/tests/xtro-sharpie/iOS-VideoToolbox.todo
new file mode 100644
index 000000000000..c913b2a8b600
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-VideoToolbox.todo
@@ -0,0 +1,2 @@
+!missing-field! kVTCompressionPropertyKey_BaseLayerFrameRateFraction not bound
+!missing-field! kVTVideoEncoderSpecification_EnableLowLatencyRateControl not bound
diff --git a/tests/xtro-sharpie/iOS-WebKit.todo b/tests/xtro-sharpie/iOS-WebKit.todo
new file mode 100644
index 000000000000..6bb0226caf59
--- /dev/null
+++ b/tests/xtro-sharpie/iOS-WebKit.todo
@@ -0,0 +1,23 @@
+!missing-enum! WKDownloadRedirectPolicy not bound
+!missing-enum! WKMediaPlaybackState not bound
+!missing-enum-value! WKNavigationActionPolicy native value WKNavigationActionPolicyDownload = 2 not bound
+!missing-enum-value! WKNavigationResponsePolicy native value WKNavigationResponsePolicyDownload = 2 not bound
+!missing-protocol! WKDownloadDelegate not bound
+!missing-protocol-member! WKNavigationDelegate::webView:navigationAction:didBecomeDownload: not found
+!missing-protocol-member! WKNavigationDelegate::webView:navigationResponse:didBecomeDownload: not found
+!missing-selector! WKDownload::cancel: not bound
+!missing-selector! WKDownload::delegate not bound
+!missing-selector! WKDownload::originalRequest not bound
+!missing-selector! WKDownload::setDelegate: not bound
+!missing-selector! WKDownload::webView not bound
+!missing-selector! WKNavigationAction::shouldPerformDownload not bound
+!missing-selector! WKPreferences::setTextInteractionEnabled: not bound
+!missing-selector! WKPreferences::textInteractionEnabled not bound
+!missing-selector! WKWebView::closeAllMediaPresentations not bound
+!missing-selector! WKWebView::pauseAllMediaPlayback: not bound
+!missing-selector! WKWebView::requestMediaPlaybackState: not bound
+!missing-selector! WKWebView::resumeAllMediaPlayback: not bound
+!missing-selector! WKWebView::resumeDownloadFromResumeData:completionHandler: not bound
+!missing-selector! WKWebView::startDownloadUsingRequest:completionHandler: not bound
+!missing-selector! WKWebView::suspendAllMediaPlayback: not bound
+!missing-type! WKDownload not bound
diff --git a/tests/xtro-sharpie/macOS-AVFoundation.todo b/tests/xtro-sharpie/macOS-AVFoundation.todo
new file mode 100644
index 000000000000..887e0c00b022
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-AVFoundation.todo
@@ -0,0 +1,60 @@
+!missing-enum! AVAudioSessionInterruptionReason not bound
+!missing-enum! AVPlayerInterstitialEventRestrictions not bound
+!missing-enum! AVVariantPreferences not bound
+!missing-enum-value! AVAudioSessionCategoryOptions native value AVAudioSessionCategoryOptionOverrideMutedMicrophoneInterruption = 128 not bound
+!missing-field! AVPlayerInterstitialEventObserverCurrentEventDidChangeNotification not bound
+!missing-field! AVPlayerInterstitialEventObserverEventsDidChangeNotification not bound
+!missing-field! AVPlayerWaitingDuringInterstitialEventReason not bound
+!missing-field! AVSampleBufferDisplayLayerOutputObscuredDueToInsufficientExternalProtectionDidChangeNotification not bound
+!missing-pinvoke! AVSampleBufferAttachContentKey is not bound
+!missing-protocol-member! AVContentKeyRecipient::contentKeySession:didProvideContentKey: not found
+!missing-protocol-member! AVQueuedSampleBufferRendering::hasSufficientMediaDataForReliablePlaybackStart not found
+!missing-selector! +AVContentKeySpecifier::contentKeySpecifierForKeySystem:identifier:options: not bound
+!missing-selector! +AVPlayerInterstitialEvent::interstitialEventWithPrimaryItem:date:templateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::interstitialEventWithPrimaryItem:time:templateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::playerInterstitialEventWithPrimaryItem:date:interstitialTemplateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::playerInterstitialEventWithPrimaryItem:time:interstitialTemplateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEventController::interstitialEventControllerWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventController::playerInterstitialEventControllerWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventObserver::interstitialEventObserverWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventObserver::playerInterstitialEventObserverWithPrimaryPlayer: not bound
+!missing-selector! AVContentKey::contentKeySpecifier not bound
+!missing-selector! AVContentKeyRequest::contentKey not bound
+!missing-selector! AVContentKeyRequest::contentKeySpecifier not bound
+!missing-selector! AVContentKeySpecifier::identifier not bound
+!missing-selector! AVContentKeySpecifier::initForKeySystem:identifier:options: not bound
+!missing-selector! AVContentKeySpecifier::keySystem not bound
+!missing-selector! AVContentKeySpecifier::options not bound
+!missing-selector! AVPlayerInterstitialEvent::date not bound
+!missing-selector! AVPlayerInterstitialEvent::interstitialTemplateItems not bound
+!missing-selector! AVPlayerInterstitialEvent::primaryItem not bound
+!missing-selector! AVPlayerInterstitialEvent::restrictions not bound
+!missing-selector! AVPlayerInterstitialEvent::resumptionOffset not bound
+!missing-selector! AVPlayerInterstitialEvent::templateItems not bound
+!missing-selector! AVPlayerInterstitialEvent::time not bound
+!missing-selector! AVPlayerInterstitialEventController::cancelCurrentEventWithResumptionOffset: not bound
+!missing-selector! AVPlayerInterstitialEventController::events not bound
+!missing-selector! AVPlayerInterstitialEventController::initWithPrimaryPlayer: not bound
+!missing-selector! AVPlayerInterstitialEventController::interstitialEvents not bound
+!missing-selector! AVPlayerInterstitialEventController::setEvents: not bound
+!missing-selector! AVPlayerInterstitialEventController::setInterstitialEvents: not bound
+!missing-selector! AVPlayerInterstitialEventObserver::currentEvent not bound
+!missing-selector! AVPlayerInterstitialEventObserver::events not bound
+!missing-selector! AVPlayerInterstitialEventObserver::initWithPrimaryPlayer: not bound
+!missing-selector! AVPlayerInterstitialEventObserver::interstitialEvents not bound
+!missing-selector! AVPlayerInterstitialEventObserver::interstitialPlayer not bound
+!missing-selector! AVPlayerInterstitialEventObserver::primaryPlayer not bound
+!missing-selector! AVPlayerItem::automaticallyHandlesInterstitialEvents not bound
+!missing-selector! AVPlayerItem::setAutomaticallyHandlesInterstitialEvents: not bound
+!missing-selector! AVPlayerItem::setVariantPreferences: not bound
+!missing-selector! AVPlayerItem::templatePlayerItem not bound
+!missing-selector! AVPlayerItem::variantPreferences not bound
+!missing-selector! AVSampleBufferDisplayLayer::outputObscuredDueToInsufficientExternalProtection not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::delaysRateChangeUntilHasSufficientMediaData not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::setDelaysRateChangeUntilHasSufficientMediaData: not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::setRate:time:atHostTime: not bound
+!missing-type! AVContentKey not bound
+!missing-type! AVContentKeySpecifier not bound
+!missing-type! AVPlayerInterstitialEvent not bound
+!missing-type! AVPlayerInterstitialEventController not bound
+!missing-type! AVPlayerInterstitialEventObserver not bound
diff --git a/tests/xtro-sharpie/macOS-AudioToolbox.todo b/tests/xtro-sharpie/macOS-AudioToolbox.todo
new file mode 100644
index 000000000000..2930d8a27b8d
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-AudioToolbox.todo
@@ -0,0 +1 @@
+!missing-enum-value! AudioComponentInstantiationOptions native value kAudioComponentInstantiation_LoadedRemotely = 2147483648 not bound
diff --git a/tests/xtro-sharpie/macOS-CallKit.todo b/tests/xtro-sharpie/macOS-CallKit.todo
new file mode 100644
index 000000000000..49710d26fffa
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-CallKit.todo
@@ -0,0 +1 @@
+!missing-enum-value! CXErrorCode native value CXErrorCodeMissingVoIPBackgroundMode = 3 not bound
diff --git a/tests/xtro-sharpie/macOS-ClassKit.todo b/tests/xtro-sharpie/macOS-ClassKit.todo
new file mode 100644
index 000000000000..20c544588568
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-ClassKit.todo
@@ -0,0 +1,5 @@
+!missing-selector! CLSActivity::removeAllActivityItems not bound
+!missing-selector! CLSContext::addNavigationChildContext: not bound
+!missing-selector! CLSContext::navigationChildContexts not bound
+!missing-selector! CLSContext::removeNavigationChildContext: not bound
+!missing-selector! CLSDataStore::fetchActivityForURL:completion: not bound
diff --git a/tests/xtro-sharpie/macOS-DeviceCheck.todo b/tests/xtro-sharpie/macOS-DeviceCheck.todo
new file mode 100644
index 000000000000..ee0d7e651484
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-DeviceCheck.todo
@@ -0,0 +1,6 @@
+!missing-selector! +DCAppAttestService::sharedService not bound
+!missing-selector! DCAppAttestService::attestKey:clientDataHash:completionHandler: not bound
+!missing-selector! DCAppAttestService::generateAssertion:clientDataHash:completionHandler: not bound
+!missing-selector! DCAppAttestService::generateKeyWithCompletionHandler: not bound
+!missing-selector! DCAppAttestService::isSupported not bound
+!missing-type! DCAppAttestService not bound
diff --git a/tests/xtro-sharpie/macOS-FileProvider.ignore b/tests/xtro-sharpie/macOS-FileProvider.ignore
index 42643a791eea..059d35dfaa12 100644
--- a/tests/xtro-sharpie/macOS-FileProvider.ignore
+++ b/tests/xtro-sharpie/macOS-FileProvider.ignore
@@ -9,4 +9,3 @@
!extra-protocol-member! unexpected selector NSFileProviderItem::typeIdentifier found
## XAMCORE_4_0 -> not constant - iOS/tvOS/watchOS are different (and future updates might change the current value too)
-!missing-enum-value! NSFileProviderItemCapabilities native value NSFileProviderItemCapabilitiesAllowsAll = 127 not bound
diff --git a/tests/xtro-sharpie/macOS-FileProvider.todo b/tests/xtro-sharpie/macOS-FileProvider.todo
new file mode 100644
index 000000000000..fe3cde3d59d3
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-FileProvider.todo
@@ -0,0 +1,30 @@
+!missing-enum! NSFileProviderDomainTestingModes not bound
+!missing-enum! NSFileProviderTestingOperationSide not bound
+!missing-enum-value! NSFileProviderCreateItemOptions native value NSFileProviderCreateItemDeletionConflicted = 2 not bound
+!missing-enum-value! NSFileProviderError native value NSFileProviderErrorItemHasUnsyncedEdits = -2007 not bound
+!missing-enum-value! NSFileProviderError native value NSFileProviderErrorNonEvictableChildren = -2006 not bound
+!missing-enum-value! NSFileProviderItemCapabilities native value NSFileProviderItemCapabilitiesAllowsAll = 63 not bound
+!missing-enum-value! NSFileProviderItemCapabilities native value NSFileProviderItemCapabilitiesAllowsExcludingFromSync = 128 not bound
+!missing-field! NSFileProviderErrorCausedByErrorsKey not bound
+!missing-field! NSFileProviderMaterializedSetDidChange not bound
+!missing-field! NSFileProviderPendingSetDidChange not bound
+!missing-protocol! NSFileProviderDomainState not bound
+!missing-protocol! NSFileProviderPendingSetEnumerator not bound
+!missing-protocol! NSFileProviderTestingBounce not bound
+!missing-protocol! NSFileProviderTestingChildrenEnumeration not bound
+!missing-protocol! NSFileProviderTestingContentFetch not bound
+!missing-protocol! NSFileProviderTestingIngestion not bound
+!missing-protocol! NSFileProviderTestingLookup not bound
+!missing-protocol! NSFileProviderTestingOperation not bound
+!missing-protocol! NSFileProviderTestingPropagation not bound
+!missing-protocol-member! NSFileProviderReplicatedExtension::pendingItemsDidChangeWithCompletionHandler: not found
+!missing-selector! NSFileProviderDomain::setTestingModes: not bound
+!missing-selector! NSFileProviderDomain::testingModes not bound
+!missing-selector! NSFileProviderDomainVersion::compare: not bound
+!missing-selector! NSFileProviderDomainVersion::next not bound
+!missing-selector! NSFileProviderManager::enumeratorForPendingItems not bound
+!missing-selector! NSFileProviderManager::globalProgressForKind: not bound
+!missing-selector! NSFileProviderManager::listAvailableTestingOperationsWithError: not bound
+!missing-selector! NSFileProviderManager::runTestingOperations:error: not bound
+!missing-selector! NSFileProviderRequest::domainVersion not bound
+!missing-type! NSFileProviderDomainVersion not bound
diff --git a/tests/xtro-sharpie/macOS-Foundation.todo b/tests/xtro-sharpie/macOS-Foundation.todo
index 3348f73b0b0f..956cba1f3c48 100644
--- a/tests/xtro-sharpie/macOS-Foundation.todo
+++ b/tests/xtro-sharpie/macOS-Foundation.todo
@@ -28,3 +28,6 @@
!missing-selector! NSOrderedSet::orderedSetByApplyingDifference: not bound
!missing-type! NSOrderedCollectionChange not bound
!missing-type! NSOrderedCollectionDifference not bound
+## appended from unclassified file
+!missing-field! NSProgressFileOperationKindUploading not bound
+!missing-field! NSURLUbiquitousItemIsExcludedFromSyncKey not bound
diff --git a/tests/xtro-sharpie/macOS-GameController.todo b/tests/xtro-sharpie/macOS-GameController.todo
new file mode 100644
index 000000000000..dad62fa666fa
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-GameController.todo
@@ -0,0 +1,16 @@
+!missing-enum! GCDualSenseAdaptiveTriggerMode not bound
+!missing-enum! GCDualSenseAdaptiveTriggerStatus not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::armPosition not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::mode not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeFeedbackWithStartPosition:resistiveStrength: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeOff not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeVibrationWithStartPosition:amplitude:frequency: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeWeaponWithStartPosition:endPosition:resistiveStrength: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::status not bound
+!missing-selector! GCDualSenseGamepad::leftTrigger not bound
+!missing-selector! GCDualSenseGamepad::rightTrigger not bound
+!missing-selector! GCDualSenseGamepad::touchpadButton not bound
+!missing-selector! GCDualSenseGamepad::touchpadPrimary not bound
+!missing-selector! GCDualSenseGamepad::touchpadSecondary not bound
+!missing-type! GCDualSenseAdaptiveTrigger not bound
+!missing-type! GCDualSenseGamepad not bound
diff --git a/tests/xtro-sharpie/macOS-GameKit.todo b/tests/xtro-sharpie/macOS-GameKit.todo
new file mode 100644
index 000000000000..95155b9c2dcb
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-GameKit.todo
@@ -0,0 +1,7 @@
+!missing-enum! GKFriendsAuthorizationStatus not bound
+!missing-enum-value! GKError native value GKErrorFriendListDenied = 102 not bound
+!missing-enum-value! GKError native value GKErrorFriendListDescriptionMissing = 100 not bound
+!missing-enum-value! GKError native value GKErrorFriendListRestricted = 101 not bound
+!missing-selector! GKLocalPlayer::loadFriends: not bound
+!missing-selector! GKLocalPlayer::loadFriendsAuthorizationStatus: not bound
+!missing-selector! GKLocalPlayer::loadFriendsWithIdentifiers:completionHandler: not bound
diff --git a/tests/xtro-sharpie/macOS-Intents.todo b/tests/xtro-sharpie/macOS-Intents.todo
new file mode 100644
index 000000000000..cb8ff83ce122
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-Intents.todo
@@ -0,0 +1,4 @@
+!missing-selector! INCallGroup::groupId not bound
+!missing-selector! INCallGroup::groupName not bound
+!missing-selector! INCallGroup::initWithGroupName:groupId: not bound
+!missing-type! INCallGroup not bound
diff --git a/tests/xtro-sharpie/macOS-MLCompute.todo b/tests/xtro-sharpie/macOS-MLCompute.todo
new file mode 100644
index 000000000000..22549e22966c
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-MLCompute.todo
@@ -0,0 +1,40 @@
+!missing-enum! MLCComparisonOperation not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeClamp = 20 not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeCount = 21 not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeHardSwish = 19 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationCount = 30 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationDivideNoNaN = 27 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMax = 29 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMin = 28 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMultiplyNoNaN = 26 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeAll = 9 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeAny = 8 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeCount = 10 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeL1Norm = 7 not bound
+!missing-pinvoke! MLCComparisonOperationDebugDescription is not bound
+!missing-selector! +MLCActivationLayer::clampLayerWithMinValue:maxValue: not bound
+!missing-selector! +MLCActivationLayer::hardSwishLayer not bound
+!missing-selector! +MLCComparisonLayer::layerWithOperation: not bound
+!missing-selector! +MLCGatherLayer::layerWithDimension: not bound
+!missing-selector! +MLCInstanceNormalizationLayer::layerWithFeatureChannelCount:mean:variance:beta:gamma:varianceEpsilon:momentum: not bound
+!missing-selector! +MLCReductionLayer::layerWithReductionType:dimensions: not bound
+!missing-selector! +MLCScatterLayer::layerWithDimension:reduceType: not bound
+!missing-selector! +MLCSelectionLayer::layer not bound
+!missing-selector! +MLCTensorData::dataWithBytesNoCopy:length:deallocator: not bound
+!missing-selector! MLCComparisonLayer::operation not bound
+!missing-selector! MLCGatherLayer::dimension not bound
+!missing-selector! MLCGraph::gatherWithDimension:source:indices: not bound
+!missing-selector! MLCGraph::scatterWithDimension:source:indices:copyFrom:reduceType: not bound
+!missing-selector! MLCGraph::selectWithSources:condition: not bound
+!missing-selector! MLCInferenceGraph::compileWithOptions:device:inputTensors:inputTensorsData: not bound
+!missing-selector! MLCInstanceNormalizationLayer::mean not bound
+!missing-selector! MLCInstanceNormalizationLayer::variance not bound
+!missing-selector! MLCReductionLayer::dimensions not bound
+!missing-selector! MLCReshapeLayer::shape not bound
+!missing-selector! MLCScatterLayer::dimension not bound
+!missing-selector! MLCScatterLayer::reduceType not bound
+!missing-selector! MLCTrainingGraph::compileWithOptions:device:inputTensors:inputTensorsData: not bound
+!missing-type! MLCComparisonLayer not bound
+!missing-type! MLCGatherLayer not bound
+!missing-type! MLCScatterLayer not bound
+!missing-type! MLCSelectionLayer not bound
diff --git a/tests/xtro-sharpie/macOS-MediaPlayer.todo b/tests/xtro-sharpie/macOS-MediaPlayer.todo
new file mode 100644
index 000000000000..2b1b52f76021
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-MediaPlayer.todo
@@ -0,0 +1 @@
+!missing-field! MPMediaItemPropertyIsPreorder not bound
diff --git a/tests/xtro-sharpie/macOS-MetalPerformanceShadersGraph.todo b/tests/xtro-sharpie/macOS-MetalPerformanceShadersGraph.todo
index 081571e636b2..ff56a4f180f3 100644
--- a/tests/xtro-sharpie/macOS-MetalPerformanceShadersGraph.todo
+++ b/tests/xtro-sharpie/macOS-MetalPerformanceShadersGraph.todo
@@ -275,3 +275,10 @@
!missing-type! MPSGraphTensorData not bound
!missing-type! MPSGraphVariableOp not bound
!missing-selector! MPSGraph::constantWithScalar:dataType: not bound
+## appended from unclassified file
+!missing-enum! MPSGraphScatterMode not bound
+!missing-selector! MPSGraph::scatterNDWithUpdatesTensor:indicesTensor:shape:batchDimensions:mode:name: not bound
+!missing-selector! MPSGraph::sliceGradientTensor:fwdInShapeTensor:starts:ends:strides:name: not bound
+!missing-selector! MPSGraph::sliceGradientTensor:fwdInShapeTensor:starts:ends:strides:startMask:endMask:squeezeMask:name: not bound
+!missing-selector! MPSGraph::sliceTensor:starts:ends:strides:name: not bound
+!missing-selector! MPSGraph::sliceTensor:starts:ends:strides:startMask:endMask:squeezeMask:name: not bound
diff --git a/tests/xtro-sharpie/macOS-PassKit.todo b/tests/xtro-sharpie/macOS-PassKit.todo
new file mode 100644
index 000000000000..6ff76ddb38fe
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-PassKit.todo
@@ -0,0 +1,4 @@
+!missing-enum! PKRadioTechnology not bound
+!missing-field! PKPaymentNetworkMir not bound
+!missing-selector! PKAddCarKeyPassConfiguration::setSupportedRadioTechnologies: not bound
+!missing-selector! PKAddCarKeyPassConfiguration::supportedRadioTechnologies not bound
diff --git a/tests/xtro-sharpie/macOS-Speech.todo b/tests/xtro-sharpie/macOS-Speech.todo
new file mode 100644
index 000000000000..13d5fd0b5a2e
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-Speech.todo
@@ -0,0 +1,7 @@
+!missing-selector! SFSpeechRecognitionMetadata::averagePauseDuration not bound
+!missing-selector! SFSpeechRecognitionMetadata::speakingRate not bound
+!missing-selector! SFSpeechRecognitionMetadata::speechDuration not bound
+!missing-selector! SFSpeechRecognitionMetadata::speechStartTimestamp not bound
+!missing-selector! SFSpeechRecognitionMetadata::voiceAnalytics not bound
+!missing-selector! SFSpeechRecognitionResult::speechRecognitionMetadata not bound
+!missing-type! SFSpeechRecognitionMetadata not bound
diff --git a/tests/xtro-sharpie/macOS-VideoToolbox.todo b/tests/xtro-sharpie/macOS-VideoToolbox.todo
new file mode 100644
index 000000000000..c913b2a8b600
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-VideoToolbox.todo
@@ -0,0 +1,2 @@
+!missing-field! kVTCompressionPropertyKey_BaseLayerFrameRateFraction not bound
+!missing-field! kVTVideoEncoderSpecification_EnableLowLatencyRateControl not bound
diff --git a/tests/xtro-sharpie/macOS-WebKit.todo b/tests/xtro-sharpie/macOS-WebKit.todo
new file mode 100644
index 000000000000..6bb0226caf59
--- /dev/null
+++ b/tests/xtro-sharpie/macOS-WebKit.todo
@@ -0,0 +1,23 @@
+!missing-enum! WKDownloadRedirectPolicy not bound
+!missing-enum! WKMediaPlaybackState not bound
+!missing-enum-value! WKNavigationActionPolicy native value WKNavigationActionPolicyDownload = 2 not bound
+!missing-enum-value! WKNavigationResponsePolicy native value WKNavigationResponsePolicyDownload = 2 not bound
+!missing-protocol! WKDownloadDelegate not bound
+!missing-protocol-member! WKNavigationDelegate::webView:navigationAction:didBecomeDownload: not found
+!missing-protocol-member! WKNavigationDelegate::webView:navigationResponse:didBecomeDownload: not found
+!missing-selector! WKDownload::cancel: not bound
+!missing-selector! WKDownload::delegate not bound
+!missing-selector! WKDownload::originalRequest not bound
+!missing-selector! WKDownload::setDelegate: not bound
+!missing-selector! WKDownload::webView not bound
+!missing-selector! WKNavigationAction::shouldPerformDownload not bound
+!missing-selector! WKPreferences::setTextInteractionEnabled: not bound
+!missing-selector! WKPreferences::textInteractionEnabled not bound
+!missing-selector! WKWebView::closeAllMediaPresentations not bound
+!missing-selector! WKWebView::pauseAllMediaPlayback: not bound
+!missing-selector! WKWebView::requestMediaPlaybackState: not bound
+!missing-selector! WKWebView::resumeAllMediaPlayback: not bound
+!missing-selector! WKWebView::resumeDownloadFromResumeData:completionHandler: not bound
+!missing-selector! WKWebView::startDownloadUsingRequest:completionHandler: not bound
+!missing-selector! WKWebView::suspendAllMediaPlayback: not bound
+!missing-type! WKDownload not bound
diff --git a/tests/xtro-sharpie/tvOS-AVFoundation.todo b/tests/xtro-sharpie/tvOS-AVFoundation.todo
new file mode 100644
index 000000000000..cb5f2d1c9161
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-AVFoundation.todo
@@ -0,0 +1,62 @@
+!missing-enum! AVAudioSessionInterruptionReason not bound
+!missing-enum! AVPlayerInterstitialEventRestrictions not bound
+!missing-enum! AVVariantPreferences not bound
+!missing-enum-value! AVAudioSessionCategoryOptions native value AVAudioSessionCategoryOptionOverrideMutedMicrophoneInterruption = 128 not bound
+!missing-field! AVPlayerInterstitialEventObserverCurrentEventDidChangeNotification not bound
+!missing-field! AVPlayerInterstitialEventObserverEventsDidChangeNotification not bound
+!missing-field! AVPlayerWaitingDuringInterstitialEventReason not bound
+!missing-field! AVSampleBufferDisplayLayerOutputObscuredDueToInsufficientExternalProtectionDidChangeNotification not bound
+!missing-pinvoke! AVSampleBufferAttachContentKey is not bound
+!missing-protocol-member! AVContentKeyRecipient::contentKeySession:didProvideContentKey: not found
+!missing-protocol-member! AVQueuedSampleBufferRendering::hasSufficientMediaDataForReliablePlaybackStart not found
+!missing-selector! +AVContentKeySpecifier::contentKeySpecifierForKeySystem:identifier:options: not bound
+!missing-selector! +AVPlayerInterstitialEvent::interstitialEventWithPrimaryItem:date:templateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::interstitialEventWithPrimaryItem:time:templateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::playerInterstitialEventWithPrimaryItem:date:interstitialTemplateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::playerInterstitialEventWithPrimaryItem:time:interstitialTemplateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEventController::interstitialEventControllerWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventController::playerInterstitialEventControllerWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventObserver::interstitialEventObserverWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventObserver::playerInterstitialEventObserverWithPrimaryPlayer: not bound
+!missing-selector! AVAudioSession::prefersNoInterruptionsFromSystemAlerts not bound
+!missing-selector! AVAudioSession::setPrefersNoInterruptionsFromSystemAlerts:error: not bound
+!missing-selector! AVContentKey::contentKeySpecifier not bound
+!missing-selector! AVContentKeyRequest::contentKey not bound
+!missing-selector! AVContentKeyRequest::contentKeySpecifier not bound
+!missing-selector! AVContentKeySpecifier::identifier not bound
+!missing-selector! AVContentKeySpecifier::initForKeySystem:identifier:options: not bound
+!missing-selector! AVContentKeySpecifier::keySystem not bound
+!missing-selector! AVContentKeySpecifier::options not bound
+!missing-selector! AVPlayerInterstitialEvent::date not bound
+!missing-selector! AVPlayerInterstitialEvent::interstitialTemplateItems not bound
+!missing-selector! AVPlayerInterstitialEvent::primaryItem not bound
+!missing-selector! AVPlayerInterstitialEvent::restrictions not bound
+!missing-selector! AVPlayerInterstitialEvent::resumptionOffset not bound
+!missing-selector! AVPlayerInterstitialEvent::templateItems not bound
+!missing-selector! AVPlayerInterstitialEvent::time not bound
+!missing-selector! AVPlayerInterstitialEventController::cancelCurrentEventWithResumptionOffset: not bound
+!missing-selector! AVPlayerInterstitialEventController::events not bound
+!missing-selector! AVPlayerInterstitialEventController::initWithPrimaryPlayer: not bound
+!missing-selector! AVPlayerInterstitialEventController::interstitialEvents not bound
+!missing-selector! AVPlayerInterstitialEventController::setEvents: not bound
+!missing-selector! AVPlayerInterstitialEventController::setInterstitialEvents: not bound
+!missing-selector! AVPlayerInterstitialEventObserver::currentEvent not bound
+!missing-selector! AVPlayerInterstitialEventObserver::events not bound
+!missing-selector! AVPlayerInterstitialEventObserver::initWithPrimaryPlayer: not bound
+!missing-selector! AVPlayerInterstitialEventObserver::interstitialEvents not bound
+!missing-selector! AVPlayerInterstitialEventObserver::interstitialPlayer not bound
+!missing-selector! AVPlayerInterstitialEventObserver::primaryPlayer not bound
+!missing-selector! AVPlayerItem::automaticallyHandlesInterstitialEvents not bound
+!missing-selector! AVPlayerItem::setAutomaticallyHandlesInterstitialEvents: not bound
+!missing-selector! AVPlayerItem::setVariantPreferences: not bound
+!missing-selector! AVPlayerItem::templatePlayerItem not bound
+!missing-selector! AVPlayerItem::variantPreferences not bound
+!missing-selector! AVSampleBufferDisplayLayer::outputObscuredDueToInsufficientExternalProtection not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::delaysRateChangeUntilHasSufficientMediaData not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::setDelaysRateChangeUntilHasSufficientMediaData: not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::setRate:time:atHostTime: not bound
+!missing-type! AVContentKey not bound
+!missing-type! AVContentKeySpecifier not bound
+!missing-type! AVPlayerInterstitialEvent not bound
+!missing-type! AVPlayerInterstitialEventController not bound
+!missing-type! AVPlayerInterstitialEventObserver not bound
diff --git a/tests/xtro-sharpie/tvOS-AudioToolbox.todo b/tests/xtro-sharpie/tvOS-AudioToolbox.todo
new file mode 100644
index 000000000000..2930d8a27b8d
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-AudioToolbox.todo
@@ -0,0 +1 @@
+!missing-enum-value! AudioComponentInstantiationOptions native value kAudioComponentInstantiation_LoadedRemotely = 2147483648 not bound
diff --git a/tests/xtro-sharpie/tvOS-Foundation.todo b/tests/xtro-sharpie/tvOS-Foundation.todo
index 3348f73b0b0f..956cba1f3c48 100644
--- a/tests/xtro-sharpie/tvOS-Foundation.todo
+++ b/tests/xtro-sharpie/tvOS-Foundation.todo
@@ -28,3 +28,6 @@
!missing-selector! NSOrderedSet::orderedSetByApplyingDifference: not bound
!missing-type! NSOrderedCollectionChange not bound
!missing-type! NSOrderedCollectionDifference not bound
+## appended from unclassified file
+!missing-field! NSProgressFileOperationKindUploading not bound
+!missing-field! NSURLUbiquitousItemIsExcludedFromSyncKey not bound
diff --git a/tests/xtro-sharpie/tvOS-GameController.todo b/tests/xtro-sharpie/tvOS-GameController.todo
new file mode 100644
index 000000000000..dad62fa666fa
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-GameController.todo
@@ -0,0 +1,16 @@
+!missing-enum! GCDualSenseAdaptiveTriggerMode not bound
+!missing-enum! GCDualSenseAdaptiveTriggerStatus not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::armPosition not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::mode not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeFeedbackWithStartPosition:resistiveStrength: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeOff not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeVibrationWithStartPosition:amplitude:frequency: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::setModeWeaponWithStartPosition:endPosition:resistiveStrength: not bound
+!missing-selector! GCDualSenseAdaptiveTrigger::status not bound
+!missing-selector! GCDualSenseGamepad::leftTrigger not bound
+!missing-selector! GCDualSenseGamepad::rightTrigger not bound
+!missing-selector! GCDualSenseGamepad::touchpadButton not bound
+!missing-selector! GCDualSenseGamepad::touchpadPrimary not bound
+!missing-selector! GCDualSenseGamepad::touchpadSecondary not bound
+!missing-type! GCDualSenseAdaptiveTrigger not bound
+!missing-type! GCDualSenseGamepad not bound
diff --git a/tests/xtro-sharpie/tvOS-GameKit.todo b/tests/xtro-sharpie/tvOS-GameKit.todo
new file mode 100644
index 000000000000..95155b9c2dcb
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-GameKit.todo
@@ -0,0 +1,7 @@
+!missing-enum! GKFriendsAuthorizationStatus not bound
+!missing-enum-value! GKError native value GKErrorFriendListDenied = 102 not bound
+!missing-enum-value! GKError native value GKErrorFriendListDescriptionMissing = 100 not bound
+!missing-enum-value! GKError native value GKErrorFriendListRestricted = 101 not bound
+!missing-selector! GKLocalPlayer::loadFriends: not bound
+!missing-selector! GKLocalPlayer::loadFriendsAuthorizationStatus: not bound
+!missing-selector! GKLocalPlayer::loadFriendsWithIdentifiers:completionHandler: not bound
diff --git a/tests/xtro-sharpie/tvOS-HomeKit.todo b/tests/xtro-sharpie/tvOS-HomeKit.todo
new file mode 100644
index 000000000000..1b343e28e170
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-HomeKit.todo
@@ -0,0 +1 @@
+!missing-selector! HMCameraSource::aspectRatio not bound
diff --git a/tests/xtro-sharpie/tvOS-Intents.todo b/tests/xtro-sharpie/tvOS-Intents.todo
new file mode 100644
index 000000000000..cf566d3a8e88
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-Intents.todo
@@ -0,0 +1 @@
+!missing-enum-value! INMediaReference native value INMediaReferenceMy = 2 not bound
diff --git a/tests/xtro-sharpie/tvOS-MLCompute.todo b/tests/xtro-sharpie/tvOS-MLCompute.todo
new file mode 100644
index 000000000000..22549e22966c
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-MLCompute.todo
@@ -0,0 +1,40 @@
+!missing-enum! MLCComparisonOperation not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeClamp = 20 not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeCount = 21 not bound
+!missing-enum-value! MLCActivationType native value MLCActivationTypeHardSwish = 19 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationCount = 30 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationDivideNoNaN = 27 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMax = 29 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMin = 28 not bound
+!missing-enum-value! MLCArithmeticOperation native value MLCArithmeticOperationMultiplyNoNaN = 26 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeAll = 9 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeAny = 8 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeCount = 10 not bound
+!missing-enum-value! MLCReductionType native value MLCReductionTypeL1Norm = 7 not bound
+!missing-pinvoke! MLCComparisonOperationDebugDescription is not bound
+!missing-selector! +MLCActivationLayer::clampLayerWithMinValue:maxValue: not bound
+!missing-selector! +MLCActivationLayer::hardSwishLayer not bound
+!missing-selector! +MLCComparisonLayer::layerWithOperation: not bound
+!missing-selector! +MLCGatherLayer::layerWithDimension: not bound
+!missing-selector! +MLCInstanceNormalizationLayer::layerWithFeatureChannelCount:mean:variance:beta:gamma:varianceEpsilon:momentum: not bound
+!missing-selector! +MLCReductionLayer::layerWithReductionType:dimensions: not bound
+!missing-selector! +MLCScatterLayer::layerWithDimension:reduceType: not bound
+!missing-selector! +MLCSelectionLayer::layer not bound
+!missing-selector! +MLCTensorData::dataWithBytesNoCopy:length:deallocator: not bound
+!missing-selector! MLCComparisonLayer::operation not bound
+!missing-selector! MLCGatherLayer::dimension not bound
+!missing-selector! MLCGraph::gatherWithDimension:source:indices: not bound
+!missing-selector! MLCGraph::scatterWithDimension:source:indices:copyFrom:reduceType: not bound
+!missing-selector! MLCGraph::selectWithSources:condition: not bound
+!missing-selector! MLCInferenceGraph::compileWithOptions:device:inputTensors:inputTensorsData: not bound
+!missing-selector! MLCInstanceNormalizationLayer::mean not bound
+!missing-selector! MLCInstanceNormalizationLayer::variance not bound
+!missing-selector! MLCReductionLayer::dimensions not bound
+!missing-selector! MLCReshapeLayer::shape not bound
+!missing-selector! MLCScatterLayer::dimension not bound
+!missing-selector! MLCScatterLayer::reduceType not bound
+!missing-selector! MLCTrainingGraph::compileWithOptions:device:inputTensors:inputTensorsData: not bound
+!missing-type! MLCComparisonLayer not bound
+!missing-type! MLCGatherLayer not bound
+!missing-type! MLCScatterLayer not bound
+!missing-type! MLCSelectionLayer not bound
diff --git a/tests/xtro-sharpie/tvOS-MediaPlayer.todo b/tests/xtro-sharpie/tvOS-MediaPlayer.todo
new file mode 100644
index 000000000000..1dbf334fd31d
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-MediaPlayer.todo
@@ -0,0 +1,2 @@
+!missing-field! MPMediaItemPropertyIsPreorder not bound
+!missing-selector! MPMediaItem::isPreorder not bound
diff --git a/tests/xtro-sharpie/tvOS-UIKit.todo b/tests/xtro-sharpie/tvOS-UIKit.todo
index 4b7894a0771c..407d5c6f4703 100644
--- a/tests/xtro-sharpie/tvOS-UIKit.todo
+++ b/tests/xtro-sharpie/tvOS-UIKit.todo
@@ -16,3 +16,9 @@
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::snapshotForExpandingParentItemHandler not bound
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::willCollapseItemHandler not bound
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::willExpandItemHandler not bound
+## appended from unclassified file
+!missing-enum! UIListSeparatorVisibility not bound
+!missing-enum! UIPrintRenderingQuality not bound
+!missing-enum! UISplitViewControllerDisplayModeButtonVisibility not bound
+!missing-selector! UISplitViewController::displayModeButtonVisibility not bound
+!missing-selector! UISplitViewController::setDisplayModeButtonVisibility: not bound
diff --git a/tests/xtro-sharpie/tvOS-VideoToolbox.todo b/tests/xtro-sharpie/tvOS-VideoToolbox.todo
new file mode 100644
index 000000000000..c913b2a8b600
--- /dev/null
+++ b/tests/xtro-sharpie/tvOS-VideoToolbox.todo
@@ -0,0 +1,2 @@
+!missing-field! kVTCompressionPropertyKey_BaseLayerFrameRateFraction not bound
+!missing-field! kVTVideoEncoderSpecification_EnableLowLatencyRateControl not bound
diff --git a/tests/xtro-sharpie/watchOS-AVFoundation.todo b/tests/xtro-sharpie/watchOS-AVFoundation.todo
new file mode 100644
index 000000000000..dd349c3fa223
--- /dev/null
+++ b/tests/xtro-sharpie/watchOS-AVFoundation.todo
@@ -0,0 +1,61 @@
+!missing-enum! AVAudioSessionInterruptionReason not bound
+!missing-enum! AVPlayerInterstitialEventRestrictions not bound
+!missing-enum! AVVariantPreferences not bound
+!missing-enum-value! AVAudioSessionCategoryOptions native value AVAudioSessionCategoryOptionOverrideMutedMicrophoneInterruption = 128 not bound
+!missing-field! AVAudioSessionInterruptionReasonKey not bound
+!missing-field! AVPlayerInterstitialEventObserverCurrentEventDidChangeNotification not bound
+!missing-field! AVPlayerInterstitialEventObserverEventsDidChangeNotification not bound
+!missing-field! AVPlayerWaitingDuringInterstitialEventReason not bound
+!missing-pinvoke! AVSampleBufferAttachContentKey is not bound
+!missing-protocol-member! AVContentKeyRecipient::contentKeySession:didProvideContentKey: not found
+!missing-protocol-member! AVQueuedSampleBufferRendering::hasSufficientMediaDataForReliablePlaybackStart not found
+!missing-selector! +AVContentKeySpecifier::contentKeySpecifierForKeySystem:identifier:options: not bound
+!missing-selector! +AVPlayerInterstitialEvent::interstitialEventWithPrimaryItem:date:templateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::interstitialEventWithPrimaryItem:time:templateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::playerInterstitialEventWithPrimaryItem:date:interstitialTemplateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEvent::playerInterstitialEventWithPrimaryItem:time:interstitialTemplateItems:restrictions:resumptionOffset: not bound
+!missing-selector! +AVPlayerInterstitialEventController::interstitialEventControllerWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventController::playerInterstitialEventControllerWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventObserver::interstitialEventObserverWithPrimaryPlayer: not bound
+!missing-selector! +AVPlayerInterstitialEventObserver::playerInterstitialEventObserverWithPrimaryPlayer: not bound
+!missing-selector! AVAudioSession::prefersNoInterruptionsFromSystemAlerts not bound
+!missing-selector! AVAudioSession::setPrefersNoInterruptionsFromSystemAlerts:error: not bound
+!missing-selector! AVContentKey::contentKeySpecifier not bound
+!missing-selector! AVContentKeyRequest::contentKey not bound
+!missing-selector! AVContentKeyRequest::contentKeySpecifier not bound
+!missing-selector! AVContentKeySpecifier::identifier not bound
+!missing-selector! AVContentKeySpecifier::initForKeySystem:identifier:options: not bound
+!missing-selector! AVContentKeySpecifier::keySystem not bound
+!missing-selector! AVContentKeySpecifier::options not bound
+!missing-selector! AVPlayerInterstitialEvent::date not bound
+!missing-selector! AVPlayerInterstitialEvent::interstitialTemplateItems not bound
+!missing-selector! AVPlayerInterstitialEvent::primaryItem not bound
+!missing-selector! AVPlayerInterstitialEvent::restrictions not bound
+!missing-selector! AVPlayerInterstitialEvent::resumptionOffset not bound
+!missing-selector! AVPlayerInterstitialEvent::templateItems not bound
+!missing-selector! AVPlayerInterstitialEvent::time not bound
+!missing-selector! AVPlayerInterstitialEventController::cancelCurrentEventWithResumptionOffset: not bound
+!missing-selector! AVPlayerInterstitialEventController::events not bound
+!missing-selector! AVPlayerInterstitialEventController::initWithPrimaryPlayer: not bound
+!missing-selector! AVPlayerInterstitialEventController::interstitialEvents not bound
+!missing-selector! AVPlayerInterstitialEventController::setEvents: not bound
+!missing-selector! AVPlayerInterstitialEventController::setInterstitialEvents: not bound
+!missing-selector! AVPlayerInterstitialEventObserver::currentEvent not bound
+!missing-selector! AVPlayerInterstitialEventObserver::events not bound
+!missing-selector! AVPlayerInterstitialEventObserver::initWithPrimaryPlayer: not bound
+!missing-selector! AVPlayerInterstitialEventObserver::interstitialEvents not bound
+!missing-selector! AVPlayerInterstitialEventObserver::interstitialPlayer not bound
+!missing-selector! AVPlayerInterstitialEventObserver::primaryPlayer not bound
+!missing-selector! AVPlayerItem::automaticallyHandlesInterstitialEvents not bound
+!missing-selector! AVPlayerItem::setAutomaticallyHandlesInterstitialEvents: not bound
+!missing-selector! AVPlayerItem::setVariantPreferences: not bound
+!missing-selector! AVPlayerItem::templatePlayerItem not bound
+!missing-selector! AVPlayerItem::variantPreferences not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::delaysRateChangeUntilHasSufficientMediaData not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::setDelaysRateChangeUntilHasSufficientMediaData: not bound
+!missing-selector! AVSampleBufferRenderSynchronizer::setRate:time:atHostTime: not bound
+!missing-type! AVContentKey not bound
+!missing-type! AVContentKeySpecifier not bound
+!missing-type! AVPlayerInterstitialEvent not bound
+!missing-type! AVPlayerInterstitialEventController not bound
+!missing-type! AVPlayerInterstitialEventObserver not bound
diff --git a/tests/xtro-sharpie/watchOS-Foundation.todo b/tests/xtro-sharpie/watchOS-Foundation.todo
index 3348f73b0b0f..956cba1f3c48 100644
--- a/tests/xtro-sharpie/watchOS-Foundation.todo
+++ b/tests/xtro-sharpie/watchOS-Foundation.todo
@@ -28,3 +28,6 @@
!missing-selector! NSOrderedSet::orderedSetByApplyingDifference: not bound
!missing-type! NSOrderedCollectionChange not bound
!missing-type! NSOrderedCollectionDifference not bound
+## appended from unclassified file
+!missing-field! NSProgressFileOperationKindUploading not bound
+!missing-field! NSURLUbiquitousItemIsExcludedFromSyncKey not bound
diff --git a/tests/xtro-sharpie/watchOS-GameKit.todo b/tests/xtro-sharpie/watchOS-GameKit.todo
new file mode 100644
index 000000000000..95155b9c2dcb
--- /dev/null
+++ b/tests/xtro-sharpie/watchOS-GameKit.todo
@@ -0,0 +1,7 @@
+!missing-enum! GKFriendsAuthorizationStatus not bound
+!missing-enum-value! GKError native value GKErrorFriendListDenied = 102 not bound
+!missing-enum-value! GKError native value GKErrorFriendListDescriptionMissing = 100 not bound
+!missing-enum-value! GKError native value GKErrorFriendListRestricted = 101 not bound
+!missing-selector! GKLocalPlayer::loadFriends: not bound
+!missing-selector! GKLocalPlayer::loadFriendsAuthorizationStatus: not bound
+!missing-selector! GKLocalPlayer::loadFriendsWithIdentifiers:completionHandler: not bound
diff --git a/tests/xtro-sharpie/watchOS-HomeKit.todo b/tests/xtro-sharpie/watchOS-HomeKit.todo
new file mode 100644
index 000000000000..1b343e28e170
--- /dev/null
+++ b/tests/xtro-sharpie/watchOS-HomeKit.todo
@@ -0,0 +1 @@
+!missing-selector! HMCameraSource::aspectRatio not bound
diff --git a/tests/xtro-sharpie/watchOS-Intents.todo b/tests/xtro-sharpie/watchOS-Intents.todo
new file mode 100644
index 000000000000..f3b05b0f52c5
--- /dev/null
+++ b/tests/xtro-sharpie/watchOS-Intents.todo
@@ -0,0 +1,14 @@
+!deprecated-attribute-missing! INCallRecord::caller missing a [Deprecated] attribute
+!deprecated-attribute-missing! INCallRecord::initWithIdentifier:dateCreated:caller:callRecordType:callCapability:callDuration:unseen: missing a [Deprecated] attribute
+!deprecated-attribute-missing! INCallRecord::initWithIdentifier:dateCreated:caller:callRecordType:callCapability:callDuration:unseen:numberOfCalls: missing a [Deprecated] attribute
+!extra-designated-initializer! INCallRecord::initWithIdentifier:dateCreated:caller:callRecordType:callCapability:callDuration:unseen:numberOfCalls: is incorrectly decorated with an [DesignatedInitializer] attribute
+!missing-enum-value! INMediaReference native value INMediaReferenceMy = 2 not bound
+!missing-selector! INCallGroup::groupId not bound
+!missing-selector! INCallGroup::groupName not bound
+!missing-selector! INCallGroup::initWithGroupName:groupId: not bound
+!missing-selector! INCallRecord::initWithIdentifier:dateCreated:callRecordType:callCapability:callDuration:unseen: not bound
+!missing-selector! INCallRecord::initWithIdentifier:dateCreated:callRecordType:callCapability:callDuration:unseen:numberOfCalls: not bound
+!missing-selector! INCallRecord::initWithIdentifier:dateCreated:callRecordType:callCapability:callDuration:unseen:participants:numberOfCalls:isCallerIdBlocked: not bound
+!missing-selector! INCallRecord::isCallerIdBlocked not bound
+!missing-selector! INCallRecord::participants not bound
+!missing-type! INCallGroup not bound
diff --git a/tests/xtro-sharpie/watchOS-MediaPlayer.todo b/tests/xtro-sharpie/watchOS-MediaPlayer.todo
new file mode 100644
index 000000000000..2b1b52f76021
--- /dev/null
+++ b/tests/xtro-sharpie/watchOS-MediaPlayer.todo
@@ -0,0 +1 @@
+!missing-field! MPMediaItemPropertyIsPreorder not bound
diff --git a/tests/xtro-sharpie/watchOS-PassKit.todo b/tests/xtro-sharpie/watchOS-PassKit.todo
new file mode 100644
index 000000000000..b3bbfc5c8ec9
--- /dev/null
+++ b/tests/xtro-sharpie/watchOS-PassKit.todo
@@ -0,0 +1,2 @@
+!missing-enum! PKRadioTechnology not bound
+!missing-field! PKPaymentNetworkMir not bound
diff --git a/tools/devops/automation/templates/build/stage.yml b/tools/devops/automation/templates/build/stage.yml
index 1788c5c95a84..e66810a92fbc 100644
--- a/tools/devops/automation/templates/build/stage.yml
+++ b/tools/devops/automation/templates/build/stage.yml
@@ -69,8 +69,9 @@ jobs:
name: $(AgentPoolComputed)
demands:
- Agent.OS -equals Darwin
- - Agent.OSVersion -equals 10.15
- - macios_image -equals v1
+ - Agent.OSVersion -equals 10.16
+ - macios_image -equals v2
+ - XcodeChannel -equals Beta
workspace:
clean: all
diff --git a/tools/mmp/driver.cs b/tools/mmp/driver.cs
index 97c6eda884dd..ec2e8fcaf58c 100644
--- a/tools/mmp/driver.cs
+++ b/tools/mmp/driver.cs
@@ -211,6 +211,12 @@ static int Main2 (string [] args)
native_references.Add (v);
if (v.EndsWith (".framework", true, CultureInfo.InvariantCulture))
App.Frameworks.Add (v);
+ else {
+ // allow specifying the library inside the framework directory
+ var p = Path.GetDirectoryName (v);
+ if (p.EndsWith (".framework", true, CultureInfo.InvariantCulture))
+ App.Frameworks.Add (p);
+ }
}
},
{ "custom_bundle_name=", "Specify a custom name for the MonoBundle folder.", v => App.CustomBundleName = v, true }, // Hidden hack for "universal binaries"
@@ -1267,6 +1273,10 @@ static void ProcessNativeLibrary (HashSet processed, string library, Lis
// If we're passed in a framework, ignore
if (App.Frameworks.Contains (library))
return;
+ // Frameworks don't include the lib name, e.g. `../foo.framework` not `../foo.framework/foo` so check again
+ string path = Path.GetDirectoryName (library);
+ if (App.Frameworks.Contains (path))
+ return;
// We need to check both the name and the shortened name, since we might get passed:
// full path - /foo/bar/libFoo.dylib
@@ -1289,7 +1299,6 @@ static void ProcessNativeLibrary (HashSet processed, string library, Lis
src = monoDirPath;
// Now let's check in path with our libName
- string path = Path.GetDirectoryName (library);
if (src == null && !String.IsNullOrEmpty (path)) {
string pathWithLibName = Path.Combine (path, name);
if (File.Exists (pathWithLibName))