From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org,
Andrew Cooper <andrew.cooper3@citrix.com>,
Stefano Stabellini <stefano.stabellini@amd.com>,
michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org,
roger.pau@citrix.com, bertrand.marquis@arm.com,
federico.serafini@bugseng.com
Subject: Re: [PATCH v5] automation/eclair: update configuration of D4.10
Date: Sun, 22 Jun 2025 12:08:02 +0200 [thread overview]
Message-ID: <bb73b812ea04857c29bdf64c570eaafa@bugseng.com> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2506201918100.2978375@ubuntu-linux-20-04-desktop>
On 2025-06-21 04:19, Stefano Stabellini wrote:
> MISRA C Directive 4.10 states that "Precautions shall be taken in order
> to prevent the contents of a header file being included more than
> once".
>
> Add a SAF tag to the existing comment on top of cpufeatures.h.
You say this, but technically the comment is not a SAF comment, just a
regular one that is interpreted to tailor the guideline.
> Add a header inclusion guard to compile.h.
>
> Update ECLAIR configuration to:
> - extend existing deviation to other comments explicitly saying a file
> is intended for multiple inclusion;
> - extend existing deviation to other autogenerated files;
> - tag the guidelines as clean.
>
> Update deviations.rst accordingly.
>
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
> ---
> Changes in v5:
> - add missing spaces in in-code comment
> ---
> automation/eclair_analysis/ECLAIR/deviations.ecl | 11 +++++++----
> automation/eclair_analysis/ECLAIR/tagging.ecl | 1 +
> docs/misra/deviations.rst | 12 ++++++++++++
> xen/arch/x86/include/asm/cpufeatures.h | 8 +++++---
> xen/include/xen/compile.h.in | 3 +++
> xen/tools/process-banner.sed | 5 +++++
> 6 files changed, 33 insertions(+), 7 deletions(-)
>
> diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl
> b/automation/eclair_analysis/ECLAIR/deviations.ecl
> index 9c67358d46..3b5bc87e1d 100644
> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
> @@ -72,11 +72,14 @@ they are not instances of commented-out code."
> -config=MC3A2.D4.3,reports+={deliberate,
> "any_area(any_loc(file(arm64_bitops))&&context(name(int_clear_mask16)))"}
> -doc_end
>
> --doc_begin="Files that are intended to be included more than once do
> not need to
> -conform to the directive."
> +-doc_begin="Files that are intended to be included more than once (and
> have
> +a comment that says this explicitly) do not need to conform to the
> directive."
> -config=MC3A2.D4.10,reports+={safe, "first_area(text(^/\\* This file
> is intended to be included multiple times\\. \\*/$, begin-4))"}
[1] Here
> --config=MC3A2.D4.10,reports+={safe, "first_area(text(^/\\* Generated
> file, do not edit! \\*/$, begin-3))"}
> --config=MC3A2.D4.10,reports+={safe,
> "all_area(all_loc(file(^xen/include/generated/autoconf.h$)))"}
> +-config=MC3A2.D4.10,reports+={safe, "first_area(text(^/\\* Generated
> file, do not edit! \\*/$, begin-3...begin-2))"}
> +-doc_end
> +
> +-doc_begin="Autogenerated files that do not need to conform to the
> directive."
> +-config=MC3A2.D4.10,reports+={safe,
> "all_area(all_loc(file(^xen/include/generated/autoconf\\.h$)))"}
> -doc_end
>
> -doc_begin="Including multiple times a .c file is safe because every
> function or data item
> diff --git a/automation/eclair_analysis/ECLAIR/tagging.ecl
> b/automation/eclair_analysis/ECLAIR/tagging.ecl
> index f9da5d5f4d..b95f07feb0 100644
> --- a/automation/eclair_analysis/ECLAIR/tagging.ecl
> +++ b/automation/eclair_analysis/ECLAIR/tagging.ecl
> @@ -23,6 +23,7 @@
> "MC3A2.D1.1||
> MC3A2.D2.1||
> MC3A2.D4.1||
> +MC3A2.D4.10||
> MC3A2.D4.11||
> MC3A2.D4.14||
> MC3A2.R1.1||
> diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
> index fe0b1e10a2..63caa8f4a2 100644
> --- a/docs/misra/deviations.rst
> +++ b/docs/misra/deviations.rst
> @@ -30,6 +30,18 @@ Deviations related to MISRA C:2012 Directives:
> not to add an additional encapsulation layer.
> - Tagged as `deliberate` for ECLAIR.
>
> + * - D4.10
> + - Files that are intended to be included more than once (and have
> + a comment that says this explicitly) do not need to conform to
> the
> + directive.
> + - Tagged as `safe` for ECLAIR.
> +
> + * - D4.10
> + - There are autogenerated files that do not need to comply to the
> + directive.
> + - Tagged as `safe` for ECLAIR. Such files are:
> + - xen/include/generated/autoconf.h
> +
> * - D4.10
> - Including multiple times a .c file is safe because every
> function or data item
> it defines would in (the common case) be already defined.
> diff --git a/xen/arch/x86/include/asm/cpufeatures.h
> b/xen/arch/x86/include/asm/cpufeatures.h
> index 9e3ed21c02..69041219cb 100644
> --- a/xen/arch/x86/include/asm/cpufeatures.h
> +++ b/xen/arch/x86/include/asm/cpufeatures.h
> @@ -1,6 +1,6 @@
> -/*
> - * Explicitly intended for multiple inclusion.
> - */
> +/* This file is intended to be included multiple times. */
> +/* #ifndef X86_CPUFEATURES_H */
> +/* #define X86_CPUFEATURES_H */
>
Are these two lines really needed? I may be mistaken, but I think the
violation's first location would be the #include below with a comment a
couple of lines above captured by the config at the top [1]. @Federico
thoughts?
> #include <xen/lib/x86/cpuid-autogen.h>
>
> @@ -63,3 +63,5 @@ XEN_CPUFEATURE(USE_VMCALL, X86_SYNTH(30)) /*
> Use VMCALL instead of VMMCAL
>
> /* Total number of capability words, inc synth and bug words. */
> #define NCAPINTS (FSCAPINTS + X86_NR_SYNTH + X86_NR_BUG) /* N 32-bit
> words worth of info */
> +
> +/* #endif X86_CPUFEATURES_H */
> diff --git a/xen/include/xen/compile.h.in
> b/xen/include/xen/compile.h.in
> index 3151d1e7d1..9206341ba6 100644
> --- a/xen/include/xen/compile.h.in
> +++ b/xen/include/xen/compile.h.in
> @@ -1,3 +1,6 @@
> +#ifndef XEN_COMPILE_H
> +#define XEN_COMPILE_H
> +
> #define XEN_COMPILE_DATE "@@date@@"
> #define XEN_COMPILE_TIME "@@time@@"
> #define XEN_COMPILE_BY "@@whoami@@"
> diff --git a/xen/tools/process-banner.sed
> b/xen/tools/process-banner.sed
> index 56c76558bc..4cf3f9a116 100755
> --- a/xen/tools/process-banner.sed
> +++ b/xen/tools/process-banner.sed
> @@ -12,3 +12,8 @@ s_(.*)_"\1\\n"_
>
> # Trailing \ on all but the final line.
> $!s_$_ \\_
> +
> +# Append closing header guard
> +$a\
> +\
> +#endif /* XEN_COMPILE_H */
--
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253
next prev parent reply other threads:[~2025-06-22 10:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-21 2:19 [PATCH v5] automation/eclair: update configuration of D4.10 Stefano Stabellini
2025-06-22 10:08 ` Nicola Vetrini [this message]
2025-06-22 20:58 ` Stefano Stabellini
2025-06-23 6:15 ` Jan Beulich
2025-06-24 1:19 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bb73b812ea04857c29bdf64c570eaafa@bugseng.com \
--to=nicola.vetrini@bugseng.com \
--cc=andrew.cooper3@citrix.com \
--cc=bertrand.marquis@arm.com \
--cc=federico.serafini@bugseng.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=roger.pau@citrix.com \
--cc=sstabellini@kernel.org \
--cc=stefano.stabellini@amd.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.