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:
Federico Serafini authored and Stefano Stabellini committed 2024-06-24 16:40:05 -07:00
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.*$)))"}
+21
View File
@@ -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.
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.