MCUX CLNS
MCUX Crypto Library Normal Secure
mcuxClCore_Analysis.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
14
#ifndef MCUXCLCORE_ANALYSIS_H_
15
#define MCUXCLCORE_ANALYSIS_H_
16
17
#define MCUXCLCORE_ANALYSIS_STR(a) #a
18
#define MCUXCLCORE_ANALYSIS_EMPTY()
19
#define MCUXCLCORE_ANALYSIS_DEFER(id) id MCUXCLCORE_ANALYSIS_EMPTY()
20
#define MCUXCLCORE_ANALYSIS_EXPAND(...) __VA_ARGS__
21
22
#define MCUXCLCORE_ANALYSIS_PRAGMA(x) _Pragma(#x)
23
24
/* Example of common patterns, with either just predefined rationale, or a combination of discards. */
25
#define MCUXCLCORE_ANALYSIS_START_PATTERN_HW_READ() \
26
MCUXCLCORE_ANALYSIS_START_SUPPRESS_DISCARD_VOLATILE("Read from a HW peripheral")
27
#define MCUXCLCORE_ANALYSIS_STOP_PATTERN_HW_READ() \
28
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_DISCARD_VOLATILE()
29
30
#define MCUXCLCORE_ANALYSIS_START_PATTERN_HW_WRITE() \
31
MCUXCLCORE_ANALYSIS_START_SUPPRESS_DISCARD_VOLATILE("Write to a HW peripheral")
32
/*MCUXCLCORE_ANALYSIS_START_SUPPRESS_CAST_TO_OBJECT("Write to a HW peripheral")*/
33
#define MCUXCLCORE_ANALYSIS_STOP_PATTERN_HW_WRITE() \
34
/*MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_CAST_TO_OBJECT()*/
\
35
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_DISCARD_VOLATILE()
36
37
#define MCUXCLCORE_ANALYSIS_START_PATTERN_DESCRIPTIVE_IDENTIFIER() \
38
MCUXCLCORE_ANALYSIS_START_SUPPRESS_AMBIGUOUS_IDENTIFIER("Identifiers longer than 31 characters are allowed for more descriptive naming")
39
#define MCUXCLCORE_ANALYSIS_STOP_PATTERN_DESCRIPTIVE_IDENTIFIER() \
40
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_AMBIGUOUS_IDENTIFIER()
41
42
#define MCUXCLCORE_ANALYSIS_START_PATTERN_REINTERPRET_MEMORY_OF_OPAQUE_TYPES() \
43
MCUXCLCORE_ANALYSIS_START_SUPPRESS_REINTERPRET_MEMORY("explicit pointer casts reinterpreting opaque types of workarea-like buffer objects are allowed.")
44
#define MCUXCLCORE_ANALYSIS_STOP_PATTERN_REINTERPRET_MEMORY() \
45
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_REINTERPRET_MEMORY()
46
/* Rule 11.3: applies to casts between ctx structs
47
* e.g. cast from mcuxClAead_Context_t to more specific type mcuxClAeadModes_Context_t
48
*/
49
#define MCUXCLCORE_ANALYSIS_START_CAST_TO_MORE_SPECIFIC_TYPE() \
50
MCUXCLCORE_ANALYSIS_START_SUPPRESS_REINTERPRET_MEMORY("Cast to a more specific type is allowed")
51
#define MCUXCLCORE_ANALYSIS_STOP_CAST_TO_MORE_SPECIFIC_TYPE() \
52
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_REINTERPRET_MEMORY()
53
54
#define MCUXCLCORE_ANALYSIS_START_PATTERN_EXTERNAL_HEADER() \
55
MCUXCLCORE_ANALYSIS_START_SUPPRESS_C11_EXTENSION("External header outside our control") \
56
MCUXCLCORE_ANALYSIS_START_SUPPRESS_UNDEFINED_VALUE("External header outside our control") \
57
MCUXCLCORE_ANALYSIS_START_SUPPRESS_RESERVED_MACRO_IDENTIFIER("External header outside our control") \
58
MCUXCLCORE_ANALYSIS_START_SUPPRESS_PADDED_TO_ALIGNMENT_BOUNDARY("External header outside our control")
59
#define MCUXCLCORE_ANALYSIS_STOP_PATTERN_EXTERNAL_HEADER() \
60
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_PADDED_TO_ALIGNMENT_BOUNDARY() \
61
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_RESERVED_MACRO_IDENTIFIER() \
62
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_UNDEFINED_VALUE() \
63
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_C11_EXTENSION()
64
65
#define MCUXCLCORE_ANALYSIS_START_PATTERN_OBJ_SIZES() \
66
MCUXCLCORE_ANALYSIS_START_SUPPRESS_UNUSED_VARIABLE("Variables used to determine object sizes") \
67
MCUXCLCORE_ANALYSIS_START_SUPPRESS_MISSING_VARIABLE_DECLARATION("Variables used to determine object sizes")
68
#define MCUXCLCORE_ANALYSIS_STOP_PATTERN_OBJ_SIZES() \
69
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_MISSING_VARIABLE_DECLARATION() \
70
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_UNUSED_VARIABLE()
71
72
#define MCUXCLCORE_ANALYSIS_START_PATTERN_FUP() \
73
MCUXCLCORE_ANALYSIS_START_SUPPRESS_MISSING_VARIABLE_DECLARATION("External declarations are generated by the FUP processing tool")
74
#define MCUXCLCORE_ANALYSIS_STOP_PATTERN_FUP() \
75
MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_MISSING_VARIABLE_DECLARATION()
76
77
/* Example of basic violation suppression */
78
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_DEAD_CODE(rationale) \
79
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_2_1, rationale)
80
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_DEAD_CODE() \
81
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_2_1)
82
83
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_TEXT_IN_COMMENTS(rationale) \
84
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_3_1, rationale)
85
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_TEXT_IN_COMMENTS() \
86
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_3_1)
87
88
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_POINTER_CASTING(rationale) \
89
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_11_3, rationale)
90
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_POINTER_CASTING() \
91
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_11_3)
92
93
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_DISCARD_VOLATILE(rationale) \
94
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wcast-qual, rationale) \
95
MCUXCLCORE_ANALYSIS_GHS_START_SUPPRESS_WARNING(1836, rationale) \
96
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_11_8, rationale)
97
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_DISCARD_VOLATILE() \
98
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_11_8) \
99
MCUXCLCORE_ANALYSIS_GHS_STOP_SUPPRESS_WARNING(1836) \
100
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wcast-qual)
101
102
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_OUT_OF_BOUNDS_ACCESS(rationale) \
103
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_18_1, rationale)
104
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_OUT_OF_BOUNDS_ACCESS() \
105
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_18_1) \
106
107
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_DISCARD_CONST(rationale) \
108
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wcast-qual, rationale) \
109
MCUXCLCORE_ANALYSIS_GHS_START_SUPPRESS_WARNING(1836, rationale) \
110
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_11_8, rationale)
111
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_DISCARD_CONST() \
112
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_11_8) \
113
MCUXCLCORE_ANALYSIS_GHS_STOP_SUPPRESS_WARNING(1836) \
114
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wcast-qual)
115
116
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_DISCARD_CONST_QUALIFIER(rationale) \
117
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_11_8, rationale)
118
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_DISCARD_CONST_QUALIFIER() \
119
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_11_8)
120
121
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_REINTERPRET_MEMORY_BETWEEN_INAPT_ESSENTIAL_TYPES(rationale) \
122
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_11_3, rationale)
123
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_REINTERPRET_MEMORY_BETWEEN_INAPT_ESSENTIAL_TYPES() \
124
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_11_3)
125
126
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_REINTERPRET_MEMORY(rationale) \
127
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_11_3, rationale)
128
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_REINTERPRET_MEMORY() \
129
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_11_3)
130
131
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_TYPECAST_INTEGER_TO_POINTER(rationale) \
132
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_11_4, rationale) \
133
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(CERT_INT36_C, rationale) \
134
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(CERT_MSC15_C, rationale)
135
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_TYPECAST_INTEGER_TO_POINTER() \
136
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(CERT_MSC15_C) \
137
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(CERT_INT36_C) \
138
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_11_4)
139
140
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_AMBIGUOUS_IDENTIFIER(rationale) \
141
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_5_1, rationale)
142
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_AMBIGUOUS_IDENTIFIER() \
143
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_5_1)
144
145
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_REINTERPRET_STRUCT(rationale) \
146
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_11_1, rationale)
147
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_REINTERPRET_STRUCT() \
148
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_11_1)
149
150
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_DECLARED_BUT_NEVER_REFERENCED(rationale) \
151
MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(MISRA_C_2012_Rule_2_2, rationale)
152
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_DECLARED_BUT_NEVER_REFERENCED() \
153
MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(MISRA_C_2012_Rule_2_2)
154
155
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_BOOLEAN_TYPE_FOR_CONDITIONAL_EXPRESSION() \
156
MCUXCLCORE_ANALYSIS_COVERITY_START_FALSE_POSITIVE(MISRA_C_2012_Rule_14_4, "Conditional expression does have a boolean type.")
157
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_BOOLEAN_TYPE_FOR_CONDITIONAL_EXPRESSION() \
158
MCUXCLCORE_ANALYSIS_COVERITY_STOP_FALSE_POSITIVE(MISRA_C_2012_Rule_14_4)
159
160
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_C11_EXTENSION(rationale) \
161
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wc11-extensions, rationale)
162
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_C11_EXTENSION() \
163
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wc11-extensions)
164
165
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_UNDEFINED_VALUE(rationale) \
166
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wundef, rationale)
167
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_UNDEFINED_VALUE() \
168
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wundef)
169
170
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_RESERVED_IDENTIFIER(rationale) \
171
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wreserved-identifier, rationale)
172
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_RESERVED_IDENTIFIER() \
173
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wreserved-identifier)
174
175
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_RESERVED_MACRO_IDENTIFIER(rationale) \
176
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wreserved-macro-identifier, rationale)
177
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_RESERVED_MACRO_IDENTIFIER() \
178
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wreserved-macro-identifier)
179
180
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_MISSING_VARIABLE_DECLARATION(rationale) \
181
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wmissing-variable-declarations, rationale)
182
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_MISSING_VARIABLE_DECLARATION() \
183
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wmissing-variable-declarations)
184
185
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_UNUSED_VARIABLE(rationale) \
186
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wunused-variable, rationale)
187
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_UNUSED_VARIABLE() \
188
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wunused-variable)
189
190
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_PADDED_TO_ALIGNMENT_BOUNDARY(rationale) \
191
MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(-Wpadded, rationale)
192
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_PADDED_TO_ALIGNMENT_BOUNDARY() \
193
MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(-Wpadded)
194
195
#define MCUXCLCORE_ANALYSIS_START_SUPPRESS_HARDWARE_ACCESS(rationale) \
196
MCUXCLCORE_ANALYSIS_GCC_START_SUPPRESS_WARNING(-Warray-bounds, rationale)
197
#define MCUXCLCORE_ANALYSIS_STOP_SUPPRESS_HARDWARE_ACCESS() \
198
MCUXCLCORE_ANALYSIS_GCC_STOP_SUPPRESS_WARNING(-Warray-bounds)
199
200
/* Tool specific handling: Coverity checkers */
201
#if defined(__COVERITY__)
202
203
#define MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(checker_identifier, rationale) \
204
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(coverity compliance block deviate checker_identifier rationale))
205
#define MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(checker_identifier) \
206
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(coverity compliance end_block checker_identifier))
207
208
#define MCUXCLCORE_ANALYSIS_COVERITY_START_FALSE_POSITIVE(checker_identifier, rationale) \
209
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(coverity compliance block fp checker_identifier rationale))
210
#define MCUXCLCORE_ANALYSIS_COVERITY_STOP_FALSE_POSITIVE(checker_identifier) \
211
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(coverity compliance end_block checker_identifier))
212
213
#else
214
#define MCUXCLCORE_ANALYSIS_COVERITY_START_DEVIATE(checker_identifier, rationale)
215
#define MCUXCLCORE_ANALYSIS_COVERITY_STOP_DEVIATE(checker_identifier)
216
217
#define MCUXCLCORE_ANALYSIS_COVERITY_START_FALSE_POSITIVE(checker_identifier, rationale)
218
#define MCUXCLCORE_ANALYSIS_COVERITY_STOP_FALSE_POSITIVE(checker_identifier)
219
#endif
220
221
/* Tool specific handling: Clang warnings */
222
#if defined(__clang__)
223
#define MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(warning_identifier, rationale) \
224
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(clang diagnostic push)) \
225
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(clang diagnostic ignored MCUXCLCORE_ANALYSIS_STR(warning_identifier)))
226
#define MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(warning_identifier) \
227
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(clang diagnostic pop))
228
#else
229
#define MCUXCLCORE_ANALYSIS_CLANG_START_SUPPRESS_WARNING(warning_identifier, rationale)
230
#define MCUXCLCORE_ANALYSIS_CLANG_STOP_SUPPRESS_WARNING(warning_identifier)
231
#endif
232
233
/* Tool specific handling: GHS warnings */
234
#if defined(__ghs__)
235
#define MCUXCLCORE_ANALYSIS_GHS_START_SUPPRESS_WARNING(warning_identifier, rationale) \
236
_Pragma("ghs nowarning " ## warning_identifier)
237
#define MCUXCLCORE_ANALYSIS_GHS_STOP_SUPPRESS_WARNING(warning_identifier) \
238
_Pragma("ghs endnowarning")
239
#else
240
#define MCUXCLCORE_ANALYSIS_GHS_START_SUPPRESS_WARNING(warning_identifier, rationale)
241
#define MCUXCLCORE_ANALYSIS_GHS_STOP_SUPPRESS_WARNING(warning_identifier)
242
#endif
243
244
/* Tool specific handling: GCC warnings */
245
#if defined(__GNUC__)
246
#define MCUXCLCORE_ANALYSIS_GCC_START_SUPPRESS_WARNING(warning_identifier, rationale) \
247
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(GCC diagnostic push)) \
248
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(GCC diagnostic ignored MCUXCLCORE_ANALYSIS_STR(warning_identifier)))
249
#define MCUXCLCORE_ANALYSIS_GCC_STOP_SUPPRESS_WARNING(warning_identifier) \
250
MCUXCLCORE_ANALYSIS_EXPAND(MCUXCLCORE_ANALYSIS_DEFER(MCUXCLCORE_ANALYSIS_PRAGMA)(GCC diagnostic pop))
251
#else
252
#define MCUXCLCORE_ANALYSIS_GCC_START_SUPPRESS_WARNING(warning_identifier, rationale)
253
#define MCUXCLCORE_ANALYSIS_GCC_STOP_SUPPRESS_WARNING(warning_identifier)
254
#endif
255
256
#endif
/* MCUXCLCORE_ANALYSIS_H_ */
mcuxClCore_Analysis.h
Generated by
1.8.15