From 73fca2c8517567c8bbf1e2231e5f28a9898c147c Mon Sep 17 00:00:00 2001 From: Guillaume Souchere Date: Tue, 6 Dec 2022 09:23:52 +0100 Subject: [PATCH] esp_system: fix placement of __stack_chk_fail from flash to RAM When stack check is enabled, certain functions (sometimes placed in RAM) are being decorated with stack guards and a call to __stask_chk_fail() in case ofr stack corruption. For this reason, __stack_chk_fail() must be placed in RAM too. Add stack check config in heap tests on all targets to find eventual flash to RAM calls due to stack checks when running callgraph_check.py --- components/esp_common/src/stack_check.c | 5 ++--- tools/ci/check_callgraph.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/components/esp_common/src/stack_check.c b/components/esp_common/src/stack_check.c index cffff6555a..66d76ba3fd 100644 --- a/components/esp_common/src/stack_check.c +++ b/components/esp_common/src/stack_check.c @@ -31,10 +31,9 @@ __esp_stack_guard_setup (void) __stack_chk_guard = (void *)esp_random(); } -void __stack_chk_fail (void) +IRAM_ATTR void __stack_chk_fail (void) { - esp_rom_printf("\r\nStack smashing protect failure!\r\n\r\n"); - abort(); + esp_system_abort(DRAM_STR("Stack smashing protect failure!")); } #endif diff --git a/tools/ci/check_callgraph.py b/tools/ci/check_callgraph.py index 3d2c4d5b99..a1eac5d22c 100755 --- a/tools/ci/check_callgraph.py +++ b/tools/ci/check_callgraph.py @@ -111,7 +111,7 @@ class Reference(object): class IgnorePair(): - def __init__(self, pair) -> None: # type: (str) + def __init__(self, pair): # type: (str) -> None self.symbol, self.function_call = pair.split('/')