mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
automation/eclair: add deviations of MISRA C Rule 5.5
MISRA C Rule 5.5 states that "Identifiers shall be distinct from macro names". Update ECLAIR configuration to deviate: - macros expanding to their own name; - clashes between macros and non-callable entities; - clashes related to the selection of specific implementations of string handling functions. Signed-off-by: Federico Serafini <federico.serafini@bugseng.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
This commit is contained in:
1 parent
912412f97a
commit
5add709cc6
2 files changed
+37
No files matched your search
@@ -90,6 +90,22 @@ conform to the directive."
|
||||
-config=MC3R1.R5.3,reports+={safe, "any_area(any_loc(any_exp(macro(^read_debugreg$))&&any_exp(macro(^write_debugreg$))))"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="Macros expanding to their own identifier (e.g., \"#define x x\") are deliberate."
|
||||
-config=MC3R1.R5.5,reports+={deliberate, "all_area(macro(same_id_body())||!macro(!same_id_body()))"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="There is no clash between function like macros and not callable objects."
|
||||
-config=MC3R1.R5.5,reports+={deliberate, "all_area(macro(function_like())||decl(any()))&&all_area(macro(any())||!decl(kind(function))&&!decl(__function_pointer_decls))"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="Clashes between function names and macros are deliberate for string handling functions since some architectures may want to use their own arch-specific implementation."
|
||||
-config=MC3R1.R5.5,reports+={deliberate, "all_area(all_loc(file(^xen/arch/x86/string\\.c|xen/include/xen/string\\.h|xen/lib/.*$)))"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="In libelf, clashes between macros and function names are deliberate and needed to prevent the use of undecorated versions of memcpy, memset and memmove."
|
||||
-config=MC3R1.R5.5,reports+={deliberate, "any_area(decl(kind(function))||any_loc(macro(name(memcpy||memset||memmove))))&&any_area(any_loc(file(^xen/common/libelf/libelf-private\\.h$)))"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="The type \"ret_t\" is deliberately defined multiple times,
|
||||
depending on the guest."
|
||||
-config=MC3R1.R5.6,reports+={deliberate,"any_area(any_loc(text(^.*ret_t.*$)))"}
|
||||
|
||||
@@ -98,6 +98,27 @@ Deviations related to MISRA C:2012 Rules:
|
||||
- __emulate_2op and __emulate_2op_nobyte
|
||||
- read_debugreg and write_debugreg
|
||||
|
||||
* - R5.5
|
||||
- Macros expanding to their own name are allowed.
|
||||
- Tagged as `deliberate` for ECLAIR.
|
||||
|
||||
* - R5.5
|
||||
- Clashes between names of function-like macros and identifiers of
|
||||
non-callable entities are allowed.
|
||||
- Tagged as `deliberate` for ECLAIR.
|
||||
|
||||
* - R5.5
|
||||
- Clashes between function names and macros are deliberate for string
|
||||
handling functions since some architectures may want to use their own
|
||||
arch-specific implementation.
|
||||
- Tagged as `deliberate` for ECLAIR.
|
||||
|
||||
* - R5.5
|
||||
- In libelf, clashes between macros and function names are deliberate and
|
||||
needed to prevent the use of undecorated versions of memcpy, memset and
|
||||
memmove.
|
||||
- Tagged as `deliberate` for ECLAIR.
|
||||
|
||||
* - R5.6
|
||||
- The type ret_t is deliberately defined multiple times depending on the
|
||||
type of guest to service.
|
||||
|
||||