Message ID | 6da900e1692ac1c1fff554da53dfbbeb1e42ad07.1694510856.git.simone.ballarin@bugseng.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | address violations of MISRA C:2012 Directive 4.10 | expand |
On 12.09.2023 11:36, Simone Ballarin wrote: > This patch modifies deviations for Directive 4.10: > "Precautions shall be taken in order to prevent the contents of > a header file being included more than once" > > This patch avoids the file-based deviation for empty headers, and > replaces it with a comment-based one using the format specified in > docs/misra/safe.json. > > Generated headers are not generally safe against multi-inclusions, > whether a header is safe depends on the nature of the generated code > in the header. For that reason, this patch drops the deviation for > generated headers. > > Signed-off-by: Simone Ballarin <simone.ballarin@bugseng.com> > > --- > Changes in v2: > - use the format introduced with doc/misra/safe.json instead of > a file-based deviation for empty headers > - remove deviation for generated headers > --- > automation/eclair_analysis/ECLAIR/deviations.ecl | 7 ------- > docs/misra/safe.json | 8 ++++++++ > xen/arch/arm/efi/runtime.h | 1 + > xen/include/Makefile | 2 +- > 4 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl > index d8170106b4..9313027af1 100644 > --- a/automation/eclair_analysis/ECLAIR/deviations.ecl > +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl > @@ -78,13 +78,6 @@ inline functions." > -config=MC3R1.D4.9,macros+={deliberate, "loc(file(api:public))"} > -doc_end > > --doc_begin="This header file is autogenerated or empty, therefore it poses no > -risk if included more than once." > --file_tag+={empty_header, "^xen/arch/arm/efi/runtime\\.h$"} > --file_tag+={autogen_headers, "^xen/include/xen/compile\\.h$||^xen/include/generated/autoconf.h$||^xen/include/xen/hypercall-defs.h$"} > --config=MC3R1.D4.10,reports+={safe, "all_area(all_loc(file(empty_header||autogen_headers)))"} > --doc_end > - > -doc_begin="Files that are intended to be included more than once do not need to > conform to the directive." > -config=MC3R1.D4.10,reports+={safe, "first_area(text(^/\\* This file is legitimately included multiple times\\. \\*/$, begin-4))"} > diff --git a/docs/misra/safe.json b/docs/misra/safe.json > index db438c9770..e8e200cb0a 100644 > --- a/docs/misra/safe.json > +++ b/docs/misra/safe.json > @@ -28,6 +28,14 @@ > }, > { > "id": "SAF-3-safe", Noting this, ... > + "analyser": { > + "eclair": "MC3R1.D4.10" > + }, > + "name": "Dir 4.10: empty headers", > + "text": "Empty headers pose no risk if included more than once." > + }, > + { > + "id": "SAF-4-safe", > "analyser": {}, > "name": "Sentinel", > "text": "Next ID to be used" > --- a/xen/arch/arm/efi/runtime.h > +++ b/xen/arch/arm/efi/runtime.h > @@ -1 +1,2 @@ > +/* SAF-2-safe empty header */ > /* Placeholder for ARM-specific runtime include/declarations */ > --- a/xen/include/Makefile > +++ b/xen/include/Makefile > @@ -53,7 +53,7 @@ cmd_compat_h = \ > mv -f $@.new $@ > > quiet_cmd_stub_h = GEN $@ > -cmd_stub_h = echo '/* empty */' >$@ > +cmd_stub_h = echo '/* SAF-2-safe empty header */' >$@ ... there's the same off-by-1 here as there was in patch 1. Jan
diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl index d8170106b4..9313027af1 100644 --- a/automation/eclair_analysis/ECLAIR/deviations.ecl +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl @@ -78,13 +78,6 @@ inline functions." -config=MC3R1.D4.9,macros+={deliberate, "loc(file(api:public))"} -doc_end --doc_begin="This header file is autogenerated or empty, therefore it poses no -risk if included more than once." --file_tag+={empty_header, "^xen/arch/arm/efi/runtime\\.h$"} --file_tag+={autogen_headers, "^xen/include/xen/compile\\.h$||^xen/include/generated/autoconf.h$||^xen/include/xen/hypercall-defs.h$"} --config=MC3R1.D4.10,reports+={safe, "all_area(all_loc(file(empty_header||autogen_headers)))"} --doc_end - -doc_begin="Files that are intended to be included more than once do not need to conform to the directive." -config=MC3R1.D4.10,reports+={safe, "first_area(text(^/\\* This file is legitimately included multiple times\\. \\*/$, begin-4))"} diff --git a/docs/misra/safe.json b/docs/misra/safe.json index db438c9770..e8e200cb0a 100644 --- a/docs/misra/safe.json +++ b/docs/misra/safe.json @@ -28,6 +28,14 @@ }, { "id": "SAF-3-safe", + "analyser": { + "eclair": "MC3R1.D4.10" + }, + "name": "Dir 4.10: empty headers", + "text": "Empty headers pose no risk if included more than once." + }, + { + "id": "SAF-4-safe", "analyser": {}, "name": "Sentinel", "text": "Next ID to be used" diff --git a/xen/arch/arm/efi/runtime.h b/xen/arch/arm/efi/runtime.h index 25afcebed1..5e35184ff4 100644 --- a/xen/arch/arm/efi/runtime.h +++ b/xen/arch/arm/efi/runtime.h @@ -1 +1,2 @@ +/* SAF-2-safe empty header */ /* Placeholder for ARM-specific runtime include/declarations */ diff --git a/xen/include/Makefile b/xen/include/Makefile index 2e61b50139..31782fb177 100644 --- a/xen/include/Makefile +++ b/xen/include/Makefile @@ -53,7 +53,7 @@ cmd_compat_h = \ mv -f $@.new $@ quiet_cmd_stub_h = GEN $@ -cmd_stub_h = echo '/* empty */' >$@ +cmd_stub_h = echo '/* SAF-2-safe empty header */' >$@ quiet_cmd_compat_i = CPP $@ cmd_compat_i = $(CPP) $(filter-out -Wa$(comma)% -include %/include/xen/config.h,$(XEN_CFLAGS)) $(cppflags-y) -o $@ $<
This patch modifies deviations for Directive 4.10: "Precautions shall be taken in order to prevent the contents of a header file being included more than once" This patch avoids the file-based deviation for empty headers, and replaces it with a comment-based one using the format specified in docs/misra/safe.json. Generated headers are not generally safe against multi-inclusions, whether a header is safe depends on the nature of the generated code in the header. For that reason, this patch drops the deviation for generated headers. Signed-off-by: Simone Ballarin <simone.ballarin@bugseng.com> --- Changes in v2: - use the format introduced with doc/misra/safe.json instead of a file-based deviation for empty headers - remove deviation for generated headers --- automation/eclair_analysis/ECLAIR/deviations.ecl | 7 ------- docs/misra/safe.json | 8 ++++++++ xen/arch/arm/efi/runtime.h | 1 + xen/include/Makefile | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-)