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.
# It is not intended for manual editing.
version = 3
[[package]]
name = "Inflector"
version = "0.11.4"
@ -2777,6 +2779,7 @@ dependencies = [
"byteorder 1.3.4",
"elf",
"itertools 0.10.0",
"log",
"miow 0.2.2",
"net2",
"solana-account-decoder",

View File

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

View File

@ -4,6 +4,7 @@
extern crate solana_bpf_loader_program;
use itertools::izip;
use log::{log_enabled, trace, Level::Trace};
use solana_account_decoder::parse_bpf_loader::{
parse_bpf_upgradeable_loader, BpfUpgradeableLoaderAccountType,
};
@ -252,6 +253,14 @@ fn run_program(
.unwrap();
println!("TRACE (jit): {}", tracer_display);
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());