xref: /openbmc/linux/tools/bpf/bpftool/xlated_dumper.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1afc7c944SJakub Kicinski /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
202ff58dcSJakub Kicinski /* Copyright (C) 2018 Netronome Systems, Inc. */
373bb5b4fSJiong Wang 
473bb5b4fSJiong Wang #ifndef __BPF_TOOL_XLATED_DUMPER_H
573bb5b4fSJiong Wang #define __BPF_TOOL_XLATED_DUMPER_H
673bb5b4fSJiong Wang 
773bb5b4fSJiong Wang #define SYM_MAX_NAME	256
8*dc651944SYafang Shao #define MODULE_MAX_NAME	64
973bb5b4fSJiong Wang 
10b053b439SMartin KaFai Lau struct bpf_prog_linfo;
11b053b439SMartin KaFai Lau 
1273bb5b4fSJiong Wang struct kernel_sym {
1373bb5b4fSJiong Wang 	unsigned long address;
1473bb5b4fSJiong Wang 	char name[SYM_MAX_NAME];
15*dc651944SYafang Shao 	char module[MODULE_MAX_NAME];
1673bb5b4fSJiong Wang };
1773bb5b4fSJiong Wang 
1873bb5b4fSJiong Wang struct dump_data {
1973bb5b4fSJiong Wang 	unsigned long address_call_base;
2073bb5b4fSJiong Wang 	struct kernel_sym *sym_mapping;
2173bb5b4fSJiong Wang 	__u32 sym_count;
22f84192eeSSandipan Das 	__u64 *jited_ksyms;
23f84192eeSSandipan Das 	__u32 nr_jited_ksyms;
24254471e5SYonghong Song 	struct btf *btf;
25254471e5SYonghong Song 	void *func_info;
26254471e5SYonghong Song 	__u32 finfo_rec_size;
27b053b439SMartin KaFai Lau 	const struct bpf_prog_linfo *prog_linfo;
28d5fc73dcSJakub Kicinski 	char scratch_buff[SYM_MAX_NAME + 8];
2973bb5b4fSJiong Wang };
3073bb5b4fSJiong Wang 
3173bb5b4fSJiong Wang void kernel_syms_load(struct dump_data *dd);
3273bb5b4fSJiong Wang void kernel_syms_destroy(struct dump_data *dd);
33f7f62c71SSandipan Das struct kernel_sym *kernel_syms_search(struct dump_data *dd, unsigned long key);
3473bb5b4fSJiong Wang void dump_xlated_json(struct dump_data *dd, void *buf, unsigned int len,
35b053b439SMartin KaFai Lau 		       bool opcodes, bool linum);
3673bb5b4fSJiong Wang void dump_xlated_plain(struct dump_data *dd, void *buf, unsigned int len,
37b053b439SMartin KaFai Lau 		       bool opcodes, bool linum);
38efcef17aSJiong Wang void dump_xlated_for_graph(struct dump_data *dd, void *buf, void *buf_end,
397483a7a7SQuentin Monnet 			   unsigned int start_index,
407483a7a7SQuentin Monnet 			   bool opcodes, bool linum);
4173bb5b4fSJiong Wang 
4273bb5b4fSJiong Wang #endif
43