Em Tue, Mar 19, 2019 at 06:10:42AM +0000, Song Liu escreveu: > > > > On Mar 18, 2019, at 9:43 AM, Arnaldo Carvalho de Melo <arnaldo.melo@xxxxxxxxx> wrote: > > > > Em Mon, Mar 18, 2019 at 01:38:48PM -0300, Arnaldo Carvalho de Melo escreveu: > >> Em Mon, Mar 11, 2019 at 10:30:48PM -0700, Song Liu escreveu: > >>> This patch enables the annotation of bpf program. > >>> > >>> A new dso type DSO_BINARY_TYPE__BPF_PROG_INFO is introduced to for BPF > >>> programs. In symbol__disassemble(), DSO_BINARY_TYPE__BPF_PROG_INFO dso > >>> calls into a new function symbol__disassemble_bpf(), where annotation > >>> line information is filled based bpf_prog_info and btf saved in given > >>> perf_env. > >>> > >>> symbol__disassemble_bpf() uses libbfd to disassemble bpf programs. > >>> > >>> Signed-off-by: Song Liu <songliubraving@xxxxxx> > >>> --- > >>> tools/build/Makefile.feature | 6 +- > >>> tools/perf/Makefile.config | 4 + > >> > >> I see the changes to these two files, but I can't see the feature test > >> that it triggers, forgot to do a git-add? Or is it in an upcoming patch > >> in this series? > >> > >> After applying this test it "works": > >> > >> make: Entering directory '/home/acme/git/perf/tools/perf' > >> BUILD: Doing 'make -j8' parallel build > >> > >> Auto-detecting system features: > >> ... dwarf: [ on ] > >> ... dwarf_getlocations: [ on ] > >> <SNIP> > >> ... bpf: [ on ] > >> ... libaio: [ on ] > >> ... disassembler-four-args: [ on ] > >> > >> Because you added it to FEATURE_TESTS_BASIC, and this means that if > >> tools/build/feature/test-all.c builds, then what is in > >> FEATURE_TESTS_BASIC is set to 'on', but you didn't add anything to > >> tools/build/feature/test-all.c, so it works because all the other > >> features are present. > >> > >> Take a look at: > >> > >> 2a07d814747b ("tools build feature: Check if libaio is available") > >> > >> To see what needs to be done. > >> > >> Either way, its interesting to break this patch in two, one adding the > >> feature test and another to use it, i.e. the second patch out of this > >> should have the commit log message in this patch. > >> > >> I've applied the patches up to before this one and will continue > >> processing other patches while you address this. > > > > Ok, to continue processing the other patches I chunked out the part > > below into a 3rd patch from the above one and have it applied already. > > Could you please push applied patches to the tmp.perf/bpf-annotation > branch? It is in my perf/core branch already. > Thanks, > Song > > > > > commit f326de312abc3657b0397817c66cd7e1540655f7 > > Author: Song Liu <songliubraving@xxxxxx> > > Date: Mon Mar 11 22:30:48 2019 -0700 > > > > perf symbols: Introduce DSO_BINARY_TYPE__BPF_PROG_INFO > > > > Introduce a new dso type DSO_BINARY_TYPE__BPF_PROG_INFO for BPF programs. In > > symbol__disassemble(), DSO_BINARY_TYPE__BPF_PROG_INFO dso will call into a new > > function symbol__disassemble_bpf() in an upcoming patch, where annotation line > > information is filled based bpf_prog_info and btf saved in given perf_env. > > > > Signed-off-by: Song Liu <songliubraving@xxxxxx> > > Reviewed-by: Jiri Olsa <jolsa@xxxxxxxxxx> > > Cc: Alexei Starovoitov <ast@xxxxxxxxxx> > > Cc: Daniel Borkmann <daniel@xxxxxxxxxxxxx> > > Cc: Namhyung Kim <namhyung@xxxxxxxxxx> > > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > > Cc: Stanislav Fomichev <sdf@xxxxxxxxxx> > > Cc: kernel-team@xxxxxx > > Link: http://lkml.kernel.org/r/20190312053051.2690567-13-songliubraving@xxxxxx > > [ split from a larger patch ] > > Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> > > > > diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c > > index ba58ba603b69..58547c468c65 100644 > > --- a/tools/perf/util/dso.c > > +++ b/tools/perf/util/dso.c > > @@ -184,6 +184,7 @@ int dso__read_binary_type_filename(const struct dso *dso, > > case DSO_BINARY_TYPE__KALLSYMS: > > case DSO_BINARY_TYPE__GUEST_KALLSYMS: > > case DSO_BINARY_TYPE__JAVA_JIT: > > + case DSO_BINARY_TYPE__BPF_PROG_INFO: > > case DSO_BINARY_TYPE__NOT_FOUND: > > ret = -1; > > break; > > diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h > > index bb417c54c25a..c274b5aa839d 100644 > > --- a/tools/perf/util/dso.h > > +++ b/tools/perf/util/dso.h > > @@ -14,6 +14,7 @@ > > > > struct machine; > > struct map; > > +struct perf_env; > > > > enum dso_binary_type { > > DSO_BINARY_TYPE__KALLSYMS = 0, > > @@ -35,6 +36,7 @@ enum dso_binary_type { > > DSO_BINARY_TYPE__KCORE, > > DSO_BINARY_TYPE__GUEST_KCORE, > > DSO_BINARY_TYPE__OPENEMBEDDED_DEBUGINFO, > > + DSO_BINARY_TYPE__BPF_PROG_INFO, > > DSO_BINARY_TYPE__NOT_FOUND, > > }; > > > > @@ -178,17 +180,25 @@ struct dso { > > struct auxtrace_cache *auxtrace_cache; > > int comp; > > > > - /* dso data file */ > > - struct { > > - struct rb_root cache; > > - int fd; > > - int status; > > - u32 status_seen; > > - size_t file_size; > > - struct list_head open_entry; > > - u64 debug_frame_offset; > > - u64 eh_frame_hdr_offset; > > - } data; > > + union { > > + /* dso data file */ > > + struct { > > + struct rb_root cache; > > + int fd; > > + int status; > > + u32 status_seen; > > + size_t file_size; > > + struct list_head open_entry; > > + u64 debug_frame_offset; > > + u64 eh_frame_hdr_offset; > > + } data; > > + /* bpf prog information */ > > + struct { > > + u32 id; > > + u32 sub_id; > > + struct perf_env *env; > > + } bpf_prog; > > + }; > > > > union { /* Tool specific area */ > > void *priv; > > diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c > > index 58442ca5e3c4..5cbad55cd99d 100644 > > --- a/tools/perf/util/symbol.c > > +++ b/tools/perf/util/symbol.c > > @@ -1455,6 +1455,7 @@ static bool dso__is_compatible_symtab_type(struct dso *dso, bool kmod, > > case DSO_BINARY_TYPE__BUILD_ID_CACHE_DEBUGINFO: > > return true; > > > > + case DSO_BINARY_TYPE__BPF_PROG_INFO: > > case DSO_BINARY_TYPE__NOT_FOUND: > > default: > > return false; -- - Arnaldo