The Xen sources contain violations of MISRA C:2012 Directive 4.10 whose headline states:
"Precautions shall be taken in order to prevent the contents of a header file
being included more than once".
Following V2, V3 and V4, here are all the rules that have been applied:
- private headers -> <dir>__<filename>_H
- asm-generic headers -> ASM_GENERIC__<filename>_H
- arch/<architecture>/include/asm/<subdir>/<filename>.h -> ASM__<architecture>__<subdir>__<filename>_H
- include/xen -> XEN__<filename>_H
Links to the discussions:
https://lists.xenproject.org/archives/html/xen-devel/2023-09/msg01928.html
https://lists.xenproject.org/archives/html/xen-devel/2023-10/msg01784.html
https://lists.xenproject.org/archives/html/xen-devel/2023-10/msg02073.html
Furthermore, the violations arising from the autogenerated header files
include/xen/compile.h and xen/hypercall-defs.h are addressed.
Changes in v5:
edit inclusion guard naming conventions, according to feedback received
edit inclusion guards in header files reflecting the naming convention
fix some rebasing mistakes left in the previous version
Changes in v4:
add/amend inclusion guards to address violations of the Directive and the new naming convention.
drop teh XEN_ prefix when needed, according to the feedback received.
add inclusion guard naming convention section in CODING_STYLE
Changes in v3:
Add/amend inclusion guards to address violations of the Directive and the new naming convention.
Remove trailing underscores.
Modify creation rule for asm-offsets.h to conform to the new standard and to not generate conflicting
guards between architectures (which is a violation of the Directive).
Alessandro Zucchelli (3):
xen/build: address violation of MISRA C Directive 4.10
CODING_STYLE: Add a section on header guards naming conventions
include/asm-generic: rename inclusion guards for consistency
Maria Celeste Cesario (3):
xen/arm: address violations of MISRA C:2012 Directive 4.10
xen: address violations of MISRA C:2012 Directive 4.10
xen/x86: rename inclusion guards for consistency
Nicola Vetrini (1):
xen: add deviations for MISRA C 2012 Dir D4.10
Simone Ballarin (10):
misra: add deviation for headers that explicitly avoid guards
misra: modify deviations for empty and generated headers
misra: add deviations for direct inclusion guards
xen/arm: address violations of MISRA C:2012 Directive 4.10
xen/x86: address violations of MISRA C:2012 Directive 4.10
x86/EFI: address violations of MISRA C:2012 Directive 4.10
xen/common: address violations of MISRA C:2012 Directive 4.10
xen/efi: address violations of MISRA C:2012 Directive 4.10
xen: address violations of MISRA C:2012 Directive 4.10
x86/asm: address violations of MISRA C:2012 Directive 4.10
CODING_STYLE | 21 ++++++++++++
.../eclair_analysis/ECLAIR/deviations.ecl | 12 +++----
docs/misra/deviations.rst | 6 ++++
docs/misra/safe.json | 32 +++++++++++++++++++
xen/arch/arm/efi/efi-boot.h | 6 ++++
xen/arch/arm/efi/runtime.h | 1 +
xen/arch/arm/include/asm/domain.h | 6 ++--
xen/arch/arm/include/asm/efibind.h | 5 +++
xen/arch/arm/include/asm/event.h | 6 ++--
xen/arch/arm/include/asm/grant_table.h | 6 ++--
xen/arch/arm/include/asm/hypercall.h | 1 +
xen/arch/arm/include/asm/io.h | 6 ++--
xen/arch/arm/include/asm/irq.h | 6 ++--
xen/arch/arm/include/asm/smp.h | 6 ++--
xen/arch/arm/include/asm/spinlock.h | 6 ++--
xen/arch/arm/include/asm/system.h | 6 ++--
xen/arch/x86/Makefile | 9 +++---
xen/arch/x86/cpu/cpu.h | 5 +++
xen/arch/x86/efi/efi-boot.h | 5 +++
xen/arch/x86/efi/runtime.h | 5 +++
xen/arch/x86/include/asm/compat.h | 5 +++
xen/arch/x86/include/asm/cpufeatures.h | 5 +--
xen/arch/x86/include/asm/domain.h | 6 ++--
xen/arch/x86/include/asm/efibind.h | 5 +++
xen/arch/x86/include/asm/event.h | 6 ++--
xen/arch/x86/include/asm/grant_table.h | 6 ++--
xen/arch/x86/include/asm/hypercall.h | 1 +
xen/arch/x86/include/asm/io.h | 6 ++--
xen/arch/x86/include/asm/irq.h | 6 ++--
xen/arch/x86/include/asm/smp.h | 6 ++--
xen/arch/x86/include/asm/spinlock.h | 6 ++--
xen/arch/x86/include/asm/system.h | 6 ++--
xen/arch/x86/x86_64/mmconfig.h | 5 +++
xen/arch/x86/x86_emulate/private.h | 5 +++
xen/build.mk | 13 +++++---
xen/common/decompress.h | 5 +++
xen/common/efi/efi.h | 5 +++
xen/common/event_channel.h | 5 +++
xen/include/Makefile | 16 +++++++---
xen/include/asm-generic/altp2m.h | 6 ++--
xen/include/asm-generic/atomic-ops.h | 6 ++--
xen/include/asm-generic/device.h | 6 ++--
xen/include/asm-generic/div64.h | 6 ++--
xen/include/asm-generic/hardirq.h | 6 ++--
xen/include/asm-generic/iocap.h | 6 ++--
xen/include/asm-generic/monitor.h | 6 ++--
xen/include/asm-generic/paging.h | 6 ++--
xen/include/asm-generic/percpu.h | 6 ++--
xen/include/asm-generic/random.h | 6 ++--
xen/include/asm-generic/softirq.h | 6 ++--
xen/include/asm-generic/vm_event.h | 6 ++--
xen/include/public/arch-x86/cpufeatureset.h | 1 +
xen/include/public/errno.h | 1 +
xen/include/xen/err.h | 8 +++--
xen/include/xen/pci_ids.h | 5 +++
xen/include/xen/softirq.h | 8 +++--
xen/include/xen/vmap.h | 8 +++--
xen/scripts/Makefile.asm-generic | 8 ++++-
58 files changed, 268 insertions(+), 117 deletions(-)
--
2.34.1