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