@@ -233,7 +233,12 @@ TBDGenVisitor::parsePreviousModuleInstallNameMap() {
233233}
234234
235235static LinkerPlatformId
236- getLinkerPlatformId (OriginallyDefinedInAttr::ActiveVersion Ver) {
236+ getLinkerPlatformId (OriginallyDefinedInAttr::ActiveVersion Ver,
237+ ASTContext &Ctx) {
238+ auto target =
239+ Ver.ForTargetVariant ? Ctx.LangOpts .TargetVariant : Ctx.LangOpts .Target ;
240+ bool isSimulator = target ? target->isSimulatorEnvironment () : false ;
241+
237242 switch (Ver.Platform ) {
238243 case swift::PlatformKind::none:
239244 llvm_unreachable (" cannot find platform kind" );
@@ -243,16 +248,16 @@ getLinkerPlatformId(OriginallyDefinedInAttr::ActiveVersion Ver) {
243248 llvm_unreachable (" not used for this platform" );
244249 case swift::PlatformKind::iOS:
245250 case swift::PlatformKind::iOSApplicationExtension:
246- return Ver.IsSimulator ? LinkerPlatformId::iOS_sim:
247- LinkerPlatformId::iOS;
251+ if (target && target->isMacCatalystEnvironment ())
252+ return LinkerPlatformId::macCatalyst;
253+ return isSimulator ? LinkerPlatformId::iOS_sim : LinkerPlatformId::iOS;
248254 case swift::PlatformKind::tvOS:
249255 case swift::PlatformKind::tvOSApplicationExtension:
250- return Ver.IsSimulator ? LinkerPlatformId::tvOS_sim:
251- LinkerPlatformId::tvOS;
256+ return isSimulator ? LinkerPlatformId::tvOS_sim : LinkerPlatformId::tvOS;
252257 case swift::PlatformKind::watchOS:
253258 case swift::PlatformKind::watchOSApplicationExtension:
254- return Ver. IsSimulator ? LinkerPlatformId::watchOS_sim:
255- LinkerPlatformId::watchOS;
259+ return isSimulator ? LinkerPlatformId::watchOS_sim
260+ : LinkerPlatformId::watchOS;
256261 case swift::PlatformKind::macOS:
257262 case swift::PlatformKind::macOSApplicationExtension:
258263 return LinkerPlatformId::macOS;
@@ -264,8 +269,9 @@ getLinkerPlatformId(OriginallyDefinedInAttr::ActiveVersion Ver) {
264269}
265270
266271static StringRef
267- getLinkerPlatformName (OriginallyDefinedInAttr::ActiveVersion Ver) {
268- return getLinkerPlatformName ((uint8_t )getLinkerPlatformId (Ver));
272+ getLinkerPlatformName (OriginallyDefinedInAttr::ActiveVersion Ver,
273+ ASTContext &Ctx) {
274+ return getLinkerPlatformName (getLinkerPlatformId (Ver, Ctx));
269275}
270276
271277// / Find the most relevant introducing version of the decl stack we have visited
@@ -313,17 +319,17 @@ void TBDGenVisitor::addLinkerDirectiveSymbolsLdPrevious(
313319 // so we don't need the linker directives.
314320 if (*IntroVer >= Ver.Version )
315321 continue ;
316- auto PlatformNumber = getLinkerPlatformId (Ver);
322+ auto PlatformNumber = getLinkerPlatformId (Ver, Ctx );
317323 auto It = previousInstallNameMap->find (Ver.ModuleName .str ());
318324 if (It == previousInstallNameMap->end ()) {
319325 Ctx.Diags .diagnose (SourceLoc (), diag::cannot_find_install_name,
320- Ver.ModuleName , getLinkerPlatformName (Ver));
326+ Ver.ModuleName , getLinkerPlatformName (Ver, Ctx ));
321327 continue ;
322328 }
323329 auto InstallName = It->second .getInstallName (PlatformNumber);
324330 if (InstallName.empty ()) {
325331 Ctx.Diags .diagnose (SourceLoc (), diag::cannot_find_install_name,
326- Ver.ModuleName , getLinkerPlatformName (Ver));
332+ Ver.ModuleName , getLinkerPlatformName (Ver, Ctx ));
327333 continue ;
328334 }
329335 llvm::SmallString<64 > Buffer;
0 commit comments