automation/eclair: update configuration of D4.10

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 and update the comment on top of cpufeatures.h.
Add a header inclusion guard to compile.h.
Generate header guards for hypercall-defs.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>
Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
Stefano Stabellini authored and Stefano Stabellini committed 2025-07-03 14:45:45 -07:00
1 parent 047a94b3fe
commit 67b99a3691
7 files changed
+33 -7

No files matched your search

@@ -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))"}
-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
@@ -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||
+12
View File
@@ -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.
+2 -3
View File
@@ -1,7 +1,6 @@
/*
* Explicitly intended for multiple inclusion.
*/
/* This file is intended to be included multiple times. */
/* SAF-8-safe */
#include <xen/lib/x86/cpuid-autogen.h>
/* Number of capability words covered by the featureset words. */
+3
View File
@@ -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@@"
+3
View File
@@ -2,6 +2,8 @@
# the calls of the handlers inside a switch() statement.
BEGIN {
printf("#ifndef XEN_HYPERCALL_DEFS_H\n");
printf("#define XEN_HYPERCALL_DEFS_H\n\n");
printf("/* Generated file, do not edit! */\n\n");
e = 0;
n = 0;
@@ -311,4 +313,5 @@ END {
printf("[__HYPERVISOR_%s] = %d, \\\n", fn[call_fn[i]], n_args[call_fn[i]]);
printf("}\n");
}
printf("\n#endif /* XEN_HYPERCALL_DEFS_H */\n");
}
+5
View File
@@ -12,3 +12,8 @@ s_(.*)_"\1\\n"_
# Trailing \ on all but the final line.
$!s_$_ \\_
# Append closing header guard
$a\
\
#endif /* XEN_COMPILE_H */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.