diff --git a/programs/bpf/tests/programs.rs b/programs/bpf/tests/programs.rs index 58937b5d63..7dd5244640 100644 --- a/programs/bpf/tests/programs.rs +++ b/programs/bpf/tests/programs.rs @@ -1274,7 +1274,7 @@ fn assert_instruction_count() { } let mut passed = true; - println!("\n {:30} expected actual diff", "BPF program"); + println!("\n {:30} expected actual diff", "BPF program"); for program in programs.iter() { let program_id = solana_sdk::pubkey::new_rand(); let key = solana_sdk::pubkey::new_rand(); @@ -1282,7 +1282,14 @@ fn assert_instruction_count() { let parameter_accounts = vec![KeyedAccount::new(&key, false, &mut account)]; let count = run_program(program.0, &program_id, parameter_accounts, &[]).unwrap(); let diff: i64 = count as i64 - program.1 as i64; - println!(" {:30} {:8} {:6} {:+4}", program.0, program.1, count, diff); + println!( + " {:30} {:8} {:6} {:+5} ({:+3.0}%)", + program.0, + program.1, + count, + diff, + 100.0_f64 * count as f64 / program.1 as f64 - 100.0_f64, + ); if count > program.1 { passed = false; } diff --git a/sdk/bpf/c/bpf.ld b/sdk/bpf/c/bpf.ld index 227589c0c5..26ad21ad8a 100644 --- a/sdk/bpf/c/bpf.ld +++ b/sdk/bpf/c/bpf.ld @@ -10,11 +10,6 @@ SECTIONS . = SIZEOF_HEADERS; .text : { *(.text*) } :text .rodata : { *(.rodata*) } :rodata + .data.rel.ro : { *(.data.rel.ro*) } :rodata .dynamic : { *(.dynamic) } :dynamic - .data.rel.ro : { *(.data.rel.ro*) } :dynamic - .dynsym : { *(.dynsym) } :dynamic - .dynstr : { *(.dynstr) } :dynamic - .gnu.hash : { *(.gnu.hash) } :dynamic - .rel.dyn : { *(.rel.dyn) } :dynamic - .hash : { *(.hash) } :dynamic } diff --git a/sdk/bpf/env.sh b/sdk/bpf/env.sh index 85bb596c15..3bdf0555f8 100644 --- a/sdk/bpf/env.sh +++ b/sdk/bpf/env.sh @@ -14,16 +14,3 @@ export CC="$bpf_sdk/dependencies/bpf-tools/llvm/bin/clang" export AR="$bpf_sdk/dependencies/bpf-tools/llvm/bin/llvm-ar" export OBJDUMP="$bpf_sdk/dependencies/bpf-tools/llvm/bin/llvm-objdump" export OBJCOPY="$bpf_sdk/dependencies/bpf-tools/llvm/bin/llvm-objcopy" - -# Use the SDK's version of Rust to build for BPF -export RUSTUP_TOOLCHAIN=bpf -export RUSTFLAGS=" - -C lto=no \ - -C opt-level=2 \ - -C link-arg=-z -C link-arg=notext \ - -C link-arg=-T$bpf_sdk/rust/bpf.ld \ - -C link-arg=--Bdynamic \ - -C link-arg=-shared \ - -C link-arg=--threads=1 \ - -C link-arg=--entry=entrypoint \ - -C linker=$bpf_sdk/dependencies/bpf-tools/llvm/bin/ld.lld" diff --git a/sdk/bpf/rust/bpf.ld b/sdk/bpf/rust/bpf.ld deleted file mode 100644 index b57c196a10..0000000000 --- a/sdk/bpf/rust/bpf.ld +++ /dev/null @@ -1,15 +0,0 @@ -PHDRS -{ - text PT_LOAD ; - rodata PT_LOAD ; - dynamic PT_DYNAMIC ; -} - -SECTIONS -{ - . = SIZEOF_HEADERS; - .text : { *(.text*) } :text - .rodata : { *(.rodata*) } :rodata - .data.rel.ro : { *(.data.rel.ro*) } :rodata - .dynamic : { *(.dynamic) } :dynamic -} diff --git a/sdk/bpf/rust/build.sh b/sdk/bpf/rust/build.sh deleted file mode 100755 index 11ab8c1581..0000000000 --- a/sdk/bpf/rust/build.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -if [[ "$#" -ne 1 ]]; then - echo "Error: Must provide the full path to the project to build" - exit 1 -fi -if [[ ! -f "$1/Cargo.toml" ]]; then - echo "Error: Cannot find project: $1" - exit 1 -fi -bpf_sdk=$(cd "$(dirname "$0")/.." && pwd) - -echo "Building $1" -set -e -# shellcheck source=sdk/bpf/env.sh -source "$bpf_sdk"/env.sh - -cd "$1" -"$XARGO" build --target "$XARGO_TARGET" --release --no-default-features --features program - -{ { set +x; } 2>/dev/null; echo Success; } diff --git a/sdk/bpf/rust/clean.sh b/sdk/bpf/rust/clean.sh deleted file mode 100755 index 4bbe75cf0e..0000000000 --- a/sdk/bpf/rust/clean.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -if [ "$#" -ne 1 ]; then - echo "Error: Must provide the full path to the project to build" - exit 1 -fi -if [ ! -f "$1/Cargo.toml" ]; then - echo "Error: Cannot find project: $1" - exit 1 -fi - -cd "$1" - -set -e - -echo "Cleaning $1" -cargo clean diff --git a/sdk/bpf/scripts/install.sh b/sdk/bpf/scripts/install.sh index d36b087bc2..2da6710be9 100755 --- a/sdk/bpf/scripts/install.sh +++ b/sdk/bpf/scripts/install.sh @@ -92,7 +92,7 @@ if [[ ! -e criterion-$version.md || ! -e criterion ]]; then fi # Install Rust-BPF -version=v1.7 +version=v1.8 if [[ ! -e bpf-tools-$version.md || ! -e bpf-tools ]]; then ( set -e diff --git a/sdk/cargo-build-bpf/src/main.rs b/sdk/cargo-build-bpf/src/main.rs index a0a84f8fd9..0677517f7a 100644 --- a/sdk/cargo-build-bpf/src/main.rs +++ b/sdk/cargo-build-bpf/src/main.rs @@ -360,7 +360,7 @@ fn build_bpf_package(config: &Config, target_directory: &Path, package: &cargo_m install_if_missing( &config, "bpf-tools", - "v1.7", + "v1.8", "https://github.com/solana-labs/bpf-tools/releases/download", &PathBuf::from(bpf_tools_filename), ) @@ -377,20 +377,6 @@ fn build_bpf_package(config: &Config, target_directory: &Path, package: &cargo_m env::set_var("AR", llvm_bin.join("llvm-ar")); env::set_var("OBJDUMP", llvm_bin.join("llvm-objdump")); env::set_var("OBJCOPY", llvm_bin.join("llvm-objcopy")); - let linker = llvm_bin.join("ld.lld"); - let linker_script = config.bpf_sdk.join("rust").join("bpf.ld"); - let mut rust_flags = String::from("-C lto=no"); - rust_flags.push_str(" -C opt-level=2"); - rust_flags.push_str(" -C link-arg=-z -C link-arg=notext"); - rust_flags.push_str(" -C link-arg=-T"); - rust_flags.push_str(linker_script.to_str().unwrap()); - rust_flags.push_str(" -C link-arg=--Bdynamic"); - rust_flags.push_str(" -C link-arg=-shared"); - rust_flags.push_str(" -C link-arg=--threads=1"); - rust_flags.push_str(" -C link-arg=--entry=entrypoint"); - rust_flags.push_str(" -C linker="); - rust_flags.push_str(linker.to_str().unwrap()); - env::set_var("RUSTFLAGS", rust_flags); let cargo_build = PathBuf::from("cargo"); let mut cargo_build_args = vec![