From d6fecbcf8bbed04cdbb4a0b2afaf4d30675bce7a Mon Sep 17 00:00:00 2001 From: Unai Uribarri Date: Tue, 31 May 2016 08:43:26 +0200 Subject: [PATCH] Execute global constructors in correct order LX106 compiler generates the constructor list in reverse order, as you can read at: https://github.com/jcmvbkbc/gcc-xtensa/blob/de95b6b65d806a648434e73a6db85f1e74d62ec8/gcc/varasm.c#L1391 --- cores/esp8266/core_esp8266_main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cores/esp8266/core_esp8266_main.cpp b/cores/esp8266/core_esp8266_main.cpp index 80d5294cae..f63fe24f52 100644 --- a/cores/esp8266/core_esp8266_main.cpp +++ b/cores/esp8266/core_esp8266_main.cpp @@ -119,9 +119,9 @@ static void loop_task(os_event_t *events) { } static void do_global_ctors(void) { - void (**p)(void); - for(p = &__init_array_start; p != &__init_array_end; ++p) - (*p)(); + void (**p)(void) = &__init_array_end; + while (p != &__init_array_start) + (*--p)(); } extern "C" void __gdb_init() {}