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