Mike Ash
fe7e13bba5
[Runtime][IRGen] Sign type context descriptor pointers.
...
Ensure that context descriptor pointers are signed in the runtime by putting the ptrauth_struct attribute on the types.
We use the new __builtin_ptrauth_struct_key/disc to conditionally apply ptrauth_struct to TrailingObjects based on the signing of the base type, so that pointers to TrailingObjects get signed when used with a context descriptor pointer.
We add new runtime entrypoints that take signed pointers where appropriate, and have the compiler emit calls to the new entrypoints when targeting a sufficiently new OS.
rdar://111480914
2023-07-07 18:10:35 -04:00
Josh Soref
871634b9f3
Spelling include ( #42616 )
...
* spelling: accessible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: are
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: assume
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: attempt
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: children
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: convenience
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: creation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: default
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: dereference
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: deserialization
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: embedded
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: enriched
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: excluding
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: for
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: global
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: guarantee
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: initialization
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: initialize
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: label
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: lifting
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: mangled
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: metadata
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: minimum
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: offset
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: only
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: otherwise
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: output
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: overall
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: parameter
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: passed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: performance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: referenced
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: standard
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: syntax
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: that
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: the
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: trivia
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: truncate
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: undesirable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: uniformly
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: uninitialized
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: value
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: verification
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com >
2022-04-25 09:00:59 -07:00
Arnold Schwaighofer
36ae8cd90d
Remove non-existant header use
2020-12-05 09:06:47 -08:00
Adrian Prantl
468b74bd70
Update Swift master-next for upstream llvm.org changes.
2019-10-21 13:31:31 -07:00
JF Bastien
31e6a989f5
[NFC] Don't use LLVM_ALIGNAS ( #26411 )
...
It's not useful anymore, and I'm about to remove it in upstream.
2019-07-30 13:14:02 -07:00
JF Bastien
7ef9a6cdf1
Don't use AlignedCharArray ( #26351 )
...
I'm about to remove it in https://reviews.llvm.org/D65249
2019-07-25 12:54:38 -07:00
Doug Gregor
9af914eafa
[ABI] Remove the “final” assertion from the ABI’s TrailingObjects.
...
In our ABI, we’re using some C++ ABI tricks to simplify the
implementation of the runtime. One of them, in FullMetadata, requires
that we inherit from classes that we would also like to make use
TrailingObjects. Remove the “final” assertion from TrailingObjects
so we can do so.
We promise to be careful.
2018-07-20 20:54:49 -07:00
Joe Groff
fe192c6daf
Runtime: Refactor NominalTypeDescriptor to use TrailingObjects.
...
NFC intended. The layout of trailing matter here is getting fairly complex, so it's good to use LLVM's existing library code to keep track of it. We use a fork of llvm's TrailingObjects.h header so that future changes to LLVM don't disturb the ABI of Swift runtime objects that use the template.
2017-12-11 16:26:29 -08:00