Remove bloat due to test symbols (#5965)

This commit is contained in:
Jack May 2019-09-18 19:54:10 -07:00 committed by GitHub
parent 10565277d6
commit 0d16db2d1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 207 additions and 19 deletions

View File

@ -1227,6 +1227,7 @@ version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-bpf-rust-128bit-dep 0.19.0-pre0", "solana-bpf-rust-128bit-dep 0.19.0-pre0",
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1234,6 +1235,7 @@ name = "solana-bpf-rust-128bit-dep"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1241,6 +1243,7 @@ name = "solana-bpf-rust-alloc"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1249,6 +1252,7 @@ version = "0.19.0-pre0"
dependencies = [ dependencies = [
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1256,6 +1260,7 @@ name = "solana-bpf-rust-external-spend"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1263,6 +1268,7 @@ name = "solana-bpf-rust-iter"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1271,6 +1277,7 @@ version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-bpf-rust-many-args-dep 0.19.0-pre0", "solana-bpf-rust-many-args-dep 0.19.0-pre0",
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1278,6 +1285,7 @@ name = "solana-bpf-rust-many-args-dep"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1285,6 +1293,7 @@ name = "solana-bpf-rust-noop"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1292,6 +1301,7 @@ name = "solana-bpf-rust-panic"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1300,6 +1310,7 @@ version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-bpf-rust-param-passing-dep 0.19.0-pre0", "solana-bpf-rust-param-passing-dep 0.19.0-pre0",
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1307,6 +1318,7 @@ name = "solana-bpf-rust-param-passing-dep"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1314,6 +1326,7 @@ name = "solana-bpf-rust-sysval"
version = "0.19.0-pre0" version = "0.19.0-pre0"
dependencies = [ dependencies = [
"solana-sdk 0.19.0-pre0", "solana-sdk 0.19.0-pre0",
"solana-sdk-bpf-test 0.19.0-pre0",
] ]
[[package]] [[package]]
@ -1460,6 +1473,10 @@ dependencies = [
"untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "solana-sdk-bpf-test"
version = "0.19.0-pre0"
[[package]] [[package]]
name = "solana-stake-api" name = "solana-stake-api"
version = "0.19.0-pre0" version = "0.19.0-pre0"

View File

@ -39,9 +39,8 @@ fn rerun_if_changed(files: &[&str], directories: &[&str], excludes: &[&str]) {
fn main() { fn main() {
let bpf_c = !env::var("CARGO_FEATURE_BPF_C").is_err(); let bpf_c = !env::var("CARGO_FEATURE_BPF_C").is_err();
if bpf_c { if bpf_c {
let install_dir = "OUT_DIR=../target/".to_string() let install_dir =
+ &env::var("PROFILE").unwrap() "OUT_DIR=../target/".to_string() + &env::var("PROFILE").unwrap() + &"/bpf".to_string();
+ &"/bpf".to_string();
println!("cargo:warning=(not a warning) Building C-based BPF programs"); println!("cargo:warning=(not a warning) Building C-based BPF programs");
assert!(Command::new("make") assert!(Command::new("make")

View File

@ -15,6 +15,9 @@ edition = "2018"
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "0.19.0-pre0" } solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "0.19.0-pre0" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -49,3 +49,15 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
SUCCESS SUCCESS
} }
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]
fn test_entrypoint() {
assert_eq!(SUCCESS, entrypoint(std::ptr::null_mut()));
}
}

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -102,3 +102,15 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
SUCCESS SUCCESS
} }
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]
fn test_entrypoint() {
assert_eq!(SUCCESS, entrypoint(std::ptr::null_mut()));
}
}

View File

@ -15,6 +15,9 @@ edition = "2018"
byteorder = { version = "1", default-features = false } byteorder = { version = "1", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -16,3 +16,15 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
SUCCESS SUCCESS
} }
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]
fn test_entrypoint() {
assert_eq!(SUCCESS, entrypoint(std::ptr::null_mut()));
}
}

View File

