Skip to content

Commit 1c7f4e5

Browse files
committed
Compiler Attributes: Add __diagnose_as for Clang
Clang will perform various compile-time diagnostics on uses of various functions (e.g. simple bounds-checking on strcpy(), etc). These diagnostics can be assigned to other functions (for example, new implementations of the string functions under CONFIG_FORTIFY_SOURCE) using the "diagnose_as_builtin" attribute. This allows those functions to retain their compile-time diagnostic warnings. Cc: Nathan Chancellor <nathan@kernel.org> Cc: llvm@lists.linux.dev Reviewed-by: Miguel Ojeda <ojeda@kernel.org> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20220208225350.1331628-5-keescook@chromium.org
1 parent d694dba commit 1c7f4e5

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

include/linux/compiler_attributes.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,19 @@
100100
# define __copy(symbol)
101101
#endif
102102

103+
/*
104+
* Optional: not supported by gcc
105+
* Optional: only supported since clang >= 14.0
106+
* Optional: not supported by icc
107+
*
108+
* clang: https://clang.llvm.org/docs/AttributeReference.html#diagnose_as_builtin
109+
*/
110+
#if __has_attribute(__diagnose_as_builtin__)
111+
# define __diagnose_as(builtin...) __attribute__((__diagnose_as_builtin__(builtin)))
112+
#else
113+
# define __diagnose_as(builtin...)
114+
#endif
115+
103116
/*
104117
* Don't. Just don't. See commit 771c035372a0 ("deprecate the '__deprecated'
105118
* attribute warnings entirely and for good") for more information.

0 commit comments

Comments
 (0)