Re: [PATCH pahole 2/3] pahole: add libbpf as submodule under lib/bpf

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 6, 2019 at 1:21 PM Andrii Nakryiko
<andrii.nakryiko@xxxxxxxxx> wrote:
>
> On Wed, Feb 6, 2019 at 1:15 PM Arnaldo Carvalho de Melo
> <arnaldo.melo@xxxxxxxxx> wrote:
> >
> > Em Tue, Feb 05, 2019 at 11:24:46PM -0800, Andrii Nakryiko escreveu:
> > > This change allows to use libbpf definitions and APIs from pahole.
> > >
> > > Signed-off-by: Andrii Nakryiko <andriin@xxxxxx>
> > > ---
> > >  .gitmodules    |  3 +++
> > >  CMakeLists.txt | 32 ++++++++++++++++++++++++++++++--
> > >  lib/bpf        |  1 +
> > >  3 files changed, 34 insertions(+), 2 deletions(-)
> > >  create mode 100644 .gitmodules
> > >  create mode 160000 lib/bpf
> > >
> > > diff --git a/.gitmodules b/.gitmodules
> > > new file mode 100644
> > > index 0000000..6be99dc
> > > --- /dev/null
> > > +++ b/.gitmodules
> > > @@ -0,0 +1,3 @@
> > > +[submodule "lib/bpf"]
> > > +     path = lib/bpf
> > > +     url = https://github.com/libbpf/libbpf
> >
> > Nifty, seems to work but then there is a warning about bzero() not being
> > declared:
> >
> > [acme@quaco pahole]$ am /wb/1.patch
> > Applying: pahole: add libbpf as submodule under lib/bpf
> > [master bb826736dc6b] pahole: Add libbpf as submodule under lib/bpf
> >  Author: Andrii Nakryiko <andriin@xxxxxx>
> >  Date: Tue Feb 5 23:24:46 2019 -0800
> >  3 files changed, 34 insertions(+), 2 deletions(-)
> >  create mode 100644 .gitmodules
> >  create mode 160000 lib/bpf
> > [acme@quaco pahole]$ make -C build
> > make: Entering directory '/home/acme/git/pahole/build'
> > -- Checking availability of DWARF and ELF development libraries
> > -- Checking availability of DWARF and ELF development libraries - done
> > -- Submodule update
> > Submodule 'lib/bpf' (https://github.com/libbpf/libbpf) registered for path 'lib/bpf'
> > Cloning into '/home/acme/git/pahole/lib/bpf'...
> > Submodule path 'lib/bpf': checked out 'b19c6dcf623a7adc9e538ddbe2964c2f58dd2417'
> > -- Submodule update - done
> > -- Configuring done
> > -- Generating done
> > -- Build files have been written to: /home/acme/git/pahole/build
> > make[1]: Entering directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target bpf
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [  2%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/bpf.o
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_load_program_xattr’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:225:2: warning: implicit declaration of function ‘bzero’ [-Wimplicit-function-declaration]
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:225:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_verify_program’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:330:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_map_update_elem’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:350:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_map_lookup_elem’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:363:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_map_lookup_elem_flags’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:375:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_map_lookup_and_delete_elem’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:388:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_map_delete_elem’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:400:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_map_get_next_key’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:411:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_obj_pin’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:423:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_obj_get’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:434:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_prog_attach’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:445:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_prog_detach’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:458:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_prog_detach2’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:469:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_prog_query’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:483:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_prog_test_run’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:504:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_prog_test_run_xattr’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:529:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_prog_get_next_id’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:549:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_map_get_next_id’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:564:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_prog_get_fd_by_id’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:578:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_map_get_fd_by_id’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:588:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_btf_get_fd_by_id’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:598:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_obj_get_info_by_fd’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:609:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/bpf.c: In function ‘bpf_raw_tracepoint_open’:
> > /home/acme/git/pahole/lib/bpf/src/bpf.c:625:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> >   bzero(&attr, sizeof(attr));
> >   ^~~~~
> > [  4%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/bpf_prog_linfo.o
> > [  6%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf.o
> > /home/acme/git/pahole/lib/bpf/src/btf.c: In function ‘btf__get_from_id’:
> > /home/acme/git/pahole/lib/bpf/src/btf.c:471:2: warning: implicit declaration of function ‘bzero’ [-Wimplicit-function-declaration]
> >   bzero(ptr, last_size);
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/btf.c:471:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> > [  8%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf.o
> > /home/acme/git/pahole/lib/bpf/src/libbpf.c: In function ‘bpf_program__init’:
> > /home/acme/git/pahole/lib/bpf/src/libbpf.c:310:2: warning: implicit declaration of function ‘bzero’ [-Wimplicit-function-declaration]
> >   bzero(prog, sizeof(*prog));
> >   ^~~~~
> > /home/acme/git/pahole/lib/bpf/src/libbpf.c:310:2: warning: incompatible implicit declaration of built-in function ‘bzero’
> > /home/acme/git/pahole/lib/bpf/src/libbpf.c: In function ‘bpf_program__load’:
> > /home/acme/git/pahole/lib/bpf/src/libbpf.c:1579:3: warning: incompatible implicit declaration of built-in function ‘bzero’
> >    bzero(&result, sizeof(result));
> >    ^~~~~
>

I've fixed includes and posted patch (see "tools/bpf: add missing
strings.h include" in netdev@).

> Strange, the only warning I've got were these:
>
> [  6%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf.o
> /home/andriin/local/pahole/lib/bpf/src/libbpf.c: In function
> ‘bpf_object__add_program’:
> /home/andriin/local/pahole/lib/bpf/src/libbpf.c:362:8: warning:
> assignment makes pointer from integer without a cast [enabled by
> default]
>   progs = reallocarray(progs, nr_progs + 1, sizeof(progs[0]));
>         ^
> /home/andriin/local/pahole/lib/bpf/src/libbpf.c: In function
> ‘bpf_object__elf_collect’:
> /home/andriin/local/pahole/lib/bpf/src/libbpf.c:881:10: warning:
> assignment makes pointer from integer without a cast [enabled by
> default]
>     reloc = reallocarray(reloc, nr_reloc,
>           ^
> /home/andriin/local/pahole/lib/bpf/src/libbpf.c: In function
> ‘bpf_program__reloc_text’:
> /home/andriin/local/pahole/lib/bpf/src/libbpf.c:1333:12: warning:
> assignment makes pointer from integer without a cast [enabled by
> default]
>    new_insn = reallocarray(prog->insns, new_cnt, sizeof(*insn));
>             ^
> Which seemed benign. I'll try to figure out what's going on with bzero
> and will get back. Thanks for taking a look!

I also fixed these warnings through duplicating reallocarray feature
detection that libbpf does in its Makefile. I'm not too happy about
having this in CMake, but that's the same check bcc had to do and once
we switch to using libbpf as shared library this should go away.

Feel free to land this patchset, if you don't have any new concerns.
Until my libbpf patch lands upstream and we update submodule
reference, you might still be getting bzero warnings, but I'll update
submodule soon after patch lands.

>
> > [ 10%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf_errno.o
> > [ 12%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf_probes.o
> > [ 14%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/netlink.o
> > [ 16%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/nlattr.o
> > [ 18%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/str_error.o
> > [ 20%] Linking C static library libbpf.a
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 20%] Built target bpf
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target dwarves
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 22%] Linking C shared library libdwarves.so
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 50%] Built target dwarves
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target codiff
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 52%] Linking C executable codiff
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 54%] Built target codiff
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target dwarves_reorganize
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 56%] Linking C shared library libdwarves_reorganize.so
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 58%] Built target dwarves_reorganize
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target dwarves_emit
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 60%] Linking C shared library libdwarves_emit.so
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 62%] Built target dwarves_emit
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target ctracer
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 64%] Linking C executable ctracer
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 66%] Built target ctracer
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target pglobal
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 68%] Linking C executable pglobal
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 70%] Built target pglobal
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target dtagnames
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 72%] Linking C executable dtagnames
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 74%] Built target dtagnames
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target pfunct
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 76%] Linking C executable pfunct
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 78%] Built target pfunct
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target prefcnt
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 80%] Linking C executable prefcnt
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 82%] Built target prefcnt
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target scncopy
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 84%] Linking C executable scncopy
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 88%] Built target scncopy
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target syscse
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 90%] Linking C executable syscse
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 92%] Built target syscse
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target pahole
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 94%] Linking C executable pahole
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [ 96%] Built target pahole
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > Scanning dependencies of target pdwtags
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > make[2]: Entering directory '/home/acme/git/pahole/build'
> > [ 98%] Linking C executable pdwtags
> > make[2]: Leaving directory '/home/acme/git/pahole/build'
> > [100%] Built target pdwtags
> > make[1]: Leaving directory '/home/acme/git/pahole/build'
> > make: Leaving directory '/home/acme/git/pahole/build'
> > [acme@quaco pahole]$
> >




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux