65 lines · c
1//===- BPFCORE.h - Common info for Compile-Once Run-EveryWhere -*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_BPF_BPFCORE_H10#define LLVM_LIB_TARGET_BPF_BPFCORE_H11 12#include "llvm/ADT/StringRef.h"13#include "llvm/IR/Instructions.h"14 15namespace llvm {16 17class BasicBlock;18class Instruction;19class Module;20 21class BPFCoreSharedInfo {22public:23 enum BTFTypeIdFlag : uint32_t {24 BTF_TYPE_ID_LOCAL_RELOC = 0,25 BTF_TYPE_ID_REMOTE_RELOC,26 27 MAX_BTF_TYPE_ID_FLAG,28 };29 30 enum PreserveTypeInfo : uint32_t {31 PRESERVE_TYPE_INFO_EXISTENCE = 0,32 PRESERVE_TYPE_INFO_SIZE,33 PRESERVE_TYPE_INFO_MATCH,34 35 MAX_PRESERVE_TYPE_INFO_FLAG,36 };37 38 enum PreserveEnumValue : uint32_t {39 PRESERVE_ENUM_VALUE_EXISTENCE = 0,40 PRESERVE_ENUM_VALUE,41 42 MAX_PRESERVE_ENUM_VALUE_FLAG,43 };44 45 /// The attribute attached to globals representing a field access46 static constexpr StringRef AmaAttr = "btf_ama";47 /// The attribute attached to globals representing a type id48 static constexpr StringRef TypeIdAttr = "btf_type_id";49 50 /// llvm.bpf.passthrough builtin seq number51 static uint32_t SeqNum;52 53 /// Insert a bpf passthrough builtin function.54 static Instruction *insertPassThrough(Module *M, BasicBlock *BB,55 Instruction *Input,56 Instruction *Before);57 static void removeArrayAccessCall(CallInst *Call);58 static void removeStructAccessCall(CallInst *Call);59 static void removeUnionAccessCall(CallInst *Call);60};61 62} // namespace llvm63 64#endif65