From 2e9c8e8032d18515724fd46dcca6d938772a1386 Mon Sep 17 00:00:00 2001 From: Takayuki 'January June' Suwa Date: Thu, 26 Mar 2020 15:03:27 +0900 Subject: [PATCH 1/2] Attribute `__real_system_restart_local()` as `(noreturn)` --- cores/esp8266/Esp.cpp | 2 +- cores/esp8266/core_esp8266_postmortem.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index a0e525f2bb..92b9090b56 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -195,7 +195,7 @@ bool EspClass::rtcUserMemoryWrite(uint32_t offset, uint32_t *data, size_t size) -extern "C" void __real_system_restart_local(); +extern "C" void __real_system_restart_local() __attribute__((noreturn)); void EspClass::reset(void) { __real_system_restart_local(); diff --git a/cores/esp8266/core_esp8266_postmortem.cpp b/cores/esp8266/core_esp8266_postmortem.cpp index 84aad50a0c..b4f590d05a 100644 --- a/cores/esp8266/core_esp8266_postmortem.cpp +++ b/cores/esp8266/core_esp8266_postmortem.cpp @@ -35,7 +35,7 @@ extern "C" { -extern void __real_system_restart_local(); +extern void __real_system_restart_local() __attribute__((noreturn)); // These will be pointers to PROGMEM const strings static const char* s_panic_file = 0; From 34e91ef3bcb49ee487244d789678e811d273a92c Mon Sep 17 00:00:00 2001 From: Takayuki 'January June' Suwa Date: Thu, 26 Mar 2020 20:57:00 +0900 Subject: [PATCH 2/2] Attribute `__real_system_restart_local()` as `(noreturn)` [v2] * As well as `abort()`. * Aggragate two decls into `coredecls.h`. --- cores/esp8266/Esp.cpp | 3 --- cores/esp8266/core_esp8266_postmortem.cpp | 3 +-- cores/esp8266/coredecls.h | 1 + 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index 92b9090b56..21ffe880ec 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -193,9 +193,6 @@ bool EspClass::rtcUserMemoryWrite(uint32_t offset, uint32_t *data, size_t size) } } - - -extern "C" void __real_system_restart_local() __attribute__((noreturn)); void EspClass::reset(void) { __real_system_restart_local(); diff --git a/cores/esp8266/core_esp8266_postmortem.cpp b/cores/esp8266/core_esp8266_postmortem.cpp index b4f590d05a..2af579883b 100644 --- a/cores/esp8266/core_esp8266_postmortem.cpp +++ b/cores/esp8266/core_esp8266_postmortem.cpp @@ -32,11 +32,10 @@ #include "pgmspace.h" #include "gdb_hooks.h" #include "StackThunk.h" +#include "coredecls.h" extern "C" { -extern void __real_system_restart_local() __attribute__((noreturn)); - // These will be pointers to PROGMEM const strings static const char* s_panic_file = 0; static int s_panic_line = 0; diff --git a/cores/esp8266/coredecls.h b/cores/esp8266/coredecls.h index 86ba437114..aa37cb06b2 100644 --- a/cores/esp8266/coredecls.h +++ b/cores/esp8266/coredecls.h @@ -21,6 +21,7 @@ void esp_schedule(); void tune_timeshift64 (uint64_t now_us); void disable_extra4k_at_link_time (void) __attribute__((noinline)); bool sntp_set_timezone_in_seconds(int32_t timezone); +void __real_system_restart_local() __attribute__((noreturn)); uint32_t sqrt32 (uint32_t n); uint32_t crc32 (const void* data, size_t length, uint32_t crc = 0xffffffff);