Bump Rust-BPF to v1.46 (#15273)
This commit is contained in:
@ -1,10 +1,10 @@
|
||||
//! @brief Test builtin mem functions
|
||||
|
||||
#![cfg(target_arch = "bpf")]
|
||||
#![feature(compiler_builtins_lib)]
|
||||
#![feature(rustc_private)]
|
||||
|
||||
extern crate compiler_builtins;
|
||||
use solana_program::{custom_panic_default, entrypoint::SUCCESS, info};
|
||||
use solana_program::{custom_panic_default, entrypoint::SUCCESS};
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {
|
||||
|
@ -1213,7 +1213,7 @@ fn assert_instruction_count() {
|
||||
programs.extend_from_slice(&[
|
||||
("bpf_to_bpf", 13),
|
||||
("multiple_static", 8),
|
||||
("noop", 57),
|
||||
("noop", 45),
|
||||
("relative_call", 10),
|
||||
("sanity", 176),
|
||||
("sanity++", 177),
|
||||
@ -1224,16 +1224,16 @@ fn assert_instruction_count() {
|
||||
#[cfg(feature = "bpf_rust")]
|
||||
{
|
||||
programs.extend_from_slice(&[
|
||||
("solana_bpf_rust_128bit", 572),
|
||||
("solana_bpf_rust_alloc", 12919),
|
||||
("solana_bpf_rust_128bit", 570),
|
||||
("solana_bpf_rust_alloc", 8809),
|
||||
("solana_bpf_rust_dep_crate", 2),
|
||||
("solana_bpf_rust_external_spend", 514),
|
||||
("solana_bpf_rust_external_spend", 526),
|
||||
("solana_bpf_rust_iter", 724),
|
||||
("solana_bpf_rust_many_args", 237),
|
||||
("solana_bpf_rust_noop", 488),
|
||||
("solana_bpf_rust_param_passing", 48),
|
||||
("solana_bpf_rust_ristretto", 19399),
|
||||
("solana_bpf_rust_sanity", 935),
|
||||
("solana_bpf_rust_noop", 500),
|
||||
("solana_bpf_rust_param_passing", 56),
|
||||
("solana_bpf_rust_ristretto", 19208),
|
||||
("solana_bpf_rust_sanity", 956),
|
||||
]);
|
||||
}
|
||||
|
||||
|
3
sdk/bpf/.gitignore
vendored
3
sdk/bpf/.gitignore
vendored
@ -1,7 +1,8 @@
|
||||
/dependencies/criterion*
|
||||
/dependencies/hashbrown*
|
||||
/dependencies/llvm-native*
|
||||
/dependencies/rust-bpf*
|
||||
/dependencies/rust-bpf-sysroot*
|
||||
/dependencies/bpf-tools*
|
||||
/dependencies/xargo*
|
||||
/dependencies/bin*
|
||||
/dependencies/.crates.toml
|
||||
|
@ -14,14 +14,8 @@ TEST_PREFIX ?= test_
|
||||
OUT_DIR ?= ./out
|
||||
OS := $(shell uname)
|
||||
|
||||
ifeq ($(DOCKER),1)
|
||||
$(warning DOCKER=1 is experimential and may not work as advertised)
|
||||
LLVM_DIR = $(LOCAL_PATH)../dependencies/llvm-docker/
|
||||
LLVM_SYSTEM_INC_DIRS := /usr/local/lib/clang/8.0.0/include
|
||||
else
|
||||
LLVM_DIR = $(LOCAL_PATH)../dependencies/llvm-native/
|
||||
LLVM_DIR = $(LOCAL_PATH)../dependencies/bpf-tools/llvm/
|
||||
LLVM_SYSTEM_INC_DIRS := $(LLVM_DIR)/lib/clang/8.0.0/include
|
||||
endif
|
||||
|
||||
ifdef LLVM_DIR
|
||||
CC := $(LLVM_DIR)/bin/clang
|
||||
|
@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
PROGRAM=$(basename "$0")
|
||||
SDKROOT="$(cd "$(dirname "$0")"/../..; pwd -P)"
|
||||
[[ -z $V ]] || set -x
|
||||
exec docker run \
|
||||
--workdir "$PWD" \
|
||||
--volume "$PWD:$PWD" \
|
||||
--volume "$SDKROOT:$SDKROOT" \
|
||||
--rm solanalabs/llvm \
|
||||
"$PROGRAM" "$@"
|
@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
PROGRAM=$(basename "$0")
|
||||
SDKROOT="$(cd "$(dirname "$0")"/../..; pwd -P)"
|
||||
[[ -z $V ]] || set -x
|
||||
exec docker run \
|
||||
--workdir "$PWD" \
|
||||
--volume "$PWD:$PWD" \
|
||||
--volume "$SDKROOT:$SDKROOT" \
|
||||
--rm solanalabs/llvm \
|
||||
"$PROGRAM" "$@"
|
@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
PROGRAM=$(basename "$0")
|
||||
SDKROOT="$(cd "$(dirname "$0")"/../..; pwd -P)"
|
||||
[[ -z $V ]] || set -x
|
||||
exec docker run \
|
||||
--workdir "$PWD" \
|
||||
--volume "$PWD:$PWD" \
|
||||
--volume "$SDKROOT:$SDKROOT" \
|
||||
--rm solanalabs/llvm \
|
||||
"$PROGRAM" "$@"
|
@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
PROGRAM=$(basename "$0")
|
||||
SDKROOT="$(cd "$(dirname "$0")"/../..; pwd -P)"
|
||||
[[ -z $V ]] || set -x
|
||||
exec docker run \
|
||||
--workdir "$PWD" \
|
||||
--volume "$PWD:$PWD" \
|
||||
--volume "$SDKROOT:$SDKROOT" \
|
||||
--rm solanalabs/llvm \
|
||||
"$PROGRAM" "$@"
|
@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
PROGRAM=$(basename "$0")
|
||||
SDKROOT="$(cd "$(dirname "$0")"/../..; pwd -P)"
|
||||
[[ -z $V ]] || set -x
|
||||
exec docker run \
|
||||
--workdir "$PWD" \
|
||||
--volume "$PWD:$PWD" \
|
||||
--volume "$SDKROOT:$SDKROOT" \
|
||||
--rm solanalabs/llvm \
|
||||
"$PROGRAM" "$@"
|
@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
PROGRAM=$(basename "$0")
|
||||
SDKROOT="$(cd "$(dirname "$0")"/../..; pwd -P)"
|
||||
[[ -z $V ]] || set -x
|
||||
exec docker run \
|
||||
--workdir "$PWD" \
|
||||
--volume "$PWD:$PWD" \
|
||||
--volume "$SDKROOT:$SDKROOT" \
|
||||
--rm solanalabs/llvm \
|
||||
"$PROGRAM" "$@"
|
@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
read -r -d '' SCRIPT << 'EOM'
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
PROGRAM=$(basename "$0")
|
||||
SDKROOT="$(cd "$(dirname "$0")"/../..; pwd -P)"
|
||||
[[ -z $V ]] || set -x
|
||||
exec docker run \
|
||||
--workdir "$PWD" \
|
||||
--volume "$PWD:$PWD" \
|
||||
--volume "$SDKROOT:$SDKROOT" \
|
||||
--rm solanalabs/llvm \
|
||||
"$PROGRAM" "$@"
|
||||
EOM
|
||||
|
||||
for program in clang clang++ llc ld.lld llvm-objdump llvm-objcopy; do
|
||||
echo "$SCRIPT" > bin/$program
|
||||
done
|
@ -10,10 +10,10 @@ fi
|
||||
"$bpf_sdk"/scripts/install.sh
|
||||
|
||||
# Use the SDK's version of llvm to build the compiler-builtins for BPF
|
||||
export CC="$bpf_sdk/dependencies/llvm-native/bin/clang"
|
||||
export AR="$bpf_sdk/dependencies/llvm-native/bin/llvm-ar"
|
||||
export OBJDUMP="$bpf_sdk/dependencies/llvm-native/bin/llvm-objdump"
|
||||
export OBJCOPY="$bpf_sdk/dependencies/llvm-native/bin/llvm-objcopy"
|
||||
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
|
||||
@ -26,7 +26,7 @@ export RUSTFLAGS="
|
||||
-C link-arg=-shared \
|
||||
-C link-arg=--entry=entrypoint \
|
||||
-C link-arg=-no-threads \
|
||||
-C linker=$bpf_sdk/dependencies/llvm-native/bin/ld.lld"
|
||||
-C linker=$bpf_sdk/dependencies/bpf-tools/llvm/bin/ld.lld"
|
||||
|
||||
# CARGO may be set if run from within cargo, causing
|
||||
# incompatibilities between cargo and xargo versions
|
||||
|
@ -20,14 +20,6 @@ if ! command -v rustfilt > /dev/null; then
|
||||
echo "Error: rustfilt not found. It can be installed by running: cargo install rustfilt"
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v readelf > /dev/null; then
|
||||
if [[ $(uname) = Darwin ]]; then
|
||||
echo "Error: readelf not found. It can be installed by running: brew install binutils"
|
||||
else
|
||||
echo "Error: readelf not found."
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -e
|
||||
out_dir=$(dirname "$dump")
|
||||
@ -39,7 +31,7 @@ dump_mangled=$dump.mangled
|
||||
(
|
||||
set -ex
|
||||
ls -la "$so" > "$dump_mangled"
|
||||
readelf -aW "$so" >>"$dump_mangled"
|
||||
"$bpf_sdk"/dependencies/bpf-tools/llvm/bin/llvm-readelf -aW "$so" >>"$dump_mangled"
|
||||
"$OBJDUMP" -print-imm-hex --source --disassemble "$so" >> "$dump_mangled"
|
||||
sed s/://g < "$dump_mangled" | rustfilt > "$dump"
|
||||
)
|
||||
|
@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
mkdir -p "$(dirname "$0")"/../dependencies
|
||||
cd "$(dirname "$0")"/../dependencies
|
||||
|
||||
if [[ "$(uname)" = Darwin ]]; then
|
||||
@ -128,57 +129,36 @@ if [[ ! -e criterion-$version.md || ! -e criterion ]]; then
|
||||
touch criterion-$version.md
|
||||
fi
|
||||
|
||||
# Install LLVM
|
||||
version=v0.0.15
|
||||
if [[ ! -e llvm-native-$version.md || ! -e llvm-native ]]; then
|
||||
(
|
||||
set -e
|
||||
rm -rf llvm-native*
|
||||
rm -rf xargo
|
||||
job="download \
|
||||
https://github.com/solana-labs/llvm-builder/releases/download \
|
||||
$version \
|
||||
solana-llvm-$machine.tar.bz2 \
|
||||
llvm-native"
|
||||
get $version llvm-native "$job"
|
||||
)
|
||||
exitcode=$?
|
||||
if [[ $exitcode -ne 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
touch llvm-native-$version.md
|
||||
fi
|
||||
|
||||
# Install Rust-BPF
|
||||
version=v0.2.5
|
||||
if [[ ! -e rust-bpf-$machine-$version.md || ! -e rust-bpf-$machine ]]; then
|
||||
version=v1.0
|
||||
if [[ ! -e bpf-tools-$version.md || ! -e bpf-tools ]]; then
|
||||
(
|
||||
set -e
|
||||
rm -rf rust-bpf-$machine*
|
||||
rm -rf bpf-tools*
|
||||
rm -rf xargo
|
||||
job="download \
|
||||
https://github.com/solana-labs/rust-bpf-builder/releases/download \
|
||||
https://github.com/solana-labs/bpf-tools/releases/download \
|
||||
$version \
|
||||
solana-rust-bpf-$machine.tar.bz2 \
|
||||
rust-bpf-$machine"
|
||||
get $version rust-bpf-$machine "$job"
|
||||
solana-bpf-tools-$machine.tar.bz2 \
|
||||
bpf-tools"
|
||||
get $version bpf-tools "$job"
|
||||
|
||||
set -ex
|
||||
./rust-bpf-$machine/bin/rustc --print sysroot
|
||||
./bpf-tools/rust/bin/rustc --print sysroot
|
||||
set +e
|
||||
rustup toolchain uninstall bpf
|
||||
set -e
|
||||
rustup toolchain link bpf rust-bpf-$machine
|
||||
rustup toolchain link bpf bpf-tools/rust
|
||||
)
|
||||
exitcode=$?
|
||||
if [[ $exitcode -ne 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
touch rust-bpf-$machine-$version.md
|
||||
touch bpf-tools-$version.md
|
||||
fi
|
||||
|
||||
# Install Rust-BPF Sysroot sources
|
||||
version=v0.14
|
||||
version=v1.0
|
||||
if [[ ! -e rust-bpf-sysroot-$version.md || ! -e rust-bpf-sysroot ]]; then
|
||||
(
|
||||
set -e
|
||||
|
@ -20,4 +20,4 @@ out_dir=$(dirname "$so_stripped")
|
||||
if [[ ! -d $out_dir ]]; then
|
||||
mkdir -p "$out_dir"
|
||||
fi
|
||||
"$bpf_sdk"/dependencies/llvm-native/bin/llvm-objcopy --strip-all "$so" "$so_stripped"
|
||||
"$bpf_sdk"/dependencies/bpf-tools/llvm/bin/llvm-objcopy --strip-all "$so" "$so_stripped"
|
||||
|
Reference in New Issue
Block a user