Skip to contentSkip to conversation

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

PATCH In review Shuaidong Chen 2 participants 2 messages Nov 10

lore
Share & tools
lore
#0 lore raw

PATCH v3 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".

Depending on which parts of the x86 emulator are compiled in, some of its labels end up with no goto targeting them. For example, 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.

---
v3:
- Drop the CONFIG_HVM=n specifics from the deviation text, as the deviation itself isn't limited to that configuration.

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.
- Trim the Cc list.

 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..12afc758dd 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="Depending on which parts of the x86 emulator are compiled in, some of its labels, many of them generated by the CASE_SIMD_* macros, may end up with no goto targeting them.
+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..7b983db264 100644
@@ -116,6 +116,14 @@ Deviations related to MISRA C:2012 Rules:
        such labels poses no risks.
      - Tagged as `deliberate` for ECLAIR.
 
+   * - R2.6
+     - Depending on which parts of the x86 emulator are compiled in, some of
+       its labels, many of them generated by the CASE_SIMD_* macros, may end
+       up with no goto targeting them. 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
Acked-by on v3 1/1
#1 lore raw
Quoted 12 lines · Shuaidong Chen

MISRA C:2012 Rule 2.6 (advisory) states that "a function should not contain unused label declarations".

Depending on which parts of the x86 emulator are compiled in, some of its labels end up with no goto targeting them. For example, 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.

Quoted 4 lines

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.

As on a few earlier occasions, the constraint on the ack can be dropped if/when Nicola or somebody else have confirmed / acked the .ecl change.

Jan