Silence objtool warnings from 55d7afa4
The use of __noreturn__ in 55d7afa4ad
on
spl_panic() caused objtool warnings on Linux when the kernel is built
with CONFIG_STACK_VALIDATION=y. This patch works around that by
restricting the application of __noreturn__ to builds for static
analyzers.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #14068
This commit is contained in:
parent
871d66dbf2
commit
eeddd80572
|
@ -54,6 +54,9 @@
|
||||||
/*
|
/*
|
||||||
* Common DEBUG functionality.
|
* Common DEBUG functionality.
|
||||||
*/
|
*/
|
||||||
|
#if defined(__COVERITY__) || defined(__clang_analyzer__)
|
||||||
|
__attribute__((__noreturn__))
|
||||||
|
#endif
|
||||||
extern void spl_panic(const char *file, const char *func, int line,
|
extern void spl_panic(const char *file, const char *func, int line,
|
||||||
const char *fmt, ...) __attribute__((__noreturn__));
|
const char *fmt, ...) __attribute__((__noreturn__));
|
||||||
extern void spl_dumpstack(void);
|
extern void spl_dumpstack(void);
|
||||||
|
|
|
@ -54,8 +54,21 @@
|
||||||
#define __maybe_unused __attribute__((unused))
|
#define __maybe_unused __attribute__((unused))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Without this, we see warnings from objtool during normal Linux builds when
|
||||||
|
* the kernel is built with CONFIG_STACK_VALIDATION=y:
|
||||||
|
*
|
||||||
|
* warning: objtool: tsd_create() falls through to next function __list_add()
|
||||||
|
* warning: objtool: .text: unexpected end of section
|
||||||
|
*
|
||||||
|
* Until the toolchain stops doing this, we must only define this attribute on
|
||||||
|
* spl_panic() when doing static analysis.
|
||||||
|
*/
|
||||||
|
#if defined(__COVERITY__) || defined(__clang_analyzer__)
|
||||||
|
__attribute__((__noreturn__))
|
||||||
|
#endif
|
||||||
extern void spl_panic(const char *file, const char *func, int line,
|
extern void spl_panic(const char *file, const char *func, int line,
|
||||||
const char *fmt, ...) __attribute__((__noreturn__));
|
const char *fmt, ...);
|
||||||
extern void spl_dumpstack(void);
|
extern void spl_dumpstack(void);
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
|
|
Loading…
Reference in New Issue