Fix missing builtins in C programs linking with compiler_builtins (#17475)
This commit is contained in:
parent
a03230338a
commit
3ae4806dae
|
@ -0,0 +1,19 @@
|
||||||
|
/**
|
||||||
|
* @brief Example C based BPF program that performs operations
|
||||||
|
* on floating point values. The test fails if floating point
|
||||||
|
* emulation functions were not linked to the module.
|
||||||
|
*/
|
||||||
|
#include <solana_sdk.h>
|
||||||
|
|
||||||
|
extern uint64_t entrypoint(const uint8_t *input) {
|
||||||
|
SolAccountInfo ka[1];
|
||||||
|
SolParameters params = (SolParameters) { .ka = ka };
|
||||||
|
|
||||||
|
if (!sol_deserialize(input, ¶ms, SOL_ARRAY_SIZE(ka))) {
|
||||||
|
return ERROR_INVALID_ARGUMENT;
|
||||||
|
}
|
||||||
|
uint32_t *data = (uint32_t *)(params.ka[0].data);
|
||||||
|
*data += 1.5;
|
||||||
|
|
||||||
|
return SUCCESS;
|
||||||
|
}
|
|
@ -431,6 +431,7 @@ fn test_program_bpf_sanity() {
|
||||||
programs.extend_from_slice(&[
|
programs.extend_from_slice(&[
|
||||||
("alloc", true),
|
("alloc", true),
|
||||||
("bpf_to_bpf", true),
|
("bpf_to_bpf", true),
|
||||||
|
("float", true),
|
||||||
("multiple_static", true),
|
("multiple_static", true),
|
||||||
("noop", true),
|
("noop", true),
|
||||||
("noop++", true),
|
("noop++", true),
|
||||||
|
|
|
@ -15,7 +15,8 @@ OUT_DIR ?= ./out
|
||||||
OS := $(shell uname)
|
OS := $(shell uname)
|
||||||
|
|
||||||
LLVM_DIR = $(LOCAL_PATH)../dependencies/bpf-tools/llvm
|
LLVM_DIR = $(LOCAL_PATH)../dependencies/bpf-tools/llvm
|
||||||
LLVM_SYSTEM_INC_DIRS := $(LLVM_DIR)/lib/clang/11.0.1/include
|
LLVM_SYSTEM_INC_DIRS := $(LLVM_DIR)/lib/clang/12.0.1/include
|
||||||
|
COMPILER_RT_DIR = $(LOCAL_PATH)../dependencies/bpf-tools/rust/lib/rustlib/bpfel-unknown-unknown/lib
|
||||||
|
|
||||||
ifdef LLVM_DIR
|
ifdef LLVM_DIR
|
||||||
CC := $(LLVM_DIR)/bin/clang
|
CC := $(LLVM_DIR)/bin/clang
|
||||||
|
@ -167,7 +168,7 @@ define SO_RULE
|
||||||
$1: $2
|
$1: $2
|
||||||
@echo "[lld] $1 ($2)"
|
@echo "[lld] $1 ($2)"
|
||||||
$(_@)mkdir -p $(dir $1)
|
$(_@)mkdir -p $(dir $1)
|
||||||
$(_@)$(LLD) $(BPF_LLD_FLAGS) -o $1 $2
|
$(_@)$(LLD) $(BPF_LLD_FLAGS) -o $1 $2 $(COMPILER_RT_DIR)/libcompiler_builtins-*.rlib
|
||||||
ifeq (,$(wildcard $(subst .so,-keypair.json,$1)))
|
ifeq (,$(wildcard $(subst .so,-keypair.json,$1)))
|
||||||
$(_@)solana-keygen new --no-passphrase --silent -o $(subst .so,-keypair.json,$1)
|
$(_@)solana-keygen new --no-passphrase --silent -o $(subst .so,-keypair.json,$1)
|
||||||
endif
|
endif
|
||||||
|
|
Loading…
Reference in New Issue