| //@only-target-linux |
| //@only-on-host |
| |
| extern "C" { |
| fn add_one_int(x: i32) -> i32; |
| fn add_int16(x: i16) -> i16; |
| fn test_stack_spill( |
| a: i32, |
| b: i32, |
| c: i32, |
| d: i32, |
| e: i32, |
| f: i32, |
| g: i32, |
| h: i32, |
| i: i32, |
| j: i32, |
| k: i32, |
| l: i32, |
| ) -> i32; |
| fn add_short_to_long(x: i16, y: i64) -> i64; |
| fn get_unsigned_int() -> u32; |
| fn printer(); |
| } |
| |
| fn main() { |
| unsafe { |
| // test function that adds 2 to a provided int |
| assert_eq!(add_one_int(1), 3); |
| |
| // test function that takes the sum of its 12 arguments |
| assert_eq!(test_stack_spill(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), 78); |
| |
| // test function that adds 3 to a 16 bit int |
| assert_eq!(add_int16(-1i16), 2i16); |
| |
| // test function that adds an i16 to an i64 |
| assert_eq!(add_short_to_long(-1i16, 123456789123i64), 123456789122i64); |
| |
| // test function that returns -10 as an unsigned int |
| assert_eq!(get_unsigned_int(), (-10i32) as u32); |
| |
| // test void function that prints from C |
| printer(); |
| } |
| } |