19#ifndef MCUX_CSSL_FLOW_PROTECTION_NONE_H_
20#define MCUX_CSSL_FLOW_PROTECTION_NONE_H_
49#define MCUX_CSSL_FP_COUNTER_STMT_IMPL(statement) \
70#define MCUX_CSSL_FP_CONDITIONAL_IMPL(condition, ...) \
82#define MCUX_CSSL_FP_VOID_EXPECTATION_IMPL() \
98#define MCUX_CSSL_FP_EXPECT_IMPL(...) \
109#define MCUX_CSSL_FP_ASSERT_IMPL(...) \
132#define MCUX_CSSL_FP_PROTECTED_TYPE_IMPL(resultType) \
146#define MCUX_CSSL_FP_FUNCTION_DECL_IMPL(...) \
157#define MCUX_CSSL_FP_FUNCTION_DEF_IMPL(...) \
168#define MCUX_CSSL_FP_FUNCTION_POINTER_IMPL(type, definition) \
180#define MCUX_CSSL_FP_FUNCTION_ENTRY_IMPL(...) \
191#define MCUX_CSSL_FP_RESULT_IMPL2(type, return) \
192 MCUX_CSSL_ANALYSIS_START_PATTERN_REINTERPRET_MEMORY_OF_OPAQUE_TYPES() \
193 MCUX_CSSL_ANALYSIS_START_SUPPRESS_TYPECAST_BETWEEN_INTEGER_AND_POINTER("Proper alignment is ensured during type cast") \
195 MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_TYPECAST_BETWEEN_INTEGER_AND_POINTER() \
196 MCUX_CSSL_ANALYSIS_STOP_PATTERN_REINTERPRET_MEMORY_OF_OPAQUE_TYPES()
205#define MCUX_CSSL_FP_RESULT_IMPL1(return) \
216#define MCUX_CSSL_FP_RESULT_IMPL(...) \
217 MCUX_CSSL_CPP_OVERLOADED2(MCUX_CSSL_FP_RESULT_IMPL, __VA_ARGS__)
226#define MCUX_CSSL_FP_PROTECTION_TOKEN_IMPL(return) \
242#define MCUX_CSSL_FP_FUNCTION_EXIT_IMPLn(id, result, ...) \
257#define MCUX_CSSL_FP_FUNCTION_EXIT_IMPL1(id) \
258 MCUX_CSSL_FP_FUNCTION_EXIT_IMPLn(id, 0u, 0u)
274#define MCUX_CSSL_FP_FUNCTION_EXIT_IMPL2(id, result) \
275 MCUX_CSSL_FP_FUNCTION_EXIT_IMPLn(id, result, 0u)
296#define MCUX_CSSL_FP_FUNCTION_EXIT_IMPL(...) \
297 MCUX_CSSL_CPP_OVERLOADED2(MCUX_CSSL_FP_FUNCTION_EXIT_IMPL, __VA_ARGS__)
314#define MCUX_CSSL_FP_FUNCTION_EXIT_WITH_CHECK_IMPL(id, pass, fail,...) \
328#define MCUX_CSSL_FP_FUNCTION_EXIT_VOID_IMPL(...) \
340#define MCUX_CSSL_FP_FUNCTION_CALL_IMPL3(type, result, call) \
341 type const result = MCUX_CSSL_FP_RESULT(type,call)
352#define MCUX_CSSL_FP_FUNCTION_CALL_IMPL2(result, call) \
353 MCUX_CSSL_FP_FUNCTION_CALL_IMPL3(uint32_t, result, call)
367#define MCUX_CSSL_FP_FUNCTION_CALL_IMPL(...) \
368 MCUX_CSSL_ANALYSIS_START_SUPPRESS_NULL_POINTER_CONSTANT("False positive, due to macro expansion, any usage of NULL is considered as 0 by Coverity") \
369 MCUX_CSSL_CPP_OVERLOADED3(MCUX_CSSL_FP_FUNCTION_CALL_IMPL, __VA_ARGS__) \
370 MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_NULL_POINTER_CONSTANT()
382#define MCUX_CSSL_FP_FUNCTION_CALL_VOID_IMPL(call) \
383 MCUX_CSSL_ANALYSIS_START_SUPPRESS_NULL_POINTER_CONSTANT("False positive, due to macro expansion, any usage of NULL is considered as 0 by Coverity") \
385 MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_NULL_POINTER_CONSTANT()
399#define MCUX_CSSL_FP_FUNCTION_CALL_PROTECTED_IMPL(result, token, call) \
400 const uint32_t result = (call); \
401 const uint32_t token = 0u
414#define MCUX_CSSL_FP_FUNCTION_CALL_VOID_PROTECTED_IMPL(token, call) \
416 const uint32_t token = 0u
429#define MCUX_CSSL_FP_FUNCTION_CALL_BEGIN_IMPL(result, token, call) \
430 MCUX_CSSL_FP_FUNCTION_CALL_PROTECTED_IMPL(result, token, call)
438#define MCUX_CSSL_FP_FUNCTION_CALL_END_IMPL() \
451#define MCUX_CSSL_FP_FUNCTION_CALL_VOID_BEGIN_IMPL(token, call) \
452 MCUX_CSSL_FP_FUNCTION_CALL_VOID_PROTECTED_IMPL(token, call)
460#define MCUX_CSSL_FP_FUNCTION_CALL_VOID_END_IMPL() \
477#define MCUX_CSSL_FP_FUNCTION_CALLED_IMPL(id) \
493#define MCUX_CSSL_FP_FUNCTION_ENTERED_IMPL(id) \
513#define MCUX_CSSL_FP_LOOP_DECL_IMPL(id) \
525#define MCUX_CSSL_FP_LOOP_ITERATION_IMPL(...) \
536#define MCUX_CSSL_FP_LOOP_ITERATIONS_IMPL(id, count) \
558#define MCUX_CSSL_FP_BRANCH_DECL_IMPL(id) \
576#define MCUX_CSSL_FP_BRANCH_POSITIVE_IMPL(...) \
594#define MCUX_CSSL_FP_BRANCH_NEGATIVE_IMPL(...) \
605#define MCUX_CSSL_FP_BRANCH_TAKEN_POSITIVE_IMPL(...) \
616#define MCUX_CSSL_FP_BRANCH_TAKEN_NEGATIVE_IMPL(...) \
638#define MCUX_CSSL_FP_SWITCH_DECL_IMPL(id) \
651#define MCUX_CSSL_FP_SWITCH_CASE_IMPL(...) \
663#define MCUX_CSSL_FP_SWITCH_DEFAULT_IMPL(...) \
676#define MCUX_CSSL_FP_SWITCH_TAKEN_IMPL(...) \
687#define MCUX_CSSL_FP_SWITCH_TAKEN_DEFAULT_IMPL(...) \
The default implementation is based on standard C preprocessor functionality.