1- // Tests that MTE tags and values stored in the top byte of a pointer (TBI) are
2- // preserved across FFI boundaries (C <-> Rust).
3- // This test does not require MTE: whilst the test will use MTE if available, if it is not,
4- // arbitrary tag bits are set using TBI.
1+ //! Tests that MTE tags and values stored in the top byte of a pointer (TBI) are preserved across
2+ //! FFI boundaries (C <-> Rust). This test does not require MTE: whilst the test will use MTE if
3+ //! available, if it is not, arbitrary tag bits are set using TBI.
54
6- // This test is only valid for AArch64.
7- // The linker must be explicitly specified when cross-compiling, so it is limited to
8- // `aarch64-unknown-linux-gnu`.
95//@ only-aarch64-unknown-linux-gnu
6+ // Reason: this test is only valid for AArch64 with `gcc`. The linker must be explicitly specified
7+ // when cross-compiling, so it is limited to `aarch64-unknown-linux-gnu`.
108
11- use run_make_support:: { cc , dynamic_lib_name, extra_c_flags, run, rustc, target} ;
9+ use run_make_support:: { dynamic_lib_name, extra_c_flags, gcc , run, rustc, target} ;
1210
1311fn main ( ) {
1412 run_test ( "int" ) ;
@@ -29,7 +27,8 @@ fn run_test(variant: &str) {
2927 . target ( target ( ) )
3028 . linker ( "aarch64-linux-gnu-gcc" )
3129 . run ( ) ;
32- cc ( ) . input ( format ! ( "bar_{variant}.c" ) )
30+ gcc ( )
31+ . input ( format ! ( "bar_{variant}.c" ) )
3332 . input ( dynamic_lib_name ( "foo" ) )
3433 . out_exe ( "test" )
3534 . args ( & flags)
0 commit comments