Skip to content

Commit 5382e12

Browse files
authored
Merge pull request #81824 from mikeash/globalactorreference-ptrauth
[Runtime] Add ptrauth attribute to TargetGlobalActorReference conformance pointer.
2 parents c287f53 + ea785c1 commit 5382e12

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

include/swift/ABI/Metadata.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2787,11 +2787,22 @@ using ResilientWitnessesHeader = TargetResilientWitnessesHeader<InProcess>;
27872787
/// global actor protocol.
27882788
template<typename Runtime>
27892789
struct TargetGlobalActorReference {
2790+
private:
2791+
using SignedDescriptorPointer =
2792+
const TargetProtocolConformanceDescriptor<Runtime>
2793+
*__ptrauth_swift_protocol_conformance_descriptor;
2794+
2795+
public:
27902796
/// The type of the global actor.
27912797
RelativeDirectPointer<const char, /*nullable*/ false> type;
27922798

27932799
/// The conformance of the global actor to the GlobalActor protocol.
2794-
TargetRelativeProtocolConformanceDescriptorPointer<Runtime> conformance;
2800+
RelativeIndirectablePointer<
2801+
const TargetProtocolConformanceDescriptor<Runtime>,
2802+
/*nullable*/ false,
2803+
/*offset*/ int32_t,
2804+
/*indirect type*/ SignedDescriptorPointer>
2805+
conformance;
27952806
};
27962807

27972808
/// Describes the context of a protocol conformance that is relevant when

include/swift/Runtime/Config.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,9 @@ extern uintptr_t __COMPATIBILITY_LIBRARIES_CANNOT_CHECK_THE_IS_SWIFT_BIT_DIRECTL
272272
#define __ptrauth_swift_type_descriptor \
273273
__ptrauth(ptrauth_key_process_independent_data, 1, \
274274
SpecialPointerAuthDiscriminators::TypeDescriptor)
275+
#define __ptrauth_swift_protocol_conformance_descriptor \
276+
__ptrauth(ptrauth_key_process_independent_data, 1, \
277+
SpecialPointerAuthDiscriminators::ProtocolConformanceDescriptor)
275278
#define __ptrauth_swift_dynamic_replacement_key \
276279
__ptrauth(ptrauth_key_process_independent_data, 1, \
277280
SpecialPointerAuthDiscriminators::DynamicReplacementKey)
@@ -365,6 +368,7 @@ extern uintptr_t __COMPATIBILITY_LIBRARIES_CANNOT_CHECK_THE_IS_SWIFT_BIT_DIRECTL
365368
#define __ptrauth_swift_runtime_function_entry_strip(__fn) (__fn)
366369
#define __ptrauth_swift_heap_object_destructor
367370
#define __ptrauth_swift_type_descriptor
371+
#define __ptrauth_swift_protocol_conformance_descriptor
368372
#define __ptrauth_swift_nonunique_extended_existential_type_shape
369373
#define __ptrauth_swift_dynamic_replacement_key
370374
#define swift_ptrauth_sign_opaque_read_resume_function(__fn, __buffer) (__fn)

0 commit comments

Comments
 (0)