@@ -63,6 +63,54 @@ cfg_if! {
63
63
}
64
64
}
65
65
66
+ // Verify Rust's 'c_size_t' is correct
67
+ cfg_if ! {
68
+ if #[ cfg( all( target_arch = "aarch64" , target_abi = "ilp32" ) ) ] {
69
+ // FIXME: size_t is not short enough on aarch64 ilp32, should be 4, defaulting to 8
70
+ const XFAIL_C_SIZE_T_SIZE : usize = 4 ;
71
+ pub const TEST_C_SIZE_T_SIZE : ( ) = if size_of:: <ffi:: c_size_t>( ) != XFAIL_C_SIZE_T_SIZE {
72
+ panic!( "wrong c_size_t size, target_arch: aarch64, target_abi: ilp32" ) ;
73
+ } ;
74
+ }
75
+ else {
76
+ pub const TEST_C_SIZE_T_SIZE : ( ) = if size_of:: <ffi:: c_size_t>( ) != CLANG_C_SIZE_T_SIZE {
77
+ panic!( "wrong c_size_t size" ) ;
78
+ } ;
79
+ }
80
+ }
81
+
82
+ // Verify Rust's 'c_ssize_t' is correct
83
+ cfg_if ! {
84
+ if #[ cfg( all( target_arch = "aarch64" , target_abi = "ilp32" ) ) ] {
85
+ // FIXME: ssize_t is not short enough on aarch64 ilp32, should be 4, defaulting to 8
86
+ const XFAIL_C_SSIZE_T_SIZE : usize = 4 ;
87
+ pub const TEST_C_SSIZE_T_SIZE : ( ) = if size_of:: <ffi:: c_ssize_t>( ) != XFAIL_C_SSIZE_T_SIZE {
88
+ panic!( "wrong c_ssize_t size, target_arch: aarch64, target_abi: ilp32" ) ;
89
+ } ;
90
+ }
91
+ else {
92
+ pub const TEST_C_SSIZE_T_SIZE : ( ) = if size_of:: <ffi:: c_ssize_t>( ) != CLANG_C_SIZE_T_SIZE {
93
+ panic!( "wrong c_size_t size" ) ;
94
+ } ;
95
+ }
96
+ }
97
+
98
+ // Verify Rust's 'c_ptrdiff_t' is correct
99
+ cfg_if ! {
100
+ if #[ cfg( all( target_arch = "aarch64" , target_abi = "ilp32" ) ) ] {
101
+ // FIXME: c_ptrdiff_t is not short enough on aarch64 ilp32, should be 4, defaulting to 8
102
+ const XFAIL_C_PTRDIFF_T_SIZE : usize = 4 ;
103
+ pub const TEST_C_PTRDIFF_T_SIZE : ( ) = if size_of:: <ffi:: c_ptrdiff_t>( ) != XFAIL_C_PTRDIFF_T_SIZE {
104
+ panic!( "wrong c_ssize_t size, target_arch: aarch64, target_abi: ilp32" ) ;
105
+ } ;
106
+ }
107
+ else {
108
+ pub const TEST_C_PTRDIFF_T_SIZE : ( ) = if size_of:: <ffi:: c_ptrdiff_t>( ) != CLANG_C_PTRDIFF_T_SIZE {
109
+ panic!( "wrong c_size_t size" ) ;
110
+ } ;
111
+ }
112
+ }
113
+
66
114
impl Signed for i8 {
67
115
const SIGNED : bool = true ;
68
116
}
@@ -95,3 +143,28 @@ pub const TEST_C_LONGLONG_SIZE: () = if size_of::<ffi::c_longlong>() != CLANG_C_
95
143
pub const TEST_C_FLOAT_SIZE : ( ) = if size_of :: < ffi:: c_float > ( ) != CLANG_C_FLOAT_SIZE {
96
144
panic ! ( "wrong c_float size" ) ;
97
145
} ;
146
+
147
+ //c_schar size
148
+ pub const TEST_C_SCHAR_SIZE : ( ) = if size_of :: < ffi:: c_schar > ( ) != CLANG_C_CHAR_SIZE {
149
+ panic ! ( "wrong c_schar size" ) ;
150
+ } ;
151
+
152
+ //c_uchar size
153
+ pub const TEST_C_UCHAR_SIZE : ( ) = if size_of :: < ffi:: c_uchar > ( ) != CLANG_C_CHAR_SIZE {
154
+ panic ! ( "wrong c_uchar size" ) ;
155
+ } ;
156
+
157
+ //c_uint size
158
+ pub const TEST_C_UINT_SIZE : ( ) = if size_of :: < ffi:: c_int > ( ) != CLANG_C_INT_SIZE {
159
+ panic ! ( "mismatched c_uint size" ) ;
160
+ } ;
161
+
162
+ //c_ushort size
163
+ pub const TEST_C_USHORT_SIZE : ( ) = if size_of :: < ffi:: c_short > ( ) != CLANG_C_SHORT_SIZE {
164
+ panic ! ( "wrong c_ushort size" ) ;
165
+ } ;
166
+
167
+ //c_ulonglong size
168
+ pub const TEST_C_ULONGLONG_SIZE : ( ) = if size_of :: < ffi:: c_ulonglong > ( ) != CLANG_C_LONGLONG_SIZE {
169
+ panic ! ( "wrong c_ulonglong size" ) ;
170
+ } ;
0 commit comments