1 | /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ |
2 | /* Copyright (C) 2018 Netronome Systems, Inc. */ |
3 | |
4 | #ifndef __BPF_TOOL_XLATED_DUMPER_H |
5 | #define __BPF_TOOL_XLATED_DUMPER_H |
6 | |
7 | #define SYM_MAX_NAME 256 |
8 | #define MODULE_MAX_NAME 64 |
9 | |
10 | struct bpf_prog_linfo; |
11 | |
12 | struct kernel_sym { |
13 | unsigned long address; |
14 | char name[SYM_MAX_NAME]; |
15 | char module[MODULE_MAX_NAME]; |
16 | }; |
17 | |
18 | struct dump_data { |
19 | unsigned long address_call_base; |
20 | struct kernel_sym *sym_mapping; |
21 | __u32 sym_count; |
22 | __u64 *jited_ksyms; |
23 | __u32 nr_jited_ksyms; |
24 | struct btf *btf; |
25 | void *func_info; |
26 | __u32 finfo_rec_size; |
27 | const struct bpf_prog_linfo *prog_linfo; |
28 | char scratch_buff[SYM_MAX_NAME + 8]; |
29 | }; |
30 | |
31 | void kernel_syms_load(struct dump_data *dd); |
32 | void kernel_syms_destroy(struct dump_data *dd); |
33 | struct kernel_sym *kernel_syms_search(struct dump_data *dd, unsigned long key); |
34 | void dump_xlated_json(struct dump_data *dd, void *buf, unsigned int len, |
35 | bool opcodes, bool linum); |
36 | void dump_xlated_plain(struct dump_data *dd, void *buf, unsigned int len, |
37 | bool opcodes, bool linum); |
38 | void dump_xlated_for_graph(struct dump_data *dd, void *buf, void *buf_end, |
39 | unsigned int start_index, |
40 | bool opcodes, bool linum); |
41 | |
42 | #endif |
43 | |