@@ -33,6 +33,8 @@ else version (TVOS)
33
33
else version (WatchOS)
34
34
version = Darwin;
35
35
36
+ version (ARM ) version = ARM_Any;
37
+ version (AArch64 ) version = ARM_Any;
36
38
version (MIPS32 ) version = MIPS_Any;
37
39
version (MIPS64 ) version = MIPS_Any;
38
40
version (PPC ) version = PPC_Any;
@@ -921,16 +923,66 @@ else version (CRuntime_Musl)
921
923
}
922
924
else version (Darwin)
923
925
{
924
- alias mcontext_t = void ;
926
+ private
927
+ {
928
+ version (X86_64 )
929
+ {
930
+ struct __darwin_mcontext
931
+ {
932
+ ulong [89 ] __opaque;
933
+ }
934
+ static assert (__darwin_mcontext.sizeof == 712 );
935
+ }
936
+ else version (X86 )
937
+ {
938
+ struct __darwin_mcontext
939
+ {
940
+ uint [150 ] __opaque;
941
+ }
942
+ static assert (__darwin_mcontext.sizeof == 600 );
943
+ }
944
+ else version (AArch64 )
945
+ {
946
+ struct __darwin_mcontext
947
+ {
948
+ align (16 ) ulong [102 ] __opaque;
949
+ }
950
+ static assert (__darwin_mcontext.sizeof == 816 );
951
+ }
952
+ else version (ARM )
953
+ {
954
+ struct __darwin_mcontext
955
+ {
956
+ uint [85 ] __opaque;
957
+ }
958
+ static assert (__darwin_mcontext.sizeof == 340 );
959
+ }
960
+ else version (PPC_Any)
961
+ {
962
+ struct __darwin_mcontext
963
+ {
964
+ version (PPC64 )
965
+ ulong [129 ] __opaque;
966
+ else
967
+ uint [258 ] __opaque;
968
+ }
969
+ static assert (__darwin_mcontext.sizeof == 1032 );
970
+ }
971
+ else
972
+ static assert (false , " mcontext_t unimplemented for this platform." );
973
+ }
974
+
975
+ alias mcontext_t = __darwin_mcontext* ;
925
976
926
977
struct ucontext
927
978
{
928
- int uc_onstack;
929
- sigset_t uc_sigmask;
930
- stack_t uc_stack;
931
- ucontext* uc_link;
932
- size_t uc_mcsize;
933
- mcontext_t* uc_mcontext;
979
+ int uc_onstack;
980
+ sigset_t uc_sigmask;
981
+ stack_t uc_stack;
982
+ ucontext* uc_link;
983
+ size_t uc_mcsize;
984
+ __darwin_mcontext* uc_mcontext;
985
+ __darwin_mcontext __mcontext_data;
934
986
}
935
987
936
988
alias ucontext_t = ucontext;
0 commit comments