compiler_types: Refactor the use of btf_type_tag attribute.
authorHao Luo <haoluo@google.com>
Thu, 10 Mar 2022 21:16:55 +0000 (13:16 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 11 Mar 2022 03:13:12 +0000 (19:13 -0800)
Previous patches have introduced the compiler attribute btf_type_tag for
__user and __percpu. The availability of this attribute depends on
some CONFIGs and compiler support. This patch refactors the use
of btf_type_tag by introducing BTF_TYPE_TAG, which hides all the
dependencies.

No functional change.

Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Hao Luo <haoluo@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20220310211655.3173786-1-haoluo@google.com
include/linux/compiler_types.h

index b9a8ae9..1bc760b 100644 (file)
@@ -4,6 +4,13 @@
 
 #ifndef __ASSEMBLY__
 
+#if defined(CONFIG_DEBUG_INFO_BTF) && defined(CONFIG_PAHOLE_HAS_BTF_TAG) && \
+       __has_attribute(btf_type_tag)
+# define BTF_TYPE_TAG(value) __attribute__((btf_type_tag(#value)))
+#else
+# define BTF_TYPE_TAG(value) /* nothing */
+#endif
+
 #ifdef __CHECKER__
 /* address spaces */
 # define __kernel      __attribute__((address_space(0)))
@@ -31,19 +38,11 @@ static inline void __chk_io_ptr(const volatile void __iomem *ptr) { }
 # define __kernel
 # ifdef STRUCTLEAK_PLUGIN
 #  define __user       __attribute__((user))
-# elif defined(CONFIG_DEBUG_INFO_BTF) && defined(CONFIG_PAHOLE_HAS_BTF_TAG) && \
-       __has_attribute(btf_type_tag)
-#  define __user       __attribute__((btf_type_tag("user")))
 # else
-#  define __user
+#  define __user       BTF_TYPE_TAG(user)
 # endif
 # define __iomem
-# if defined(CONFIG_DEBUG_INFO_BTF) && defined(CONFIG_PAHOLE_HAS_BTF_TAG) && \
-       __has_attribute(btf_type_tag)
-#  define __percpu     __attribute__((btf_type_tag("percpu")))
-# else
-#  define __percpu
-# endif
+# define __percpu      BTF_TYPE_TAG(percpu)
 # define __rcu
 # define __chk_user_ptr(x)     (void)0
 # define __chk_io_ptr(x)       (void)0