mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-05 09:05:53 +01:00
Set the buffer to the code in the BPF linear info. This enables BPF JIT code disassembly by LLVM and capstone. Move the common but minimal disassmble_bpf_image call to disassemble_objdump so that it is only called after falling back to the objdump option. Similarly move the disassmble_bpf function to disassemble_objdump and rename to disassmble_bpf_libbfd to make it clearer that this support relies on libbfd. Signed-off-by: Ian Rogers <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: Alexandre Ghiti <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Athira Rajeev <[email protected]> Cc: Bill Wendling <[email protected]> Cc: Charlie Jenkins <[email protected]> Cc: Collin Funk <[email protected]> Cc: Dmitriy Vyukov <[email protected]> Cc: Dr. David Alan Gilbert <[email protected]> Cc: Eric Biggers <[email protected]> Cc: Haibo Xu <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: James Clark <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Justin Stitt <[email protected]> Cc: Li Huafei <[email protected]> Cc: Masami Hiramatsu <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Nathan Chancellor <[email protected]> Cc: Nick Desaulniers <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Song Liu <[email protected]> Cc: Stephen Brennan <[email protected]> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
84 lines
2.1 KiB
C
84 lines
2.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __PERF_LIBBFD_H
|
|
#define __PERF_LIBBFD_H
|
|
|
|
#include <linux/compiler.h>
|
|
#include <linux/types.h>
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
|
|
struct annotate_args;
|
|
struct build_id;
|
|
struct dso;
|
|
struct inline_node;
|
|
struct symbol;
|
|
|
|
#ifdef HAVE_LIBBFD_SUPPORT
|
|
int libbfd__addr2line(const char *dso_name, u64 addr,
|
|
char **file, unsigned int *line, struct dso *dso,
|
|
bool unwind_inlines, struct inline_node *node,
|
|
struct symbol *sym);
|
|
|
|
|
|
void dso__free_a2l_libbfd(struct dso *dso);
|
|
|
|
int symbol__disassemble_libbfd(const char *filename, struct symbol *sym,
|
|
struct annotate_args *args);
|
|
|
|
int libbfd__read_build_id(const char *filename, struct build_id *bid, bool block);
|
|
|
|
int libbfd_filename__read_debuglink(const char *filename, char *debuglink, size_t size);
|
|
|
|
int symbol__disassemble_bpf_libbfd(struct symbol *sym, struct annotate_args *args);
|
|
|
|
#else // !defined(HAVE_LIBBFD_SUPPORT)
|
|
#include "annotate.h"
|
|
|
|
static inline int libbfd__addr2line(const char *dso_name __always_unused,
|
|
u64 addr __always_unused,
|
|
char **file __always_unused,
|
|
unsigned int *line __always_unused,
|
|
struct dso *dso __always_unused,
|
|
bool unwind_inlines __always_unused,
|
|
struct inline_node *node __always_unused,
|
|
struct symbol *sym __always_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
|
|
static inline void dso__free_a2l_libbfd(struct dso *dso __always_unused)
|
|
{
|
|
}
|
|
|
|
static inline int symbol__disassemble_libbfd(const char *filename __always_unused,
|
|
struct symbol *sym __always_unused,
|
|
struct annotate_args *args __always_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static inline int libbfd__read_build_id(const char *filename __always_unused,
|
|
struct build_id *bid __always_unused,
|
|
bool block __always_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static inline int libbfd_filename__read_debuglink(const char *filename __always_unused,
|
|
char *debuglink __always_unused,
|
|
size_t size __always_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static inline int symbol__disassemble_bpf_libbfd(struct symbol *sym __always_unused,
|
|
struct annotate_args *args __always_unused)
|
|
{
|
|
return SYMBOL_ANNOTATE_ERRNO__NO_LIBOPCODES_FOR_BPF;
|
|
}
|
|
|
|
#endif // defined(HAVE_LIBBFD_SUPPORT)
|
|
|
|
#endif /* __PERF_LIBBFD_H */
|