mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-07 22:42:04 +00:00
bpf: btf: Support flags for BTF_SET8 sets
This commit adds support for flags on BTF_SET8s. struct btf_id_set8 already supported 32 bits worth of flags, but was only used for alignment purposes before. We now use these bits to encode flags. The first use case is tagging kfunc sets with a flag so that pahole can recognize which BTF_ID_FLAGS(func, ..) are actual kfuncs. Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> Link: https://lore.kernel.org/r/7bb152ec76d6c2c930daec88e995bf18484a5ebb.1706491398.git.dxu@dxuuu.xyz Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
2ef61296d2
commit
79b47344bb
@ -21,6 +21,7 @@ struct btf_id_set8 {
|
||||
|
||||
#include <linux/compiler.h> /* for __PASTE */
|
||||
#include <linux/compiler_attributes.h> /* for __maybe_unused */
|
||||
#include <linux/stringify.h>
|
||||
|
||||
/*
|
||||
* Following macros help to define lists of BTF IDs placed
|
||||
@ -183,17 +184,18 @@ extern struct btf_id_set name;
|
||||
* .word (1 << 3) | (1 << 1) | (1 << 2)
|
||||
*
|
||||
*/
|
||||
#define __BTF_SET8_START(name, scope) \
|
||||
#define __BTF_SET8_START(name, scope, flags) \
|
||||
__BTF_ID_LIST(name, local) \
|
||||
asm( \
|
||||
".pushsection " BTF_IDS_SECTION ",\"a\"; \n" \
|
||||
"." #scope " __BTF_ID__set8__" #name "; \n" \
|
||||
"__BTF_ID__set8__" #name ":; \n" \
|
||||
".zero 8 \n" \
|
||||
".zero 4 \n" \
|
||||
".long " __stringify(flags) "\n" \
|
||||
".popsection; \n");
|
||||
|
||||
#define BTF_SET8_START(name) \
|
||||
__BTF_ID_LIST(name, local) \
|
||||
__BTF_SET8_START(name, local)
|
||||
__BTF_SET8_START(name, local, 0)
|
||||
|
||||
#define BTF_SET8_END(name) \
|
||||
asm( \
|
||||
|
Loading…
Reference in New Issue
Block a user