Re: [PATCH dwarves v2 0/2] btf: support BTF_KIND_ENUM64

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

 



Em Tue, Jun 28, 2022 at 11:51:52AM +0200, Jiri Olsa escreveu:
> On Wed, Jun 15, 2022 at 04:03:06PM -0700, Yonghong Song wrote:
> > Add support for enum64. For 64-bit enumerator value,
> > previously, the value is truncated into 32bit, e.g.,
> > for the following enum in linux uapi bpf.h,
> >   enum {
> >         BPF_F_INDEX_MASK                = 0xffffffffULL,
> >         BPF_F_CURRENT_CPU               = BPF_F_INDEX_MASK,
> >   /* BPF_FUNC_perf_event_output for sk_buff input context. */
> >         BPF_F_CTXLEN_MASK               = (0xfffffULL << 32),
> >   };
> > 
> > BPF_F_CTXLEN_MASK will be encoded with 0 with BTF_KIND_ENUM
> > after pahole dwarf-to-btf conversion.
> > With this patch, the BPF_F_CTXLEN_MASK will be encoded properly
> > with BTF_KIND_ENUM64.
> 
> yep, tried this on latest vmlinux and got:
> 
> [705813] ENUM64 (anon) size=8
>         BPF_F_INDEX_MASK val=4294967295
>         BPF_F_CURRENT_CPU val=4294967295
>         BPF_F_CTXLEN_MASK val=4503595332403200
> 
> which is correct
> 
> Tested-by: Jiri Olsa <jolsa@xxxxxxxxxx>

I'm testing with v3:

⬢[acme@toolbox pahole]$ pahole -JV vmlinux-v5.18-rc7+ | grep -B10 -A5 BPF_F_CTXLEN_MASK
	BPF_FUNC_xdp_get_buff_len val=188
	BPF_FUNC_xdp_load_bytes val=189
	BPF_FUNC_xdp_store_bytes val=190
	BPF_FUNC_copy_from_user_task val=191
	BPF_FUNC_skb_set_tstamp val=192
	BPF_FUNC_ima_file_hash val=193
	__BPF_FUNC_MAX_ID val=194
[672880] ENUM64 (anon) size=8
	BPF_F_INDEX_MASK val=4294967295
	BPF_F_CURRENT_CPU val=4294967295
	BPF_F_CTXLEN_MASK val=4503595332403200
[672881] ENUM (anon) size=4
	BPF_F_GET_BRANCH_RECORDS_SIZE val=1
[672882] ARRAY (anon) type_id=672304 index_type_id=18 nr_elems=4
[672883] STRUCT (anon) size=16
	tp_name type_id=672266 bits_offset=0

But:

⬢[acme@toolbox pahole]$ pdwtags -F btf vmlinux-v5.18-rc7+ | grep -B10 -A5 BPF_F_CTXLEN_MASK
BTF: idx: 4173, Unknown kind 19
BTF: idx: 4975, Unknown kind 19
BTF: idx: 6673, Unknown kind 19
BTF: idx: 27413, Unknown kind 19
BTF: idx: 30626, Unknown kind 19
BTF: idx: 30829, Unknown kind 19
BTF: idx: 38040, Unknown kind 19
BTF: idx: 56969, Unknown kind 19
BTF: idx: 83004, Unknown kind 19
⬢[acme@toolbox pahole]$

Ok, I need to update pahole's BTF loader to support:

lib/bpf/src/btf.h:#define BTF_KIND_ENUM64		19	/* Enum for up-to 64bit values */


Working on it now.

Jiri, can I keep your Tested-by for v3?

- Arnaldo

> jirka
> 
> > 
> > This patch is on top of tmp.master since tmp.master has not
> > been sync'ed with master branch yet.
> > 
> > Changelogs:
> >   v1 -> v2:
> >     - Add flag --skip_encoding_btf_enum64 to disable newly-added functionality.
> > 
> > Yonghong Song (2):
> >   libbpf: Sync with latest libbpf repo
> >   btf: Support BTF_KIND_ENUM64
> > 
> >  btf_encoder.c     | 65 +++++++++++++++++++++++++++++++++++------------
> >  btf_encoder.h     |  2 +-
> >  dwarf_loader.c    | 12 +++++++++
> >  dwarves.h         |  4 ++-
> >  dwarves_fprintf.c |  6 ++++-
> >  lib/bpf           |  2 +-
> >  pahole.c          | 10 +++++++-
> >  7 files changed, 80 insertions(+), 21 deletions(-)
> > 
> > -- 
> > 2.30.2
> > 

-- 

- Arnaldo



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

  Powered by Linux