Commit 079ec6a3 authored by Thomas Weißschuh's avatar Thomas Weißschuh
Browse files

tools/nolibc: compiler: add macro __nolibc_fallthrough

Recent version of GCC and clang gained -Wimplicit-fallthrough,
warning about implicit fall-through between switch labels.
As nolibc does not control the compilation flags, this can trigger
warnings for when built by the user.
Make use of the "fallthrough" attribute to explicitly annotate the
expected fall-throughs and silence the warning.

Link: https://lore.kernel.org/r/20240930-nolibc-fallthrough-v2-1-2e8d10fe3430@weissschuh.net


Signed-off-by: default avatarThomas Weißschuh <linux@weissschuh.net>
parent 711b5875
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -32,4 +32,10 @@
#  define __no_stack_protector __attribute__((__optimize__("-fno-stack-protector")))
#endif /* __nolibc_has_attribute(no_stack_protector) */

#if __nolibc_has_attribute(fallthrough)
#  define __nolibc_fallthrough do { } while (0); __attribute__((fallthrough))
#else
#  define __nolibc_fallthrough do { } while (0)
#endif /* __nolibc_has_attribute(fallthrough) */

#endif /* _NOLIBC_COMPILER_H */
+2 −1
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include "stdarg.h"
#include "stdlib.h"
#include "string.h"
#include "compiler.h"

#ifndef EOF
#define EOF (-1)
@@ -264,7 +265,7 @@ int vfprintf(FILE *stream, const char *fmt, va_list args)
				case 'p':
					*(out++) = '0';
					*(out++) = 'x';
					/* fall through */
					__nolibc_fallthrough;
				default: /* 'x' and 'p' above */
					u64toh_r(v, out);
					break;