Skip to content

Commit 2e36f91

Browse files
authored
Merge pull request #81900 from ktoso/pick-wip-fix-for-real-ptr-auth
2 parents 5ee5736 + 11fb1ad commit 2e36f91

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

include/swift/ABI/MetadataValues.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1745,7 +1745,7 @@ namespace SpecialPointerAuthDiscriminators {
17451745
const uint16_t AsyncContextParent = 0xbda2; // = 48546
17461746
const uint16_t AsyncContextResume = 0xd707; // = 55047
17471747
const uint16_t AsyncContextYield = 0xe207; // = 57863
1748-
const uint16_t CancellationNotificationFunction = 0xf73; // = 3955 (TaskPriority, TaskPriority) -> Void
1748+
const uint16_t CancellationNotificationFunction = 0x0f08; // = 3848
17491749
const uint16_t EscalationNotificationFunction = 0x7861; // = 30817
17501750
const uint16_t AsyncThinNullaryFunction = 0x0f08; // = 3848
17511751
const uint16_t AsyncFutureFunction = 0x720f; // = 29199

include/swift/ABI/TaskStatus.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ class CancellationNotificationStatusRecord : public TaskStatusRecord {
269269
/// subsequently used.
270270
class EscalationNotificationStatusRecord : public TaskStatusRecord {
271271
public:
272-
using FunctionType = SWIFT_CC(swift) void(JobPriority, JobPriority, SWIFT_CONTEXT void *);
272+
using FunctionType = SWIFT_CC(swift) void(uint8_t, uint8_t, SWIFT_CONTEXT void *);
273273

274274
private:
275275
FunctionType *__ptrauth_swift_escalation_notification_function Function;
@@ -282,7 +282,10 @@ class EscalationNotificationStatusRecord : public TaskStatusRecord {
282282
}
283283

284284
void run(JobPriority oldPriority, JobPriority newPriority) {
285-
Function(oldPriority, newPriority, Argument);
285+
Function(
286+
static_cast<size_t>(oldPriority),
287+
static_cast<size_t>(newPriority),
288+
Argument);
286289
}
287290

288291
static bool classof(const TaskStatusRecord *record) {

stdlib/public/Concurrency/Task.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,7 +1763,8 @@ swift_task_addCancellationHandlerImpl(
17631763
void *context) {
17641764
void *allocation =
17651765
swift_task_alloc(sizeof(CancellationNotificationStatusRecord));
1766-
auto unsigned_handler = swift_auth_code(handler, 3848);
1766+
auto unsigned_handler = swift_auth_code_function(handler,
1767+
SpecialPointerAuthDiscriminators::CancellationNotificationFunction);
17671768
auto *record = ::new (allocation)
17681769
CancellationNotificationStatusRecord(unsigned_handler, context);
17691770

@@ -1816,7 +1817,8 @@ swift_task_addPriorityEscalationHandlerImpl(
18161817
void *context) {
18171818
void *allocation =
18181819
swift_task_alloc(sizeof(EscalationNotificationStatusRecord));
1819-
auto unsigned_handler = swift_auth_code(handler, 3955);
1820+
auto unsigned_handler = swift_auth_code_function(handler,
1821+
SpecialPointerAuthDiscriminators::EscalationNotificationFunction);
18201822
auto *record = ::new (allocation)
18211823
EscalationNotificationStatusRecord(unsigned_handler, context);
18221824

test/Concurrency/async_task_escalate_priority.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
// UNSUPPORTED: DARWIN_SIMULATOR=ios
2020
// UNSUPPORTED: DARWIN_SIMULATOR=tvos
2121

22-
// rdar://107390341 - Because task escalation tests seem disabled on this platform
23-
// UNSUPPORTED: CPU=arm64e
24-
2522
import Darwin
2623
@preconcurrency import Dispatch
2724

0 commit comments

Comments
 (0)