From 1dd50fb72c1a78824168f7d9eff4d2d3f207910d Mon Sep 17 00:00:00 2001 From: unaiur Date: Wed, 1 Jun 2016 08:45:59 +0200 Subject: [PATCH] Execute global constructors in correct order (#2074) Walk .ctors array from back to front, like gcc's gbl-ctors.h does --- 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 80d5294ca..f63fe24f5 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() {}