From f107b3f5d598bdeade7d1ab72505a3fdcfe73330 Mon Sep 17 00:00:00 2001 From: chenxiaoyi Date: Wed, 4 Dec 2024 18:06:20 +0800 Subject: [PATCH] stdio: disable fortify of snprintf/sprintf for clang clang does not have builtin function `__builtin_va_arg_pack` Signed-off-by: chenxiaoyi --- include/nuttx/compiler.h | 4 +++- include/stdio.h | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/nuttx/compiler.h b/include/nuttx/compiler.h index eb7aabd2a48..fbc3dd3c08c 100644 --- a/include/nuttx/compiler.h +++ b/include/nuttx/compiler.h @@ -127,7 +127,9 @@ } \ while (0) -# define fortify_va_arg_pack __builtin_va_arg_pack +# if !defined(__clang__) +# define fortify_va_arg_pack __builtin_va_arg_pack +# endif # define fortify_real(fn) __typeof__(fn) __real_##fn __asm__(#fn) # define fortify_function(fn) fortify_real(fn); \ extern __inline__ no_builtin(#fn) \ diff --git a/include/stdio.h b/include/stdio.h index a7d3115d433..65b11586964 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -318,6 +318,7 @@ fortify_function(vsprintf) int vsprintf(FAR char *dest, return ret; } +#ifdef fortify_va_arg_pack fortify_function(snprintf) int snprintf(FAR char *buf, size_t size, FAR const IPTR char *format, ...) { @@ -336,6 +337,7 @@ fortify_function(sprintf) int sprintf(FAR char *buf, return ret; } #endif +#endif #undef EXTERN #if defined(__cplusplus)