llvm-project/llvm/lib/Target/BPF
Yonghong Song bba7338b8f BPF: generate BTF info for LD_imm64 loaded function pointer
For an example like below,
    extern int do_work(int);
    long bpf_helper(void *callback_fn);
    long prog() {
        return bpf_helper(&do_work);
    }

The final generated codes look like:
    r1 = do_work ll
    call bpf_helper
    exit
where we have debuginfo for do_work() extern function:
    !17 = !DISubprogram(name: "do_work", ...)

This patch implemented to add additional checking
in processing LD_imm64 operands for possible function pointers
so BTF for bpf function do_work() can be properly generated.
The original llvm function name processReloc() is renamed to
processGlobalValue() to better reflect what the function is doing.

Differential Revision: https://reviews.llvm.org/D100568
2021-04-26 17:23:36 -07:00
..
AsmParser llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Disassembler [BPF] support atomic instructions 2020-12-03 07:38:00 -08:00
MCTargetDesc [BPF] support atomic instructions 2020-12-03 07:38:00 -08:00
TargetInfo llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
BPF.h [BPF][NewPM] Port bpf-adjust-opt to NPM and add it to pipeline 2020-11-26 10:11:26 -08:00
BPF.td
BPFAbstractMemberAccess.cpp BPF: avoid duplicated globals for CORE relocations 2020-10-06 22:37:49 -07:00
BPFAdjustOpt.cpp Update BPFAdjustOpt.cpp to accept select form of or as well 2021-02-20 18:29:58 +09:00
BPFAsmPrinter.cpp
BPFCORE.h
BPFCallingConv.td
BPFCheckAndAdjustIR.cpp
BPFFrameLowering.cpp
BPFFrameLowering.h
BPFISelDAGToDAG.cpp [llvm] Remove redundant return and continue statements (NFC) 2021-01-14 20:30:34 -08:00
BPFISelLowering.cpp BPF: provide better error message for unsupported atomic operations 2021-03-11 19:19:00 -08:00
BPFISelLowering.h BPF: provide better error message for unsupported atomic operations 2021-03-11 19:19:00 -08:00
BPFInstrFormats.td [BPF] support atomic instructions 2020-12-03 07:38:00 -08:00
BPFInstrInfo.cpp
BPFInstrInfo.h
BPFInstrInfo.td [BPF] support atomic instructions 2020-12-03 07:38:00 -08:00
BPFMCInstLower.cpp
BPFMCInstLower.h
BPFMIChecking.cpp [BPF] support atomic instructions 2020-12-03 07:38:00 -08:00
BPFMIPeephole.cpp BPF: Fix a bug in peephole TRUNC elimination optimization 2021-03-02 13:03:42 -08:00
BPFMISimplifyPatchable.cpp
BPFPreserveDIType.cpp BPF: permit type modifiers for __builtin_btf_type_id() relocation 2021-03-04 16:27:23 -08:00
BPFRegisterInfo.cpp
BPFRegisterInfo.h
BPFRegisterInfo.td
BPFSelectionDAGInfo.cpp
BPFSelectionDAGInfo.h
BPFSubtarget.cpp
BPFSubtarget.h
BPFTargetMachine.cpp BPF: Implement TTI.IntImmCost() properly 2021-02-11 08:35:25 -08:00
BPFTargetMachine.h BPF: Implement TTI.IntImmCost() properly 2021-02-11 08:35:25 -08:00
BPFTargetTransformInfo.h [TTI] NFC: Change getCmpSelInstrCost to return InstructionCost 2021-04-13 14:21:01 +01:00
BTF.def [BPF] Add support for floats and doubles 2021-03-05 15:10:11 +01:00
BTF.h
BTFDebug.cpp BPF: generate BTF info for LD_imm64 loaded function pointer 2021-04-26 17:23:36 -07:00
BTFDebug.h BPF: generate BTF info for LD_imm64 loaded function pointer 2021-04-26 17:23:36 -07:00
CMakeLists.txt BPF: Add LLVMTransformUtils in CMakefile LINK_COMPONENTS 2021-02-25 15:43:25 -08:00