Forward declaration of BTF_KIND_ENUM64 is added by supporting BTF_FWD_ENUM64 as an enumerated value for btf_fwd_kind; an ENUM64 forward is an 8-byte signed enum64 with no values. Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx> --- tools/lib/bpf/btf.c | 7 ++++++- tools/lib/bpf/btf.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c index 2d0840ef599a..44afae098369 100644 --- a/tools/lib/bpf/btf.c +++ b/tools/lib/bpf/btf.c @@ -2418,7 +2418,7 @@ int btf__add_enum64_value(struct btf *btf, const char *name, __u64 value) * Append new BTF_KIND_FWD type with: * - *name*, non-empty/non-NULL name; * - *fwd_kind*, kind of forward declaration, one of BTF_FWD_STRUCT, - * BTF_FWD_UNION, or BTF_FWD_ENUM; + * BTF_FWD_UNION, BTF_FWD_ENUM or BTF_FWD_ENUM64; * Returns: * - >0, type ID of newly added BTF type; * - <0, on error. @@ -2446,6 +2446,11 @@ int btf__add_fwd(struct btf *btf, const char *name, enum btf_fwd_kind fwd_kind) * values; we also assume a standard 4-byte size for it */ return btf__add_enum(btf, name, sizeof(int)); + case BTF_FWD_ENUM64: + /* enum64 forward is similarly just an enum64 with no enum + * values; assume 8 byte size, signed. + */ + return btf__add_enum64(btf, name, sizeof(__u64), true); default: return libbpf_err(-EINVAL); } diff --git a/tools/lib/bpf/btf.h b/tools/lib/bpf/btf.h index 8e6880d91c84..47d3e00b25c7 100644 --- a/tools/lib/bpf/btf.h +++ b/tools/lib/bpf/btf.h @@ -194,6 +194,7 @@ enum btf_fwd_kind { BTF_FWD_STRUCT = 0, BTF_FWD_UNION = 1, BTF_FWD_ENUM = 2, + BTF_FWD_ENUM64 = 3, }; LIBBPF_API int btf__add_fwd(struct btf *btf, const char *name, enum btf_fwd_kind fwd_kind); -- 2.31.1