Re: [PATCH v4 dwarves 0/5] pahole, btf_encoder: support --btf_features

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

 



Em Wed, Oct 25, 2023 at 02:48:50PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Oct 25, 2023 at 02:43:02PM -0300, Arnaldo Carvalho de Melo escreveu:
> > But 'bpftool bpf' doesn't like it:
>  
> >   $ bpftool btf dump file vmlinux.v5.19.0-rc5+.enum64 raw
> >   Error: failed to load BTF from vmlinux.v5.19.0-rc5+.enum64: Invalid argument
> >   $
>  
> > But it doesn't like it even when not using --btf_features :-\
> > 
> >   $ cp vmlinux.v5.19.0-rc5+ vmlinux.v5.19.0-rc5+.default_btf_encode ; pahole --btf_encode vmlinux.v5.19.0-rc5+.default_btf_encode
> >   $ bpftool btf dump file vmlinux.v5.19.0-rc5+.default_btf_encode raw | wc -l
> >   Error: failed to load BTF from vmlinux.v5.19.0-rc5+.default_btf_encode: Invalid argument
> >   0
> >   $ 
>  
> > I'll try to root cause this problem...
> 
> Random old bpftool on this notebook was the cause, nevermind, I'm back
> testing this, sorry for the noise :-)

Now things look better:

$ cp vmlinux.v5.19.0-rc5+ vmlinux.v5.19.0-rc5+.default_btf_encode ; pahole --btf_encode vmlinux.v5.19.0-rc5+.default_btf_encode
$ cp vmlinux.v5.19.0-rc5+ vmlinux.v5.19.0-rc5+.enum64 ; pahole --btf_encode --btf_features=enum64 vmlinux.v5.19.0-rc5+.enum64
$ bpftool btf dump file vmlinux.v5.19.0-rc5+.enum64 format raw > vmlinux.v5.19.0-rc5+.dump.enum64
$ bpftool btf dump file vmlinux.v5.19.0-rc5+.default_btf_encode format raw > vmlinux.v5.19.0-rc5+.dump.original.default_btf_encode
$ grep '^\[' vmlinux.v5.19.0-rc5+.dump.enum64 | cut -d ' ' -f 2 | sort | uniq -c | sort -k2 > enum64
$ grep '^\[' vmlinux.v5.19.0-rc5+.dump.original.default_btf_encode | cut -d ' ' -f 2 | sort | uniq -c | sort -k2 > original.default_btf_encode
$
$ diff -u original.default_btf_encode enum64
--- original.default_btf_encode	2023-10-25 14:56:45.027645981 -0300
+++ enum64	2023-10-25 14:54:15.024317995 -0300
@@ -1,6 +1,5 @@
    3677 ARRAY
    3362 CONST
-      1 DATASEC
    2109 ENUM
      11 ENUM64
   54147 FUNC
@@ -12,5 +11,4 @@
   10788 STRUCT
    2394 TYPEDEF
    1806 UNION
-    386 VAR
      23 VOLATILE
$

Now with just "var"

$ cp vmlinux.v5.19.0-rc5+ vmlinux.v5.19.0-rc5+.var ; pahole --btf_encode --btf_features=var vmlinux.v5.19.0-rc5+.var
$ bpftool btf dump file vmlinux.v5.19.0-rc5+.var format raw > vmlinux.v5.19.0-rc5+.dump.var
$ grep '^\[' vmlinux.v5.19.0-rc5+.dump.var | cut -d ' ' -f 2 | sort | uniq -c | sort -k2 > var
$ diff -u original.default_btf_encode var
--- original.default_btf_encode	2023-10-25 14:56:45.027645981 -0300
+++ var	2023-10-25 15:04:24.231228667 -0300
@@ -1,8 +1,7 @@
    3677 ARRAY
    3362 CONST
       1 DATASEC
-   2109 ENUM
-     11 ENUM64
+   2120 ENUM
   54147 FUNC
   29055 FUNC_PROTO
     111 FWD
$

vars/datasecs are not removed and enum64 is not encoded, remaining as
enum, so adding the 11 enum64 to the 2109 enums to get 2120 enums.

$ cp vmlinux.v5.19.0-rc5+ vmlinux.v5.19.0-rc5+.float ; pahole --btf_encode --btf_features=float vmlinux.v5.19.0-rc5+.float
$ bpftool btf dump file vmlinux.v5.19.0-rc5+.float format raw > vmlinux.v5.19.0-rc5+.dump.float
$ grep '^\[' vmlinux.v5.19.0-rc5+.dump.float | cut -d ' ' -f 2 | sort | uniq -c | sort -k2 > float
$ diff -u original.default_btf_encode float
--- original.default_btf_encode	2023-10-25 14:56:45.027645981 -0300
+++ float	2023-10-25 15:06:57.441315272 -0300
@@ -1,16 +1,14 @@
    3677 ARRAY
    3362 CONST
-      1 DATASEC
-   2109 ENUM
-     11 ENUM64
+   2120 ENUM
+      2 FLOAT
   54147 FUNC
   29055 FUNC_PROTO
     111 FWD
-     17 INT
+     15 INT
   15345 PTR
       4 RESTRICT
   10788 STRUCT
    2394 TYPEDEF
    1806 UNION
-    386 VAR
      23 VOLATILE
$

vars/datasecs are gone, enums combined, and floats are produced out of ints.

I'll try to script all this so that we we can have it in btfdiff or
another script to compare BTF from two files and then use in another
script to check that the differences are the ones expected for the
combinations of btf_features.

But I guess the acks/reviews + my tests are enough to merge this as-is,
thanks for your work on this!

- Arnaldo




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux