Skip to content

Commit

Permalink
xen: fix MISRA regressions on rule 20.9 and 20.12
Browse files Browse the repository at this point in the history
Commit ea59e7d ("xen/bitops: Cleanup and new infrastructure ahead of
rearrangements") introduced new violations on previously clean rules 20.9 and
20.12 (clean on ARM only, right now).

The first is introduced because CONFIG_CC_IS_CLANG in xen/self-tests.h is not
defined in the configuration under analysis. Using "defined()" instead avoids
relying on the preprocessor's behaviour upon encountering an undedfined identifier
and addresses the violation.

The violation of Rule 20.12 is due to "val" being used both as an ordinary argument
in macro RUNTIME_CHECK, and as a stringification operator.

No functional change.

Fixes: ea59e7d ("xen/bitops: Cleanup and new infrastructure ahead of rearrangements")
Signed-off-by: Nicola Vetrini <[email protected]>
Acked-by: Andrew Cooper <[email protected]>
  • Loading branch information
nvetrini authored and andyhhp committed Jun 1, 2024
1 parent 5f7606c commit c2d5e63
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion automation/eclair_analysis/ECLAIR/deviations.ecl
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ deliberate."
-doc_begin="Uses of a macro parameter for ordinary expansion and as an operand
to the # or ## operators within the following macros are deliberate, to provide
useful diagnostic messages to the user."
-config=MC3R1.R20.12,macros+={deliberate, "name(ASSERT||BUILD_BUG_ON||BUILD_BUG_ON_ZERO)"}
-config=MC3R1.R20.12,macros+={deliberate, "name(ASSERT||BUILD_BUG_ON||BUILD_BUG_ON_ZERO||RUNTIME_CHECK)"}
-doc_end

-doc_begin="The helper macro GENERATE_CASE may use a macro parameter for ordinary
Expand Down
2 changes: 1 addition & 1 deletion xen/include/xen/self-tests.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* Clang < 8 can't fold constants through static inlines, causing this to
* fail. Simply skip it for incredibly old compilers.
*/
#if !CONFIG_CC_IS_CLANG || CONFIG_CLANG_VERSION >= 80000
#if !defined(CONFIG_CC_IS_CLANG) || CONFIG_CLANG_VERSION >= 80000
#define COMPILE_CHECK(fn, val, res) \
do { \
typeof(fn(val)) real = fn(val); \
Expand Down

0 comments on commit c2d5e63

Please sign in to comment.