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