r339829 - [Darwin Driver] Fix Simulator builtins and test cases

Chris Bieneman via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 15 15:50:06 PDT 2018


Author: cbieneman
Date: Wed Aug 15 15:50:06 2018
New Revision: 339829

URL: http://llvm.org/viewvc/llvm-project?rev=339829&view=rev
Log:
[Darwin Driver] Fix Simulator builtins and test cases

In r339807, I broke linking the builtins libraries for simulator targets, which itself was bad, but turns out it was all completely untested and marked with FIXME in the test suite.

This fixes all the test cases so they actually work, and fixes the bug I introduced in r339807.

Added:
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_tvos.a
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_watchos.a
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.ios.a
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.osx.a
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_tvos.a
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_watchos.a
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.tvos.a
    cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.watchos.a
Modified:
    cfe/trunk/lib/Driver/ToolChains/Darwin.cpp
    cfe/trunk/lib/Driver/ToolChains/Darwin.h
    cfe/trunk/test/Driver/darwin-ld.c

Modified: cfe/trunk/lib/Driver/ToolChains/Darwin.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Darwin.cpp?rev=339829&r1=339828&r2=339829&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/ToolChains/Darwin.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Darwin.cpp Wed Aug 15 15:50:06 2018
@@ -916,8 +916,10 @@ void MachO::AddLinkRuntimeLib(const ArgL
     DarwinLibName += Component;
     if (!(Opts & RLO_IsEmbedded))
       DarwinLibName += "_";
-  }
-  DarwinLibName += getOSLibraryNameSuffix();
+    DarwinLibName += getOSLibraryNameSuffix();
+  } else
+    DarwinLibName += getOSLibraryNameSuffix(true);
+
   DarwinLibName += IsShared ? "_dynamic.dylib" : ".a";
   SmallString<128> Dir(getDriver().ResourceDir);
   llvm::sys::path::append(
@@ -983,16 +985,19 @@ StringRef Darwin::getSDKName(StringRef i
   return "";
 }
 
-StringRef Darwin::getOSLibraryNameSuffix() const {
-  switch(TargetPlatform) {
+StringRef Darwin::getOSLibraryNameSuffix(bool IgnoreSim) const {
+  switch (TargetPlatform) {
   case DarwinPlatformKind::MacOS:
     return "osx";
   case DarwinPlatformKind::IPhoneOS:
-    return TargetEnvironment == NativeEnvironment ? "ios" : "iossim";
+    return TargetEnvironment == NativeEnvironment || IgnoreSim ? "ios"
+                                                               : "iossim";
   case DarwinPlatformKind::TvOS:
-    return TargetEnvironment == NativeEnvironment ? "tvos" : "tvossim";
+    return TargetEnvironment == NativeEnvironment || IgnoreSim ? "tvos"
+                                                               : "tvossim";
   case DarwinPlatformKind::WatchOS:
-    return TargetEnvironment == NativeEnvironment ? "watchos" : "watchossim";
+    return TargetEnvironment == NativeEnvironment || IgnoreSim ? "watchos"
+                                                               : "watchossim";
   }
   llvm_unreachable("Unsupported platform");
 }

Modified: cfe/trunk/lib/Driver/ToolChains/Darwin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Darwin.h?rev=339829&r1=339828&r2=339829&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/ToolChains/Darwin.h (original)
+++ cfe/trunk/lib/Driver/ToolChains/Darwin.h Wed Aug 15 15:50:06 2018
@@ -252,7 +252,9 @@ public:
     return llvm::ExceptionHandling::None;
   }
 
-  virtual StringRef getOSLibraryNameSuffix() const { return ""; }
+  virtual StringRef getOSLibraryNameSuffix(bool IgnoreSim = false) const {
+    return "";
+  }
 
   /// }
 };
@@ -420,7 +422,7 @@ protected:
                              Action::OffloadKind DeviceOffloadKind) const override;
 
   StringRef getPlatformFamily() const;
-  StringRef getOSLibraryNameSuffix() const override;
+  StringRef getOSLibraryNameSuffix(bool IgnoreSim = false) const override;
 
 public:
   static StringRef getSDKName(StringRef isysroot);

Added: cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_tvos.a
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_tvos.a?rev=339829&view=auto
==============================================================================
    (empty)

Added: cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_watchos.a
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_watchos.a?rev=339829&view=auto
==============================================================================
    (empty)

Added: cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.ios.a
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.ios.a?rev=339829&view=auto
==============================================================================
    (empty)

Added: cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.osx.a
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.osx.a?rev=339829&view=auto
==============================================================================
    (empty)

Added: cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_tvos.a
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_tvos.a?rev=339829&view=auto
==============================================================================
    (empty)

Added: cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_watchos.a
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_watchos.a?rev=339829&view=auto
==============================================================================
    (empty)

Added: cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.tvos.a
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.tvos.a?rev=339829&view=auto
==============================================================================
    (empty)

Added: cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.watchos.a
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.watchos.a?rev=339829&view=auto
==============================================================================
    (empty)

Modified: cfe/trunk/test/Driver/darwin-ld.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-ld.c?rev=339829&r1=339828&r2=339829&view=diff
==============================================================================
--- cfe/trunk/test/Driver/darwin-ld.c (original)
+++ cfe/trunk/test/Driver/darwin-ld.c Wed Aug 15 15:50:06 2018
@@ -152,78 +152,51 @@
 // RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_CRT1 %s < %t.log
 // LINK_NO_IOS_ARM64_CRT1-NOT: crt
 
-// RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -### %t.o 2> %t.log
+// RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
 // RUN: FileCheck -check-prefix=LINK_IOSSIM_PROFILE %s < %t.log
 // LINK_IOSSIM_PROFILE: {{ld(.exe)?"}}
 // LINK_IOSSIM_PROFILE: libclang_rt.profile_iossim.a
+// LINK_IOSSIM_PROFILE: libclang_rt.ios.a
 
-// FIXME: Currently the builtin library is only added to the command line if it,
-// so we can't check for it here
-// FIXME_LINK_IOSSIM_PROFILE: libclang_rt.ios.a
-
-// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -### %t.o 2> %t.log
+// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
 // RUN: FileCheck -check-prefix=LINK_TVOS_ARM64 %s < %t.log
 // LINK_TVOS_ARM64: {{ld(.exe)?"}}
 // LINK_TVOS_ARM64: -tvos_version_min
 // LINK_TVOS_ARM64-NOT: crt
 // LINK_TVOS_ARM64-NOT: lgcc_s.1
-// FIXME: This library does not get built unless the tvOS SDK is
-// installed, and the driver will not try to link it if it does not exist.
-// This should be reenabled when the tvOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_TVOS_ARM64: libclang_rt.tvos.a
+// LINK_TVOS_ARM64: libclang_rt.tvos.a
 
-// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -fprofile-instr-generate -### %t.o 2> %t.log
+// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -fprofile-instr-generate -resource-dir=%S/Inputs/resource_dir  -### %t.o 2> %t.log
 // RUN: FileCheck -check-prefix=LINK_TVOS_PROFILE %s < %t.log
 // LINK_TVOS_PROFILE: {{ld(.exe)?"}}
-// FIXME: These libraries do not get built unless the tvOS SDK is
-// installed, and the driver will not try to link them if they do not exist.
-// This should be reenabled when the tvOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_TVOS_PROFILE: libclang_rt.profile_tvos.a
-// FIXME_LINK_TVOS_PROFILE: libclang_rt.tvos.a
+// LINK_TVOS_PROFILE: libclang_rt.profile_tvos.a
+// LINK_TVOS_PROFILE: libclang_rt.tvos.a
 
-// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -### %t.o -lcc_kext 2> %t.log
+// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -resource-dir=%S/Inputs/resource_dir -### %t.o -lcc_kext 2> %t.log
 // RUN: FileCheck -check-prefix=LINK_TVOS_KEXT %s < %t.log
 // LINK_TVOS_KEXT: {{ld(.exe)?"}}
-// FIXME: These libraries do not get built unless the tvOS SDK is
-// installed, and the driver will not try to link them if they do not exist.
-// This should be reenabled when the tvOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_TVOS_KEXT: libclang_rt.cc_kext_tvos.a
-// FIXME_LINK_TVOS_KEXT: libclang_rt.tvos.a
+// LINK_TVOS_KEXT: libclang_rt.cc_kext_tvos.a
+// LINK_TVOS_KEXT: libclang_rt.tvos.a
 
-// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -### %t.o 2> %t.log
+// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
 // RUN: FileCheck -check-prefix=LINK_WATCHOS_ARM %s < %t.log
 // LINK_WATCHOS_ARM: {{ld(.exe)?"}}
 // LINK_WATCHOS_ARM: -watchos_version_min
 // LINK_WATCHOS_ARM-NOT: crt
 // LINK_WATCHOS_ARM-NOT: lgcc_s.1
-// FIXME: This library does not get built unless the watchOS SDK is
-// installed, and the driver will not try to link it if it does not exist.
-// This should be reenabled when the watchOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_WATCHOS_ARM: libclang_rt.watchos.a
+// LINK_WATCHOS_ARM: libclang_rt.watchos.a
 
-// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -fprofile-instr-generate -### %t.o 2> %t.log
+// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -fprofile-instr-generate -### %t.o 2> %t.log
 // RUN: FileCheck -check-prefix=LINK_WATCHOS_PROFILE %s < %t.log
 // LINK_WATCHOS_PROFILE: {{ld(.exe)?"}}
-// FIXME: These libraries do not get built unless the watchOS SDK is
-// installed, and the driver will not try to link them if they do not exist.
-// This should be reenabled when the watchOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_WATCHOS_PROFILE: libclang_rt.profile_watchos.a
-// FIXME_LINK_WATCHOS_PROFILE: libclang_rt.watchos.a
+// LINK_WATCHOS_PROFILE: libclang_rt.profile_watchos.a
+// LINK_WATCHOS_PROFILE: libclang_rt.watchos.a
 
-// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -### %t.o -lcc_kext 2> %t.log
+// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -### %t.o -lcc_kext 2> %t.log
 // RUN: FileCheck -check-prefix=LINK_WATCHOS_KEXT %s < %t.log
 // LINK_WATCHOS_KEXT: {{ld(.exe)?"}}
-// FIXME: These libraries do not get built unless the watchOS SDK is
-// installed, and the driver will not try to link them if they do not exist.
-// This should be reenabled when the watchOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_WATCHOS_KEXT: libclang_rt.cc_kext_watchos.a
-// FIXME_LINK_WATCHOS_KEXT: libclang_rt.watchos.a
+// LINK_WATCHOS_KEXT: libclang_rt.cc_kext_watchos.a
+// LINK_WATCHOS_KEXT: libclang_rt.watchos.a
 
 // RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log
 // RUN: FileCheck -check-prefix=LINK_PG %s < %t.log




More information about the cfe-commits mailing list