Enable RBPF trace output for BPF tests that are not using bpf_loader

This commit is contained in:
Dmitri Makarov
2021-05-11 09:01:44 +02:00
committed by Dmitri Makarov
parent 88626b2945
commit 4ed828e4ee
3 changed files with 13 additions and 0 deletions

View File

@ -1,5 +1,7 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3
[[package]] [[package]]
name = "Inflector" name = "Inflector"
version = "0.11.4" version = "0.11.4"
@ -2777,6 +2779,7 @@ dependencies = [
"byteorder 1.3.4", "byteorder 1.3.4",
"elf", "elf",
"itertools 0.10.0", "itertools 0.10.0",
"log",
"miow 0.2.2", "miow 0.2.2",
"net2", "net2",
"solana-account-decoder", "solana-account-decoder",

View File

@ -23,6 +23,7 @@ bincode = "1.1.4"
byteorder = "1.3.2" byteorder = "1.3.2"
elf = "0.0.10" elf = "0.0.10"
itertools = "0.10.0" itertools = "0.10.0"
log = "0.4.11"
miow = "0.2.2" miow = "0.2.2"
net2 = "0.2.37" net2 = "0.2.37"
solana-bpf-loader-program = { path = "../bpf_loader", version = "=1.7.0" } solana-bpf-loader-program = { path = "../bpf_loader", version = "=1.7.0" }

View File

@ -4,6 +4,7 @@
extern crate solana_bpf_loader_program; extern crate solana_bpf_loader_program;
use itertools::izip; use itertools::izip;
use log::{log_enabled, trace, Level::Trace};
use solana_account_decoder::parse_bpf_loader::{ use solana_account_decoder::parse_bpf_loader::{
parse_bpf_upgradeable_loader, BpfUpgradeableLoaderAccountType, parse_bpf_upgradeable_loader, BpfUpgradeableLoaderAccountType,
}; };
@ -252,6 +253,14 @@ fn run_program(
.unwrap(); .unwrap();
println!("TRACE (jit): {}", tracer_display); println!("TRACE (jit): {}", tracer_display);
assert!(false); assert!(false);
} else if log_enabled!(Trace) {
let mut trace_buffer = String::new();
tracer
.as_ref()
.unwrap()
.write(&mut trace_buffer, vm.get_program())
.unwrap();
trace!("BPF Program Instruction Trace:\n{}", trace_buffer);
} }
} }
tracer = Some(vm.get_tracer().clone()); tracer = Some(vm.get_tracer().clone());