1 | /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ |
2 | /* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com |
3 | * Copyright (c) 2016 Facebook |
4 | */ |
5 | |
6 | #ifndef __BPF_DISASM_H__ |
7 | #define __BPF_DISASM_H__ |
8 | |
9 | #include <linux/bpf.h> |
10 | #include <linux/kernel.h> |
11 | #include <linux/stringify.h> |
12 | #ifndef __KERNEL__ |
13 | #include <stdio.h> |
14 | #include <string.h> |
15 | #endif |
16 | |
17 | extern const char *const bpf_alu_string[16]; |
18 | extern const char *const bpf_class_string[8]; |
19 | |
20 | const char *func_id_name(int id); |
21 | |
22 | typedef __printf(2, 3) void (*bpf_insn_print_t)(void *private_data, |
23 | const char *, ...); |
24 | typedef const char *(*bpf_insn_revmap_call_t)(void *private_data, |
25 | const struct bpf_insn *insn); |
26 | typedef const char *(*bpf_insn_print_imm_t)(void *private_data, |
27 | const struct bpf_insn *insn, |
28 | __u64 full_imm); |
29 | |
30 | struct bpf_insn_cbs { |
31 | bpf_insn_print_t cb_print; |
32 | bpf_insn_revmap_call_t cb_call; |
33 | bpf_insn_print_imm_t cb_imm; |
34 | void *private_data; |
35 | }; |
36 | |
37 | void print_bpf_insn(const struct bpf_insn_cbs *cbs, |
38 | const struct bpf_insn *insn, |
39 | bool allow_ptr_leaks); |
40 | #endif |
41 | |