This patch adds capability field to BTF_ID_FLAGS to record capability information of each kfunc. Note that the capability field is just a placeholder, the actual capability value is set in btf_populate_kfunc_set_cap. Signed-off-by: Juntong Deng <juntong.deng@xxxxxxxxxxx> --- include/linux/btf_ids.h | 6 +++++- tools/bpf/resolve_btfids/main.c | 2 +- tools/include/linux/btf_ids.h | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h index 139bdececdcf..40231ea36058 100644 --- a/include/linux/btf_ids.h +++ b/include/linux/btf_ids.h @@ -19,6 +19,7 @@ struct btf_id_set8 { struct { u32 id; u32 flags; + u32 capability; } pairs[]; }; @@ -65,7 +66,10 @@ word \ __BTF_ID(__ID(__BTF_ID__##prefix##__##name##__), "") #define ____BTF_ID_FLAGS(prefix, name, flags) \ - __BTF_ID(__ID(__BTF_ID__##prefix##__##name##__), ".long " #flags "\n") + __BTF_ID(__ID(__BTF_ID__##prefix##__##name##__), \ + ".long " #flags "\n" \ + ".zero 4 \n") + #define __BTF_ID_FLAGS(prefix, name, flags, ...) \ ____BTF_ID_FLAGS(prefix, name, flags) #define BTF_ID_FLAGS(prefix, name, ...) \ diff --git a/tools/bpf/resolve_btfids/main.c b/tools/bpf/resolve_btfids/main.c index d47191c6e55e..48be22f9a14e 100644 --- a/tools/bpf/resolve_btfids/main.c +++ b/tools/bpf/resolve_btfids/main.c @@ -495,7 +495,7 @@ static int symbols_collect(struct object *obj) * that - 1. */ if (id) { - id->cnt = sym.st_size / sizeof(uint64_t) - 1; + id->cnt = (sym.st_size - sizeof(u32) * 2) / (sizeof(u32) * 3); id->is_set8 = true; } /* set */ diff --git a/tools/include/linux/btf_ids.h b/tools/include/linux/btf_ids.h index 72ea363d434d..a6c9b560b6ce 100644 --- a/tools/include/linux/btf_ids.h +++ b/tools/include/linux/btf_ids.h @@ -16,6 +16,7 @@ struct btf_id_set8 { struct { u32 id; u32 flags; + u32 capability; } pairs[]; }; -- 2.39.5