Skip to contentSkip to conversation

automation/eclair: deviate R2.6 for the x86 emulator

PATCH Superseded Shuaidong Chen 2 participants 3 messages Nov 10

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

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
index 296340bb4c..4679e8b250 100644
@@ -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
index bee4686675..7e70b2b79f 100644
@@ -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
#1 lore raw

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.
#2 lore raw
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_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.

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