39#ifndef MCUX_CSSL_FLOW_PROTECTION_NONE_H_
40#define MCUX_CSSL_FLOW_PROTECTION_NONE_H_
69#define MCUX_CSSL_FP_COUNTER_STMT_IMPL(statement) \
90#define MCUX_CSSL_FP_CONDITIONAL_IMPL(condition, ...) \
102#define MCUX_CSSL_FP_VOID_EXPECTATION_IMPL() \
118#define MCUX_CSSL_FP_EXPECT_IMPL(...) \
129#define MCUX_CSSL_FP_ASSERT_IMPL(...) \
152#define MCUX_CSSL_FP_PROTECTED_TYPE_IMPL(resultType) \
166#define MCUX_CSSL_FP_FUNCTION_DECL_IMPL(...) \
177#define MCUX_CSSL_FP_FUNCTION_DEF_IMPL(...) \
188#define MCUX_CSSL_FP_FUNCTION_POINTER_IMPL(type, definition) \
200#define MCUX_CSSL_FP_FUNCTION_ENTRY_IMPL(...) \
211#define MCUX_CSSL_FP_RESULT_IMPL2(type, return) \
212 MCUX_CSSL_ANALYSIS_START_PATTERN_REINTERPRET_MEMORY_OF_OPAQUE_TYPES() \
213 MCUX_CSSL_ANALYSIS_START_SUPPRESS_TYPECAST_BETWEEN_INTEGER_AND_POINTER("Proper alignment is ensured during type cast") \
215 MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_TYPECAST_BETWEEN_INTEGER_AND_POINTER() \
216 MCUX_CSSL_ANALYSIS_STOP_PATTERN_REINTERPRET_MEMORY_OF_OPAQUE_TYPES()
225#define MCUX_CSSL_FP_RESULT_IMPL1(return) \
236#define MCUX_CSSL_FP_RESULT_IMPL(...) \
237 MCUX_CSSL_CPP_OVERLOADED2(MCUX_CSSL_FP_RESULT_IMPL, __VA_ARGS__)
246#define MCUX_CSSL_FP_PROTECTION_TOKEN_IMPL(return) \
262#define MCUX_CSSL_FP_FUNCTION_EXIT_IMPLn(id, result, ...) \
277#define MCUX_CSSL_FP_FUNCTION_EXIT_IMPL1(id) \
278 MCUX_CSSL_FP_FUNCTION_EXIT_IMPLn(id, 0u, 0u)
294#define MCUX_CSSL_FP_FUNCTION_EXIT_IMPL2(id, result) \
295 MCUX_CSSL_FP_FUNCTION_EXIT_IMPLn(id, result, 0u)
316#define MCUX_CSSL_FP_FUNCTION_EXIT_IMPL(...) \
317 MCUX_CSSL_CPP_OVERLOADED2(MCUX_CSSL_FP_FUNCTION_EXIT_IMPL, __VA_ARGS__)
334#define MCUX_CSSL_FP_FUNCTION_EXIT_WITH_CHECK_IMPL(id, pass, fail,...) \
348#define MCUX_CSSL_FP_FUNCTION_EXIT_VOID_IMPL(...) \
360#define MCUX_CSSL_FP_FUNCTION_CALL_IMPL3(type, result, call) \
361 type const result = MCUX_CSSL_FP_RESULT(type,call)
372#define MCUX_CSSL_FP_FUNCTION_CALL_IMPL2(result, call) \
373 MCUX_CSSL_FP_FUNCTION_CALL_IMPL3(uint32_t, result, call)
387#define MCUX_CSSL_FP_FUNCTION_CALL_IMPL(...) \
388 MCUX_CSSL_ANALYSIS_START_SUPPRESS_NULL_POINTER_CONSTANT("False positive, due to macro expansion, any usage of NULL is considered as 0 by Coverity") \
389 MCUX_CSSL_CPP_OVERLOADED3(MCUX_CSSL_FP_FUNCTION_CALL_IMPL, __VA_ARGS__) \
390 MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_NULL_POINTER_CONSTANT()
402#define MCUX_CSSL_FP_FUNCTION_CALL_VOID_IMPL(call) \
403 MCUX_CSSL_ANALYSIS_START_SUPPRESS_NULL_POINTER_CONSTANT("False positive, due to macro expansion, any usage of NULL is considered as 0 by Coverity") \
405 MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_NULL_POINTER_CONSTANT()
419#define MCUX_CSSL_FP_FUNCTION_CALL_PROTECTED_IMPL(result, token, call) \
420 const uint32_t result = (call); \
421 const uint32_t token = 0u
434#define MCUX_CSSL_FP_FUNCTION_CALL_VOID_PROTECTED_IMPL(token, call) \
436 const uint32_t token = 0u
449#define MCUX_CSSL_FP_FUNCTION_CALL_BEGIN_IMPL(result, token, call) \
450 MCUX_CSSL_FP_FUNCTION_CALL_PROTECTED_IMPL(result, token, call)
458#define MCUX_CSSL_FP_FUNCTION_CALL_END_IMPL() \
471#define MCUX_CSSL_FP_FUNCTION_CALL_VOID_BEGIN_IMPL(token, call) \
472 MCUX_CSSL_FP_FUNCTION_CALL_VOID_PROTECTED_IMPL(token, call)
480#define MCUX_CSSL_FP_FUNCTION_CALL_VOID_END_IMPL() \
497#define MCUX_CSSL_FP_FUNCTION_CALLED_IMPL(id) \
513#define MCUX_CSSL_FP_FUNCTION_ENTERED_IMPL(id) \
533#define MCUX_CSSL_FP_LOOP_DECL_IMPL(id) \
545#define MCUX_CSSL_FP_LOOP_ITERATION_IMPL(...) \
556#define MCUX_CSSL_FP_LOOP_ITERATIONS_IMPL(id, count) \
578#define MCUX_CSSL_FP_BRANCH_DECL_IMPL(id) \
596#define MCUX_CSSL_FP_BRANCH_POSITIVE_IMPL(...) \
614#define MCUX_CSSL_FP_BRANCH_NEGATIVE_IMPL(...) \
625#define MCUX_CSSL_FP_BRANCH_TAKEN_POSITIVE_IMPL(...) \
636#define MCUX_CSSL_FP_BRANCH_TAKEN_NEGATIVE_IMPL(...) \
658#define MCUX_CSSL_FP_SWITCH_DECL_IMPL(id) \
671#define MCUX_CSSL_FP_SWITCH_CASE_IMPL(...) \
683#define MCUX_CSSL_FP_SWITCH_DEFAULT_IMPL(...) \
696#define MCUX_CSSL_FP_SWITCH_TAKEN_IMPL(...) \
707#define MCUX_CSSL_FP_SWITCH_TAKEN_DEFAULT_IMPL(...) \
The default implementation is based on standard C preprocessor functionality.