Skip to content
Snippets Groups Projects
Commit 2215f298 authored by Gunar Schorcht's avatar Gunar Schorcht
Browse files

cpu/esp32: add memset that cannot be optimized out

Adds a memset function `system_secure_memset` which cannot be optimized out by the compiler. It uses the libsodium approach of weak symbols. Function system_secure_memset calls the standard memset. Calling an empty function declared with weak attribute after the memset call, prevents the compiler to optimize it out. The overhead is only one function call.
parent 519b9ebc
No related branches found
No related tags found
No related merge requests found
......@@ -23,6 +23,7 @@
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include "esp_common.h"
......@@ -61,6 +62,9 @@ void system_wdt_stop (void);
/** reset the system watchdog timer */
void system_wdt_feed (void);
/** memset version that the compiler should not be allowed to optimize this */
void *system_secure_memset(void *s, int c, size_t n);
#ifdef __cplusplus
}
#endif
......
......@@ -595,3 +595,18 @@ void system_wdt_start (void)
TIMERG0.wdt_wprotect = 0; /* enable write protection */
xt_ints_on(BIT(CPU_INUM_WDT));
}
__attribute__((weak)) void
_system_prevent_memset_lto(void *const s, int c, const size_t n)
{
(void) s;
(void) c;
(void) n;
}
void *system_secure_memset(void *s, int c, size_t n)
{
memset(s, c, n);
_system_prevent_memset_lto(s, c, n);
return s;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment