Commit b8a195dc authored by Andrii Nakryiko's avatar Andrii Nakryiko
Browse files

libbpf: add bpf_core_type_matches() helper macro

This patch finalizes support for the proposed type match relation in libbpf by
adding bpf_core_type_matches() macro which emits TYPE_MATCH relocation.

Clang support for this relocation was added in [0].

  [0] https://reviews.llvm.org/D126838



Signed-off-by: default avatarDaniel Müller <deso@posteo.net&gt;¬>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org&gt;¬>
Link: https://lore.kernel.org/bpf/20220628160127.607834-7-deso@posteo.net¬
parent ec6209c8
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -184,6 +184,16 @@ enum bpf_enum_value_kind {
#define bpf_core_type_exists(type)					    \
	__builtin_preserve_type_info(*(typeof(type) *)0, BPF_TYPE_EXISTS)

/*
 * Convenience macro to check that provided named type
 * (struct/union/enum/typedef) "matches" that in a target kernel.
 * Returns:
 *    1, if the type matches in the target kernel's BTF;
 *    0, if the type does not match any in the target kernel
 */
#define bpf_core_type_matches(type)					    \
	__builtin_preserve_type_info(*(typeof(type) *)0, BPF_TYPE_MATCHES)

/*
 * Convenience macro to get the byte size of a provided named type
 * (struct/union/enum/typedef) in a target kernel.