mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-08-21 16:31:14 +02:00

This commit adds a utility function to get disassembled text for jited
representation of a BPF program designated by file descriptor.
Function prototype looks as follows:
int get_jited_program_text(int fd, char *text, size_t text_sz)
Where 'fd' is a file descriptor for the program, 'text' and 'text_sz'
refer to a destination buffer for disassembled text.
Output format looks as follows:
18: 77 06 ja L0
1a: 50 pushq %rax
1b: 48 89 e0 movq %rsp, %rax
1e: eb 01 jmp L1
20: 50 L0: pushq %rax
21: 50 L1: pushq %rax
^ ^^^^^^^^ ^ ^^^^^^^^^^^^^^^^^^
| binary insn | textual insn
| representation | representation
| |
instruction offset inferred local label name
The code and makefile changes are inspired by jit_disasm.c from bpftool.
Use llvm libraries to disassemble BPF program instead of libbfd to avoid
issues with disassembly output stability pointed out in [1].
Selftests makefile uses Makefile.feature to detect if LLVM libraries
are available. If that is not the case selftests build proceeds but
the function returns -EOPNOTSUPP at runtime.
[1] commit eb9d1acf63
("bpftool: Add LLVM as default library for disassembling JIT-ed programs")
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20240820102357.3372779-6-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
52 lines
684 B
Plaintext
52 lines
684 B
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
bpftool
|
|
bpf-helpers*
|
|
bpf-syscall*
|
|
test_verifier
|
|
test_maps
|
|
test_lru_map
|
|
test_lpm_map
|
|
test_tag
|
|
FEATURE-DUMP.libbpf
|
|
FEATURE-DUMP.selftests
|
|
fixdep
|
|
/test_progs
|
|
/test_progs-no_alu32
|
|
/test_progs-bpf_gcc
|
|
/test_progs-cpuv4
|
|
test_verifier_log
|
|
feature
|
|
test_sock
|
|
urandom_read
|
|
test_sockmap
|
|
test_lirc_mode2_user
|
|
test_flow_dissector
|
|
flow_dissector_load
|
|
test_tcpnotify_user
|
|
test_libbpf
|
|
test_tcp_check_syncookie_user
|
|
test_sysctl
|
|
xdping
|
|
test_cpp
|
|
*.d
|
|
*.subskel.h
|
|
*.skel.h
|
|
*.lskel.h
|
|
/no_alu32
|
|
/bpf_gcc
|
|
/cpuv4
|
|
/host-tools
|
|
/tools
|
|
/runqslower
|
|
/bench
|
|
/veristat
|
|
/sign-file
|
|
/uprobe_multi
|
|
*.ko
|
|
*.tmp
|
|
xskxceiver
|
|
xdp_redirect_multi
|
|
xdp_synproxy
|
|
xdp_hw_metadata
|
|
xdp_features
|