mbedtls: Add full platform implementation of timing
When MBEDTLS_TIMING_C and MBEDTLS_TIMING_ALT are enabled, the Arm Compiler generates errors like the following (one for each missing symbol): Error: L6218E: Undefined symbol mbedtls_timing_get_delay Reason: The function `mbedtls_timing_self_test()` in the Mbed TLS default `timing.c` always gets compiled, if MBEDTLS_SELF_TEST is defined. And MBEDTLS_SELF_TEST is always defined, as we have a Greentea test to run some of the Mbed TLS self tests. (In the future we should try not to enable MBEDTLS_SELF_TEST except for tests, but it requires a rework in our test flow.) `mbedtls_timing_self_test()` tests (calls) the full API declared in `timing.h`, and the ARM Compiler requires all symbols referenced by all functions to be defined, even those not used by the final application. This is unlike GCC_ARM which resolves what are required. Solution: To fix the "undefined symbol" errors, we add an implementation of `mbedtls_timing_get_timer()` based on Mbed OS `LowPowerTimer` or `Timer` (depending on which one is available), and copy Mbed TLS's default `mbedtls_timing_set_delay()` and `mbedtls_timing_get_delay()` which are built on top of `mbedtls_timing_get_timer()`. This will also benefit user applications that need to enable timing in Mbed TLS. |
---|
|
connectivity/mbedtls/platform/src/timing_mbed.cpp |
---|