automation/eclair: deviate R2.6 for the x86 emulator
PATCH v2 1/1 automation/eclair: deviate R2.6 for the x86 emulator
MISRA C:2012 Rule 2.6 (advisory) states that "a function should not contain unused label declarations".
With CONFIG_HVM=n, private.h defines X86EMUL_NO_FPU, X86EMUL_NO_MMX and X86EMUL_NO_SIMD. The CASE_SIMD_* macros then expand to plain labels instead of case labels, and the gotos to several hand-written simd_* labels are preprocessed out, leaving 91 unused labels in x86_emulate.c. The build already acknowledges this by passing -Wno-unused-label for that object.
Annotating these labels would only add churn to the emulator. As done for Rule 16.2, deviate the rule for the emulator as a whole.
---
v2:
- Drop the __maybe_unused annotations (v1 patch 1) and the CASE_SIMD_* specific deviation (v1 patch 2) in favour of an emulator-wide deviation, following the existing one for Rule 16.2.
automation/eclair_analysis/ECLAIR/deviations.ecl | 5 +++++ docs/misra/deviations.rst | 8 ++++++++ 2 files changed, 13 insertions(+)
automation/eclair_analysis/ECLAIR/deviations.ecl +5 -0
@@ -55,6 +55,11 @@ removed by the compiler, the resulting slowdown is negligible." -config=MC3A2.R2.6,reports+={deliberate, "any_area(text(^.*__maybe_unused.*$))"} -doc_end +-doc_begin="With CONFIG_HVM=n the FPU, MMX and SIMD parts of the x86 emulator are compiled out, leaving labels with no goto targeting them, many generated by the CASE_SIMD_* macros. +Annotating them would only add churn to the emulator, therefore it is deemed better to leave such files as is." +-config=MC3A2.R2.6,reports+={deliberate, "any_area(any_loc(file(^xen/arch/x86/x86_emulate/.*$)))"} +-doc_end + # # Series 3. #
docs/misra/deviations.rst +8 -0
@@ -116,6 +116,14 @@ Deviations related to MISRA C:2012 Rules: such labels poses no risks. - Tagged as `deliberate` for ECLAIR. + * - R2.6 + - With CONFIG_HVM=n the FPU, MMX and SIMD parts of the x86 emulator are + compiled out, leaving labels with no goto targeting them, many of them + generated by the CASE_SIMD_* macros. Annotating them would only add + churn to the emulator, therefore it is deemed better to leave such + files as is. + - Tagged as `deliberate` for ECLAIR. + * - R3.1 - Comments starting with '/\*' and containing URLs are safe as they are not instances of commented-out code.
Signature · 1 line
2.34.1
automation/eclair_analysis/ECLAIR/deviations.ecl removed by the compiler, the resulting slowdown is negligible." · line 61
Quoted 10 lines · Shuaidong Chen
automation/eclair_analysis/ECLAIR/deviations.ecl +4
-0@@ -55,6 +55,11 @@ removed by the compiler, the resulting slowdown is negligible." -config=MC3A2.R2.6,reports+={deliberate, "any_area(text(^.*__maybe_unused.*$))"} -doc_end +-doc_begin="With CONFIG_HVM=n the FPU, MMX and SIMD parts of the x86 emulator are compiled out, leaving labels with no goto targeting them, many generated by the CASE_SIMD_* macros. +Annotating them would only add churn to the emulator, therefore it is deemed better to leave such files as is." +-config=MC3A2.R2.6,reports+={deliberate, "any_area(any_loc(file(^xen/arch/x86/x86_emulate/.*$)))"} +-doc_end
Both the doc above and the one below specifically mention HVM=n. Yet the config= doesn't (and can't, aiui) limit things to that case. Imo either the HVM=n mention wants dropping, or this deviation wants putting in place only when actually HVM=n.
Jan
Quoted 17 lines
docs/misra/deviations.rst +8
-0@@ -116,6 +116,14 @@ Deviations related to MISRA C:2012 Rules: such labels poses no risks. - Tagged as `deliberate` for ECLAIR. + * - R2.6 + - With CONFIG_HVM=n the FPU, MMX and SIMD parts of the x86 emulator are + compiled out, leaving labels with no goto targeting them, many of them + generated by the CASE_SIMD_* macros. Annotating them would only add + churn to the emulator, therefore it is deemed better to leave such + files as is. + - Tagged as `deliberate` for ECLAIR. + * - R3.1 - Comments starting with '/\*' and containing URLs are safe as they are not instances of commented-out code.
Quoted 16 lines · Jan Beulich
automation/eclair_analysis/ECLAIR/deviations.ecl removed by the compiler, the resulting slowdown is negligible." · line 61
Quoted 10 lines · Shuaidong Chen
automation/eclair_analysis/ECLAIR/deviations.ecl +4
-0@@ -55,6 +55,11 @@ removed by the compiler, the resulting slowdown is negligible." -config=MC3A2.R2.6,reports+={deliberate, "any_area(text(^.*__maybe_unused.*$))"} -doc_end +-doc_begin="With CONFIG_HVM=n the FPU, MMX and SIMD parts of the x86 emulator are compiled out, leaving labels with no goto targeting them, many generated by the CASE_SIMD_* macros. +Annotating them would only add churn to the emulator, therefore it is deemed better to leave such files as is." +-config=MC3A2.R2.6,reports+={deliberate, "any_area(any_loc(file(^xen/arch/x86/x86_emulate/.*$)))"} +-doc_endBoth the doc above and the one below specifically mention HVM=n. Yet the config= doesn't (and can't, aiui) limit things to that case. Imo either the HVM=n mention wants dropping, or this deviation wants putting in place only when actually HVM=n.
Quoted 1 line
Jan
Right, I'll drop the HVM=n mention. Limiting the deviation to HVM=n would need the ECLAIR setup to load config conditionally, which seems excessive here. With HVM=y the emulator has no unused labels anyway (-Wno-unused-label is only passed for !HVM), so the wider scope doesn't hide anything. HVM=n stays in the commit message only as the example.
v3 to follow.
Quoted 18 lines
Quoted 18 lines
docs/misra/deviations.rst +8
-0@@ -116,6 +116,14 @@ Deviations related to MISRA C:2012 Rules: such labels poses no risks. - Tagged as `deliberate` for ECLAIR. + * - R2.6 + - With CONFIG_HVM=n the FPU, MMX and SIMD parts of the x86 emulator are + compiled out, leaving labels with no goto targeting them, many of them + generated by the CASE_SIMD_* macros. Annotating them would only add + churn to the emulator, therefore it is deemed better to leave such + files as is. + - Tagged as `deliberate` for ECLAIR. + * - R3.1 - Comments starting with '/\*' and containing URLs are safe as they are not instances of commented-out code.
Signature · 2 lines
Thx and BRs, Shuaidong Chen