Skip to content

Commit d2963c2

Browse files
authored
Merge pull request #1702 from alexcrichton/macos-ucontet
Add definition of ucontext_t for macOS
2 parents 276eaa2 + 472e72a commit d2963c2

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

src/unix/bsd/apple/b64/mod.rs

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
pub type c_long = i64;
44
pub type c_ulong = u64;
55
pub type boolean_t = ::c_uint;
6+
pub type mcontext_t = *mut __darwin_mcontext64;
67

78
s! {
89
pub struct timeval32 {
@@ -48,6 +49,107 @@ s! {
4849
pub bh_datalen: u32,
4950
pub bh_hdrlen: ::c_ushort,
5051
}
52+
53+
pub struct ucontext_t {
54+
pub uc_onstack: ::c_int,
55+
pub uc_sigmask: ::sigset_t,
56+
pub uc_stack: ::stack_t,
57+
pub uc_link: *mut ::ucontext_t,
58+
pub uc_mcsize: usize,
59+
pub uc_mcontext: mcontext_t,
60+
}
61+
62+
pub struct __darwin_mcontext64 {
63+
pub __es: __darwin_x86_exception_state64,
64+
pub __ss: __darwin_x86_thread_state64,
65+
pub __fs: __darwin_x86_float_state64,
66+
}
67+
68+
pub struct __darwin_x86_exception_state64 {
69+
pub __trapno: u16,
70+
pub __cpu: u16,
71+
pub __err: u32,
72+
pub __faultvaddr: u64,
73+
}
74+
75+
pub struct __darwin_x86_thread_state64 {
76+
pub __rax: u64,
77+
pub __rbx: u64,
78+
pub __rcx: u64,
79+
pub __rdx: u64,
80+
pub __rdi: u64,
81+
pub __rsi: u64,
82+
pub __rbp: u64,
83+
pub __rsp: u64,
84+
pub __r8: u64,
85+
pub __r9: u64,
86+
pub __r10: u64,
87+
pub __r11: u64,
88+
pub __r12: u64,
89+
pub __r13: u64,
90+
pub __r14: u64,
91+
pub __r15: u64,
92+
pub __rip: u64,
93+
pub __rflags: u64,
94+
pub __cs: u64,
95+
pub __fs: u64,
96+
pub __gs: u64,
97+
}
98+
99+
pub struct __darwin_x86_float_state64 {
100+
pub __fpu_reserved: [::c_int; 2],
101+
__fpu_fcw: ::c_short,
102+
__fpu_fsw: ::c_short,
103+
pub __fpu_ftw: u8,
104+
pub __fpu_rsrv1: u8,
105+
pub __fpu_fop: u16,
106+
pub __fpu_ip: u32,
107+
pub __fpu_cs: u16,
108+
pub __fpu_rsrv2: u16,
109+
pub __fpu_dp: u32,
110+
pub __fpu_ds: u16,
111+
pub __fpu_rsrv3: u16,
112+
pub __fpu_mxcsr: u32,
113+
pub __fpu_mxcsrmask: u32,
114+
pub __fpu_stmm0: __darwin_mmst_reg,
115+
pub __fpu_stmm1: __darwin_mmst_reg,
116+
pub __fpu_stmm2: __darwin_mmst_reg,
117+
pub __fpu_stmm3: __darwin_mmst_reg,
118+
pub __fpu_stmm4: __darwin_mmst_reg,
119+
pub __fpu_stmm5: __darwin_mmst_reg,
120+
pub __fpu_stmm6: __darwin_mmst_reg,
121+
pub __fpu_stmm7: __darwin_mmst_reg,
122+
pub __fpu_xmm0: __darwin_xmm_reg,
123+
pub __fpu_xmm1: __darwin_xmm_reg,
124+
pub __fpu_xmm2: __darwin_xmm_reg,
125+
pub __fpu_xmm3: __darwin_xmm_reg,
126+
pub __fpu_xmm4: __darwin_xmm_reg,
127+
pub __fpu_xmm5: __darwin_xmm_reg,
128+
pub __fpu_xmm6: __darwin_xmm_reg,
129+
pub __fpu_xmm7: __darwin_xmm_reg,
130+
pub __fpu_xmm8: __darwin_xmm_reg,
131+
pub __fpu_xmm9: __darwin_xmm_reg,
132+
pub __fpu_xmm10: __darwin_xmm_reg,
133+
pub __fpu_xmm11: __darwin_xmm_reg,
134+
pub __fpu_xmm12: __darwin_xmm_reg,
135+
pub __fpu_xmm13: __darwin_xmm_reg,
136+
pub __fpu_xmm14: __darwin_xmm_reg,
137+
pub __fpu_xmm15: __darwin_xmm_reg,
138+
// this field is actually [u8; 96], but defining it with a bigger type
139+
// allows us to auto-implement traits for it since the length of the
140+
// array is less than 32
141+
__fpu_rsrv4: [u32; 24],
142+
pub __fpu_reserved1: ::c_int,
143+
}
144+
145+
pub struct __darwin_mmst_reg {
146+
pub __mmst_reg: [::c_char; 10],
147+
pub __mmst_rsrv: [::c_char; 6],
148+
}
149+
150+
pub struct __darwin_xmm_reg {
151+
pub __xmm_reg: [::c_char; 16],
152+
}
51153
}
52154

53155
s_no_extra_traits! {

0 commit comments

Comments
 (0)