MCUX CLNS
MCUX Crypto Library Normal Secure
mcuxCsslAnalysis.h
1
/*--------------------------------------------------------------------------*/
2
/* Copyright 2022-2023 NXP */
3
/* */
4
/* NXP Confidential. This software is owned or controlled by NXP and may */
5
/* only be used strictly in accordance with the applicable license terms. */
6
/* By expressly accepting such terms or by downloading, installing, */
7
/* activating and/or otherwise using the software, you are agreeing that */
8
/* you have read, and that you agree to comply with and are bound by, such */
9
/* license terms. If you do not agree to be bound by the applicable license */
10
/* terms, then you may not retain, install, activate or otherwise use the */
11
/* software. */
12
/*--------------------------------------------------------------------------*/
13
/* Security Classification: Company Confidential */
14
/*--------------------------------------------------------------------------*/
15
16
#ifndef MCUX_CSSL_ANALYSIS_H_
17
#define MCUX_CSSL_ANALYSIS_H_
18
19
#define MCUX_CSSL_ANALYSIS_STR(a) #a
20
#define MCUX_CSSL_ANALYSIS_EMPTY()
21
#define MCUX_CSSL_ANALYSIS_DEFER(id) id MCUX_CSSL_ANALYSIS_EMPTY()
22
#define MCUX_CSSL_ANALYSIS_EXPAND(...) __VA_ARGS__
23
24
#define MCUX_CSSL_ANALYSIS_PRAGMA(x) _Pragma(#x)
25
26
/* Example of common patterns, with either just predefined rationale, or a combination of discards. */
27
#define MCUX_CSSL_ANALYSIS_START_PATTERN_HW_READ() \
28
MCUX_CSSL_ANALYSIS_START_SUPPRESS_CAST_TO_OBJECT("Read from a HW peripheral")
29
#define MCUX_CSSL_ANALYSIS_STOP_PATTERN_HW_READ() \
30
MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_CAST_TO_OBJECT()
31
32
#define MCUX_CSSL_ANALYSIS_START_PATTERN_HW_WRITE() \
33
MCUX_CSSL_ANALYSIS_START_SUPPRESS_DISCARD_VOLATILE("Write to a HW peripheral") \
34
MCUX_CSSL_ANALYSIS_START_SUPPRESS_CAST_TO_OBJECT("Write to a HW peripheral")
35
36
#define MCUX_CSSL_ANALYSIS_STOP_PATTERN_HW_WRITE() \
37
MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_CAST_TO_OBJECT() \
38
MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_DISCARD_VOLATILE()
39
40
/* Example of basic violation suppression */
41
#define MCUX_CSSL_ANALYSIS_START_SUPPRESS_DISCARD_VOLATILE(rationale) \
42
MCUX_CSSL_ANALYSIS_CLANG_START_SUPPRESS_WARNING("-Wcast-qual", rationale) \
43
MCUX_CSSL_ANALYSIS_GHS_START_SUPPRESS_WARNING(1836, rationale) \
44
MCUX_CSSL_ANALYSIS_COVERITY_START_SUPPRESS_MISRA(11.8, rationale)
45
46
47
#define MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_DISCARD_VOLATILE() \
48
MCUX_CSSL_ANALYSIS_COVERITY_STOP_SUPPRESS_MISRA("11.8") \
49
MCUX_CSSL_ANALYSIS_GHS_STOP_SUPPRESS_WARNING("1836") \
50
MCUX_CSSL_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING("-Wcast-qual")
51
52
#define MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_FALSE_POSITIVE_10_1() \
53
MCUX_CSSL_ANALYSIS_COVERITY_STOP_SUPPRESS_MISRA(10.1) \
54
55
#define MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_FALSE_POSITIVE_14_3() \
56
MCUX_CSSL_ANALYSIS_COVERITY_STOP_SUPPRESS_MISRA(14.3) \
57
58
#define MCUX_CSSL_ANALYSIS_START_SUPPRESS_FALSE_POSITIVE_10_1(rationale) \
59
MCUX_CSSL_ANALYSIS_COVERITY_START_SUPPRESS_MISRA(10.1, rationale) \
60
61
#define MCUX_CSSL_ANALYSIS_START_SUPPRESS_FALSE_POSITIVE_14_3(rationale) \
62
MCUX_CSSL_ANALYSIS_COVERITY_START_SUPPRESS_MISRA(14.3, rationale) \
63
64
/* Tool specific handling: Coverity MISRA */
65
/* TODO: functionality still to be verified for ICCARM as part of CLNS-5992 */
66
#if defined(__ghs__) || defined(__gcc__) || defined(__ICCARM__) || defined(__GNUC__)
67
68
#define MCUX_CSSL_ANALYSIS_COVERITY_START_SUPPRESS_MISRA(rule_identifier, rationale) \
69
MCUX_CSSL_ANALYSIS_EXPAND(MCUX_CSSL_ANALYSIS_DEFER(MCUX_CSSL_ANALYSIS_PRAGMA)(coverity compliance block deviate MCUX_CSSL_ANALYSIS_STR(MISRA C-2012 Rule rule_identifier) MCUX_CSSL_ANALYSIS_STR(rationale)))
70
71
#define MCUX_CSSL_ANALYSIS_COVERITY_STOP_SUPPRESS_MISRA(rule_identifier) \
72
MCUX_CSSL_ANALYSIS_EXPAND(MCUX_CSSL_ANALYSIS_DEFER(MCUX_CSSL_ANALYSIS_PRAGMA)(coverity compliance end_block MCUX_CSSL_ANALYSIS_STR(MISRA C-2012 Rule rule_identifier)))
73
74
75
#elif defined(__clang__) || defined(__CC_ARM) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
76
/* ... */
77
#else
78
#error Unsupported toolchain, \
79
Please add a proper definition for MCUX_CSSL_ANALYSIS_COVERITY_*_SUPPRESS_MISRA for your toolchain
80
#endif
81
82
/* Tool specific handling: Clang warnings */
83
#if defined(__clang__)
84
#define MCUX_CSSL_ANALYSIS_CLANG_START_SUPPRESS_WARNING(warning_identifier, rationale) \
85
_Pragma("clang diagnostic push") \
86
_Pragma("clang diagnostic ignored \"" warning_identifier "\"")
87
#define MCUX_CSSL_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(warning_identifier) \
88
_Pragma("clang diagnostic pop")
89
#else
90
#define MCUX_CSSL_ANALYSIS_CLANG_START_SUPPRESS_WARNING(warning_identifier, rationale)
91
#define MCUX_CSSL_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(warning_identifier)
92
#endif
93
94
/* Tool specific handling: GHS warnings */
95
#ifdef __ghs__
96
#define MCUX_CSSL_ANALYSIS_GHS_START_SUPPRESS_WARNING(warning_identifier, rationale) \
97
_Pragma("ghs nowarning " ## warning_identifier)
98
#define MCUX_CSSL_ANALYSIS_GHS_STOP_SUPPRESS_WARNING(warning_identifier) \
99
_Pragma("ghs endnowarning")
100
#else
101
#define MCUX_CSSL_ANALYSIS_GHS_START_SUPPRESS_WARNING(warning_identifier, rationale)
102
#define MCUX_CSSL_ANALYSIS_GHS_STOP_SUPPRESS_WARNING(warning_identifier)
103
#endif
104
105
#endif
/* MCUX_CSSL_CORE_ANALYSIS_H_ */
mcuxCsslAnalysis.h
Generated by
1.8.15