@ -28,17 +28,17 @@ perform_action() {
set -e set -e
case "$1" in case "$1" in
build) build)
"$sdkDir"/bpf/rust/build.sh "$2" "$sdkDir"/bpf/rust/build.sh "$2"
so_path="$targetDir/$profile/" so_path="$targetDir/$profile/"
so_name="solana_bpf_rust_${3%/}" so_name="solana_bpf_rust_${3%/}"
if [ -f "$so_path/${so_name}.so" ]; then if [ -f "$so_path/${so_name}.so" ]; then
cp "$so_path/${so_name}.so" "$so_path/${so_name}_debug.so" cp "$so_path/${so_name}.so" "$so_path/${so_name}_debug.so"
"$sdkDir"/bpf/dependencies/llvm-native/bin/llvm-objcopy --strip-all "$so_path/${so_name}.so" "$so_path/$so_name.so" "$sdkDir"/bpf/dependencies/llvm-native/bin/llvm-objcopy --strip-all "$so_path/${so_name}.so" "$so_path/$so_name.so"
fi fi
;; ;;
clean) clean)
"$sdkDir"/bpf/rust/clean.sh "$2" "$sdkDir"/bpf/rust/clean.sh "$2"
;; ;;
test) test)
( (
@ -77,17 +77,17 @@ perform_action() {
ls \ ls \
-la \ -la \
"$so" \ "$so" \
> "${dump}-mangled.txt" >"${dump}-mangled.txt"
greadelf \ greadelf \
-aW \ -aW \
"$so" \ "$so" \
>> "${dump}-mangled.txt" >>"${dump}-mangled.txt"
../"$sdkDir"/bpf/dependencies/llvm-native/bin/llvm-objdump \ ../"$sdkDir"/bpf/dependencies/llvm-native/bin/llvm-objdump \
-print-imm-hex \ -print-imm-hex \
--source \ --source \
--disassemble \ --disassemble \
"$so" \ "$so" \
>> "${dump}-mangled.txt" >>"${dump}-mangled.txt"
sed \ sed \
s/://g \ s/://g \
< "${dump}-mangled.txt" \ < "${dump}-mangled.txt" \
@ -114,7 +114,7 @@ set -e
if [ "$#" -ne 2 ]; then if [ "$#" -ne 2 ]; then
# Build all projects # Build all projects
for project in */ ; do for project in */; do
perform_action "$1" "$PWD/$project" "$project" perform_action "$1" "$PWD/$project" "$project"
done done
else else

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -18,3 +18,15 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
SUCCESS SUCCESS
} }
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]
fn test_entrypoint() {
assert_eq!(SUCCESS, entrypoint(std::ptr::null_mut()));
}
}

View File

@ -15,6 +15,9 @@ edition = "2018"
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "0.19.0-pre0" } solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "0.19.0-pre0" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -26,3 +26,15 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
SUCCESS SUCCESS
} }
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]
fn test_entrypoint() {
assert_eq!(SUCCESS, entrypoint(std::ptr::null_mut()));
}
}

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -50,8 +50,9 @@ pub fn many_args_sret(
#[cfg(test)] #[cfg(test)]
mod test { mod test {
extern crate std;
use super::*; use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test] #[test]
fn test_many_args() { fn test_many_args() {

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -60,6 +60,8 @@ fn process_instruction(program_id: &Pubkey, accounts: &mut [AccountInfo], data:
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test] #[test]
fn test_return_sstruct() { fn test_return_sstruct() {

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -15,6 +15,9 @@ edition = "2018"
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "0.19.0-pre0" } solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "0.19.0-pre0" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -23,3 +23,15 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
SUCCESS SUCCESS
} }
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]
fn test_entrypoint() {
assert_eq!(SUCCESS, entrypoint(std::ptr::null_mut()));
}
}

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -2,6 +2,7 @@
extern crate solana_sdk; extern crate solana_sdk;
#[derive(Debug)]
pub struct Data<'a> { pub struct Data<'a> {
pub twentyone: u64, pub twentyone: u64,
pub twentytwo: u64, pub twentytwo: u64,
@ -11,6 +12,7 @@ pub struct Data<'a> {
pub array: &'a [u8], pub array: &'a [u8],
} }
#[derive(PartialEq, Debug)]
pub struct TestDep { pub struct TestDep {
pub thirty: u32, pub thirty: u32,
} }
@ -21,3 +23,24 @@ impl<'a> TestDep {
} }
} }
} }
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]
fn test_dep() {
let array = [0xA, 0xB, 0xC, 0xD, 0xE, 0xF];
let data = Data {
twentyone: 21u64,
twentytwo: 22u64,
twentythree: 23u64,
twentyfour: 24u64,
twentyfive: 25u32,
array: &array,
};
assert_eq!(TestDep { thirty: 30 }, TestDep::new(&data, 1, 2, 3, 4, 5));
}
}

View File

