diff --git a/programs/bpf/rust/128bit/Cargo.toml b/programs/bpf/rust/128bit/Cargo.toml index 438381614..877a0f0f4 100644 --- a/programs/bpf/rust/128bit/Cargo.toml +++ b/programs/bpf/rust/128bit/Cargo.toml @@ -16,6 +16,9 @@ solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = solana-sdk-bpf-no-std = { path = "../../../../sdk/bpf/rust/rust-no-std", version = "0.17.0" } solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "0.17.0" } +[dev_dependencies] +solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/rust-test", version = "0.17.0" } + [workspace] members = [] diff --git a/programs/bpf/rust/128bit_dep/Cargo.toml b/programs/bpf/rust/128bit_dep/Cargo.toml index bec03f914..2fc8df21d 100644 --- a/programs/bpf/rust/128bit_dep/Cargo.toml +++ b/programs/bpf/rust/128bit_dep/Cargo.toml @@ -14,5 +14,8 @@ edition = "2018" [dependencies] solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.17.0" } +[dev_dependencies] +solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/rust-test", version = "0.17.0" } + [workspace] members = [] \ No newline at end of file diff --git a/programs/bpf/rust/128bit_dep/src/lib.rs b/programs/bpf/rust/128bit_dep/src/lib.rs index 2cedb7dad..497d8c65a 100644 --- a/programs/bpf/rust/128bit_dep/src/lib.rs +++ b/programs/bpf/rust/128bit_dep/src/lib.rs @@ -13,6 +13,18 @@ mod test { extern crate std; use super::*; + #[test] + fn pull_in_externs() { + // Rust on Linux excludes the solana_sdk_bpf_test library unless there is a + // direct dependency, use this test to force the pull in of the library. + // This is not necessary on macos and unfortunate on Linux + // Issue #4972 + extern crate solana_sdk_bpf_test; + use solana_sdk_bpf_test::*; + unsafe { sol_log_("X".as_ptr(), 1) }; + sol_log_64_(1, 2, 3, 4, 5); + } + #[test] fn test_work() { assert_eq!(3, work(1, 2)); diff --git a/programs/bpf/rust/many_args/src/lib.rs b/programs/bpf/rust/many_args/src/lib.rs index c9feeaac3..46c02c181 100644 --- a/programs/bpf/rust/many_args/src/lib.rs +++ b/programs/bpf/rust/many_args/src/lib.rs @@ -13,9 +13,9 @@ use solana_sdk_bpf_utils::info; #[no_mangle] pub extern "C" fn entrypoint(_input: *mut u8) -> bool { - info!("call same package"); + info!("Call same package"); assert_eq!(crate::helper::many_args(1, 2, 3, 4, 5, 6, 7, 8, 9), 45); - info!("call another package"); + info!("Call another package"); assert_eq!( solana_bpf_rust_many_args_dep::many_args(1, 2, 3, 4, 5, 6, 7, 8, 9), 45 diff --git a/programs/bpf/rust/many_args_dep/src/lib.rs b/programs/bpf/rust/many_args_dep/src/lib.rs index 4cfbd2596..9e3005a3e 100644 --- a/programs/bpf/rust/many_args_dep/src/lib.rs +++ b/programs/bpf/rust/many_args_dep/src/lib.rs @@ -17,7 +17,7 @@ pub fn many_args( arg8: u64, arg9: u64, ) -> u64 { - info!("another package"); + info!("Another package"); info!(arg1, arg2, arg3, arg4, arg5); info!(arg6, arg7, arg8, arg9, 0); arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 @@ -25,20 +25,19 @@ pub fn many_args( #[cfg(test)] mod test { - extern crate solana_sdk_bpf_test; extern crate std; use super::*; - #[no_mangle] - pub unsafe fn sol_log_(message: *const u8, length: u64) { - let slice = std::slice::from_raw_parts(message, length as usize); - let string = std::str::from_utf8(&slice).unwrap(); - std::println!("{}", string); - } - - #[no_mangle] - pub fn sol_log_64_(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) { - std::println!("{} {} {} {} {}", arg1, arg2, arg3, arg4, arg5); + #[test] + fn pull_in_externs() { + // Rust on Linux excludes the solana_sdk_bpf_test library unless there is a + // direct dependency, use this test to force the pull in of the library. + // This is not necessary on macos and unfortunate on Linux + // Issue #4972 + extern crate solana_sdk_bpf_test; + use solana_sdk_bpf_test::*; + unsafe { sol_log_("X".as_ptr(), 1) }; + sol_log_64_(1, 2, 3, 4, 5); } #[test] diff --git a/sdk/bpf/rust/rust-test/Cargo.toml b/sdk/bpf/rust/rust-test/Cargo.toml index 5bdfff81b..23bbbdbb1 100644 --- a/sdk/bpf/rust/rust-test/Cargo.toml +++ b/sdk/bpf/rust/rust-test/Cargo.toml @@ -10,4 +10,4 @@ homepage = "https://solana.com/" edition = "2018" [workspace] -members = [] \ No newline at end of file +members = []