Skip to content

Commit bed427b

Browse files
zoecarverkubamracek
authored andcommitted
[embedded][ptrauth] Guard extra ptrauth verification on objc interop being enabled.
This verification runs on ObjC briging types which are not present in embedded stdlib or when objc interop is not enabled.
1 parent 9c53465 commit bed427b

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

lib/IRGen/IRGenModule.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ static void sanityCheckStdlib(IRGenModule &IGM) {
196196
// Only run the sanity check when we're building the real stdlib.
197197
if (!lookupSimple(IGM.getSwiftModule(), { "String" })) return;
198198

199+
if (!IGM.ObjCInterop) return;
200+
199201
checkPointerAuthAssociatedTypeDiscriminator(IGM, { "_ObjectiveCBridgeable", "_ObjectiveCType" }, SpecialPointerAuthDiscriminators::ObjectiveCTypeDiscriminator);
200202
checkPointerAuthWitnessDiscriminator(IGM, { "_ObjectiveCBridgeable", "_bridgeToObjectiveC" }, SpecialPointerAuthDiscriminators::bridgeToObjectiveCDiscriminator);
201203
checkPointerAuthWitnessDiscriminator(IGM, { "_ObjectiveCBridgeable", "_forceBridgeFromObjectiveC" }, SpecialPointerAuthDiscriminators::forceBridgeFromObjectiveCDiscriminator);
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// RUN: %target-swift-emit-ir %s -parse-stdlib -enable-experimental-feature Embedded -target arm64e-apple-none -Xcc -fptrauth-calls -module-name Swift | %FileCheck %s
2+
3+
// Windows does not have SwiftCompilerSources.
4+
// XFAIL: OS=windows-msvc
5+
6+
// Some verification is blocked on string lookup succeeding.
7+
struct String {}
8+
9+
public func test() { }
10+
11+
// CHECK-LABEL: define {{.*}}void @"$ss4testyyF"()

0 commit comments

Comments
 (0)