11//! feature_c_variadic,
22
3+ use crate :: varargs:: rust_call_printf;
4+ // See #1281. Varargs don't yet work on aarch64.
5+ #[ cfg( not( target_arch = "aarch64" ) ) ]
36use crate :: varargs:: {
4- rust_call_printf , rust_call_vprintf, rust_my_printf, rust_restart_valist, rust_sample_stddev,
5- rust_simple_vacopy , rust_valist_struct_member, rust_valist_struct_pointer_member,
7+ rust_call_vprintf, rust_my_printf, rust_restart_valist, rust_sample_stddev, rust_simple_vacopy ,
8+ rust_valist_struct_member, rust_valist_struct_pointer_member,
69} ;
710
811use std:: ffi:: c_char;
@@ -11,7 +14,12 @@ use std::ffi::CString;
1114#[ link( name = "test" ) ]
1215extern "C" {
1316 fn call_printf ( ) ;
17+ }
1418
19+ // See #1281. Varargs don't yet work on aarch64.
20+ #[ cfg( not( target_arch = "aarch64" ) ) ]
21+ #[ link( name = "test" ) ]
22+ extern "C" {
1523 fn call_vprintf ( _: * const c_char , ...) ;
1624
1725 fn my_printf ( _: * const c_char , ...) ;
@@ -38,6 +46,7 @@ pub fn test_call_printf() {
3846}
3947
4048// Make sure we can pass through va_list arguments
49+ #[ cfg( not( target_arch = "aarch64" ) ) ]
4150#[ test]
4251pub fn test_call_vprintf ( ) {
4352 let fmt_str = CString :: new ( "%d, %f\n " ) . unwrap ( ) ;
@@ -48,6 +57,7 @@ pub fn test_call_vprintf() {
4857}
4958
5059// Test out a small varargs function definition
60+ #[ cfg( not( target_arch = "aarch64" ) ) ]
5161#[ test]
5262pub fn test_my_printf ( ) {
5363 let fmt_str = CString :: new ( "%d, %f, %s\n " ) . unwrap ( ) ;
@@ -58,6 +68,7 @@ pub fn test_my_printf() {
5868 }
5969}
6070
71+ #[ cfg( not( target_arch = "aarch64" ) ) ]
6172#[ test]
6273pub fn test_simple_vacopy ( ) {
6374 let fmt_str = CString :: new ( "%d, %f\n " ) . unwrap ( ) ;
@@ -67,6 +78,7 @@ pub fn test_simple_vacopy() {
6778 }
6879}
6980
81+ #[ cfg( not( target_arch = "aarch64" ) ) ]
7082#[ test]
7183pub fn test_valist_struct_member ( ) {
7284 let fmt_str = CString :: new ( "%d, %f\n " ) . unwrap ( ) ;
@@ -76,6 +88,7 @@ pub fn test_valist_struct_member() {
7688 }
7789}
7890
91+ #[ cfg( not( target_arch = "aarch64" ) ) ]
7992#[ test]
8093pub fn test_valist_struct_pointer_member ( ) {
8194 let fmt_str = CString :: new ( "%d, %f\n " ) . unwrap ( ) ;
@@ -85,6 +98,7 @@ pub fn test_valist_struct_pointer_member() {
8598 }
8699}
87100
101+ #[ cfg( not( target_arch = "aarch64" ) ) ]
88102#[ test]
89103pub fn test_restart_valist ( ) {
90104 let fmt_str = CString :: new ( "%d, %f\n " ) . unwrap ( ) ;
@@ -94,6 +108,7 @@ pub fn test_restart_valist() {
94108 }
95109}
96110
111+ #[ cfg( not( target_arch = "aarch64" ) ) ]
97112#[ test]
98113pub fn test_sample_stddev ( ) {
99114 unsafe {
0 commit comments