Fix missing builtins in C programs linking with compiler_builtins (#17475)

This commit is contained in:
Dmitri Makarov 2021-05-25 19:11:02 +02:00 committed by GitHub
parent a03230338a
commit 3ae4806dae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 2 deletions

View File

@ -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, &params, SOL_ARRAY_SIZE(ka))) {
return ERROR_INVALID_ARGUMENT;
}
uint32_t *data = (uint32_t *)(params.ka[0].data);
*data += 1.5;
return SUCCESS;
}

View File

@ -431,6 +431,7 @@ fn test_program_bpf_sanity() {
programs.extend_from_slice(&[
("alloc", true),
("bpf_to_bpf", true),
("float", true),
("multiple_static", true),
("noop", true),
("noop++", true),

View File

@ -15,7 +15,8 @@ OUT_DIR ?= ./out
OS := $(shell uname)
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
CC := $(LLVM_DIR)/bin/clang
@ -167,7 +168,7 @@ define SO_RULE
$1: $2
@echo "[lld] $1 ($2)"
$(_@)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)))
$(_@)solana-keygen new --no-passphrase --silent -o $(subst .so,-keypair.json,$1)
endif