@ -14,6 +14,9 @@ edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false } solana-sdk = { path = "../../../../sdk/", version = "0.19.0-pre0", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.19.0-pre0" }
[features] [features]
program = ["solana-sdk/program"] program = ["solana-sdk/program"]
default = ["program"] default = ["program"]

View File

@ -83,7 +83,7 @@ mod bpf {
use solana_sdk::instruction::{AccountMeta, Instruction}; use solana_sdk::instruction::{AccountMeta, Instruction};
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::sysvar::{clock, fees, rewards, slot_hashes, stake_history, rent}; use solana_sdk::sysvar::{clock, fees, rent, rewards, slot_hashes, stake_history};
use std::io::Read; use std::io::Read;
use std::sync::Arc; use std::sync::Arc;
@ -132,7 +132,7 @@ mod bpf {
AccountMeta::new(rewards::id(), false), AccountMeta::new(rewards::id(), false),
AccountMeta::new(slot_hashes::id(), false), AccountMeta::new(slot_hashes::id(), false),
AccountMeta::new(stake_history::id(), false), AccountMeta::new(stake_history::id(), false),
AccountMeta::new(rent::id(), false) AccountMeta::new(rent::id(), false),
]; ];
let instruction = Instruction::new(program_id, &1u8, account_metas); let instruction = Instruction::new(program_id, &1u8, account_metas);
let result = bank_client.send_instruction(&mint_keypair, instruction); let result = bank_client.send_instruction(&mint_keypair, instruction);

3
sdk/bpf/rust/test/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
/target/
/farf/
Cargo.lock

View File

@ -0,0 +1,12 @@
[package]
name = "solana-sdk-bpf-test"
version = "0.19.0-pre0"
description = "Solana BPF SDK test utilities"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
edition = "2018"
[workspace]
members = []

View File

@ -11,3 +11,15 @@ pub unsafe fn sol_log_(message: *const u8, length: u64) {
pub fn sol_log_64_(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) { pub fn sol_log_64_(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) {
std::println!("{} {} {} {} {}", arg1, arg2, arg3, arg4, arg5); std::println!("{} {} {} {} {}", arg1, arg2, arg3, arg4, arg5);
} }
#[macro_export]
macro_rules! stubs {
() => {
#[test]
fn pull_in_externs() {
use $crate::*;
unsafe { sol_log_("sol_log_".as_ptr(), 8) };
sol_log_64_(1, 2, 3, 4, 5);
}
};
}

View File

@ -25,7 +25,6 @@ pub mod timing;
pub mod account_info; pub mod account_info;
pub mod entrypoint; pub mod entrypoint;
pub mod log; pub mod log;
pub mod program_test;
// Modules not usable by on-chain programs // Modules not usable by on-chain programs
#[cfg(not(feature = "program"))] #[cfg(not(feature = "program"))]

View File

@ -27,26 +27,35 @@ macro_rules! info {
/// Prints a string to stdout /// Prints a string to stdout
/// ///
/// @param message - Message to print /// @param message - Message to print
#[cfg(feature = "program")]
pub fn sol_log(message: &str) { pub fn sol_log(message: &str) {
unsafe { unsafe {
sol_log_(message.as_ptr(), message.len() as u64); sol_log_(message.as_ptr(), message.len() as u64);
} }
} }
#[cfg(feature = "program")]
extern "C" { extern "C" {
fn sol_log_(message: *const u8, length: u64); fn sol_log_(message: *const u8, length: u64);
} }
#[cfg(not(feature = "program"))]
pub fn sol_log(_message: &str) {}
/// Prints 64 bit values represented as hexadecimal to stdout /// Prints 64 bit values represented as hexadecimal to stdout
/// ///
/// @param argx - integer arguments to print /// @param argx - integer arguments to print
#[cfg(feature = "program")]
pub fn sol_log_64(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) { pub fn sol_log_64(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) {
unsafe { unsafe {
sol_log_64_(arg1, arg2, arg3, arg4, arg5); sol_log_64_(arg1, arg2, arg3, arg4, arg5);
} }
} }
#[cfg(feature = "program")]
extern "C" { extern "C" {
fn sol_log_64_(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64); fn sol_log_64_(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64);
} }
#[cfg(not(feature = "program"))]
pub fn sol_log_64(_arg1: u64, _arg2: u64, _arg3: u64, _arg4: u64, _arg5: u64) {}
/// Prints the hexadecimal representation of a slice /// Prints the hexadecimal representation of a slice
/// ///
@ -65,7 +74,7 @@ pub fn sol_log_slice(slice: &[u8]) {
#[allow(dead_code)] #[allow(dead_code)]
pub fn sol_log_params(accounts: &[AccountInfo], data: &[u8]) { pub fn sol_log_params(accounts: &[AccountInfo], data: &[u8]) {
for (i, account) in accounts.iter().enumerate() { for (i, account) in accounts.iter().enumerate() {
sol_log("SolKeyedAccount"); sol_log("AccountInfo");
sol_log_64(0, 0, 0, 0, i as u64); sol_log_64(0, 0, 0, 0, i as u64);
sol_log("- Is signer"); sol_log("- Is signer");
sol_log_64(0, 0, 0, 0, account.is_signer as u64); sol_log_64(0, 0, 0, 0, account.is_signer as u64);