compiler_types: Identify compiler versions for __builtin_dynamic_object_size
authorKees Cook <kees@kernel.org>
Wed, 16 Apr 2025 17:20:20 +0000 (10:20 -0700)
committerKees Cook <kees@kernel.org>
Mon, 28 Apr 2025 17:32:43 +0000 (10:32 -0700)
Clarify when __builtin_dynamic_object_size() is available. All our
supported Clang versions support it. GCC 12 and later support it. Link
to documentation for both.

Acked-by: Miguel Ojeda <ojeda@kernel.org>
Link: https://lore.kernel.org/r/20250416172016.work.154-kees@kernel.org
Signed-off-by: Kees Cook <kees@kernel.org>
include/linux/compiler_types.h

index 501cffddc2f411589fa5bd279b6db7fd4e763fcb..20881cc761fae6908f71c717c6fde66ab56aab8d 100644 (file)
@@ -449,6 +449,11 @@ struct ftrace_likely_data {
 /*
  * When the size of an allocated object is needed, use the best available
  * mechanism to find it. (For cases where sizeof() cannot be used.)
+ *
+ * Optional: only supported since gcc >= 12
+ *
+ *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html
+ * clang: https://clang.llvm.org/docs/LanguageExtensions.html#evaluating-object-size
  */
 #if __has_builtin(__builtin_dynamic_object_size)
 #define __struct_size(p)       __builtin_dynamic_object_size(p, 0)