From a62b47d7079093ce2822d1d0525b8fc3e0e0fb88 Mon Sep 17 00:00:00 2001 From: Christopher Andrews Date: Mon, 4 Aug 2014 21:03:32 +1000 Subject: [PATCH 1/2] Declared atexit as weak. Added replacement stub for cstdlib `atexit()` funciton. --- hardware/arduino/cores/arduino/Arduino.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hardware/arduino/cores/arduino/Arduino.h b/hardware/arduino/cores/arduino/Arduino.h index 425dfcb8d5a..8673ab8abff 100755 --- a/hardware/arduino/cores/arduino/Arduino.h +++ b/hardware/arduino/cores/arduino/Arduino.h @@ -115,6 +115,8 @@ typedef uint8_t byte; void init(void); void initVariant(void); +int atexit(void (*func)()) __attribute__((weak)); + void pinMode(uint8_t, uint8_t); void digitalWrite(uint8_t, uint8_t); int digitalRead(uint8_t); From a511b3662a3a2226438c44edaa03c0e342ea17fd Mon Sep 17 00:00:00 2001 From: Christopher Andrews Date: Mon, 4 Aug 2014 21:08:17 +1000 Subject: [PATCH 2/2] Added definition for atexit() This is an empty stub to simply allow use of complex types with a non global static lifetime. For more complex handling the function `atexit` can be redefined in user code. --- hardware/arduino/cores/arduino/main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hardware/arduino/cores/arduino/main.cpp b/hardware/arduino/cores/arduino/main.cpp index 091c365fcef..a60980da57a 100644 --- a/hardware/arduino/cores/arduino/main.cpp +++ b/hardware/arduino/cores/arduino/main.cpp @@ -19,6 +19,9 @@ #include +//Declared weak in Arduino.h to allow user redefinitions. +int atexit(void (*func)()) { return 0; } + // Weak empty variant initialization function. // May be redefined by variant files. void initVariant() __attribute__((weak));