82802337a8
what's a "fcts"?
47 lines
1.1 KiB
Rust
47 lines
1.1 KiB
Rust
//@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();
|
|
}
|
|
}
|