From 4ed828e4eed6c9dc96fd90be8660ded78079ca03 Mon Sep 17 00:00:00 2001 From: Dmitri Makarov Date: Tue, 11 May 2021 09:01:44 +0200 Subject: [PATCH] Enable RBPF trace output for BPF tests that are not using bpf_loader --- programs/bpf/Cargo.lock | 3 +++ programs/bpf/Cargo.toml | 1 + programs/bpf/tests/programs.rs | 9 +++++++++ 3 files changed, 13 insertions(+) diff --git a/programs/bpf/Cargo.lock b/programs/bpf/Cargo.lock index 75d96031fd..1d96b31097 100644 --- a/programs/bpf/Cargo.lock +++ b/programs/bpf/Cargo.lock @@ -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", diff --git a/programs/bpf/Cargo.toml b/programs/bpf/Cargo.toml index 81b0430702..284c28b490 100644 --- a/programs/bpf/Cargo.toml +++ b/programs/bpf/Cargo.toml @@ -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" } diff --git a/programs/bpf/tests/programs.rs b/programs/bpf/tests/programs.rs index 65cae0ec91..a1c69959e5 100644 --- a/programs/bpf/tests/programs.rs +++ b/programs/bpf/tests/programs.rs @@ -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());