162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
262306a36Sopenharmony_ci/* Copyright (C) 2018 Netronome Systems, Inc. */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifndef __BPF_TOOL_XLATED_DUMPER_H
562306a36Sopenharmony_ci#define __BPF_TOOL_XLATED_DUMPER_H
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#define SYM_MAX_NAME	256
862306a36Sopenharmony_ci#define MODULE_MAX_NAME	64
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cistruct bpf_prog_linfo;
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cistruct kernel_sym {
1362306a36Sopenharmony_ci	unsigned long address;
1462306a36Sopenharmony_ci	char name[SYM_MAX_NAME];
1562306a36Sopenharmony_ci	char module[MODULE_MAX_NAME];
1662306a36Sopenharmony_ci};
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cistruct dump_data {
1962306a36Sopenharmony_ci	unsigned long address_call_base;
2062306a36Sopenharmony_ci	struct kernel_sym *sym_mapping;
2162306a36Sopenharmony_ci	__u32 sym_count;
2262306a36Sopenharmony_ci	__u64 *jited_ksyms;
2362306a36Sopenharmony_ci	__u32 nr_jited_ksyms;
2462306a36Sopenharmony_ci	struct btf *btf;
2562306a36Sopenharmony_ci	void *func_info;
2662306a36Sopenharmony_ci	__u32 finfo_rec_size;
2762306a36Sopenharmony_ci	const struct bpf_prog_linfo *prog_linfo;
2862306a36Sopenharmony_ci	char scratch_buff[SYM_MAX_NAME + 8];
2962306a36Sopenharmony_ci};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_civoid kernel_syms_load(struct dump_data *dd);
3262306a36Sopenharmony_civoid kernel_syms_destroy(struct dump_data *dd);
3362306a36Sopenharmony_cistruct kernel_sym *kernel_syms_search(struct dump_data *dd, unsigned long key);
3462306a36Sopenharmony_civoid dump_xlated_json(struct dump_data *dd, void *buf, unsigned int len,
3562306a36Sopenharmony_ci		       bool opcodes, bool linum);
3662306a36Sopenharmony_civoid dump_xlated_plain(struct dump_data *dd, void *buf, unsigned int len,
3762306a36Sopenharmony_ci		       bool opcodes, bool linum);
3862306a36Sopenharmony_civoid dump_xlated_for_graph(struct dump_data *dd, void *buf, void *buf_end,
3962306a36Sopenharmony_ci			   unsigned int start_index,
4062306a36Sopenharmony_ci			   bool opcodes, bool linum);
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#endif
43