bpf: Introduce TYPE_MATCH related constants/macros
authorDaniel Müller <deso@posteo.net>
Tue, 28 Jun 2022 16:01:18 +0000 (16:01 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Wed, 6 Jul 2022 03:24:12 +0000 (20:24 -0700)
In order to provide type match support we require a new type of
relocation which, in turn, requires toolchain support. Recent LLVM/Clang
versions support a new value for the last argument to the
__builtin_preserve_type_info builtin, for example.
With this change we introduce the necessary constants into relevant
header files, mirroring what the compiler may support.

Signed-off-by: Daniel Müller <deso@posteo.net>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220628160127.607834-2-deso@posteo.net
include/uapi/linux/bpf.h
tools/include/uapi/linux/bpf.h
tools/lib/bpf/bpf_core_read.h

index ad9e731..379e68f 100644 (file)
@@ -6786,6 +6786,7 @@ enum bpf_core_relo_kind {
        BPF_CORE_TYPE_SIZE = 9,              /* type size in bytes */
        BPF_CORE_ENUMVAL_EXISTS = 10,        /* enum value existence in target kernel */
        BPF_CORE_ENUMVAL_VALUE = 11,         /* enum value integer value */
+       BPF_CORE_TYPE_MATCHES = 12,          /* type match in target kernel */
 };
 
 /*
index ad9e731..379e68f 100644 (file)
@@ -6786,6 +6786,7 @@ enum bpf_core_relo_kind {
        BPF_CORE_TYPE_SIZE = 9,              /* type size in bytes */
        BPF_CORE_ENUMVAL_EXISTS = 10,        /* enum value existence in target kernel */
        BPF_CORE_ENUMVAL_VALUE = 11,         /* enum value integer value */
+       BPF_CORE_TYPE_MATCHES = 12,          /* type match in target kernel */
 };
 
 /*
index fd48b1f..2308f49 100644 (file)
@@ -29,6 +29,7 @@ enum bpf_type_id_kind {
 enum bpf_type_info_kind {
        BPF_TYPE_EXISTS = 0,            /* type existence in target kernel */
        BPF_TYPE_SIZE = 1,              /* type size in target kernel */
+       BPF_TYPE_MATCHES = 2,           /* type match in target kernel */
 };
 
 /* second argument to __builtin_preserve_enum_value() built-in */