summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2018-11-23 14:22:55 +0100
committerChristian Pointner <equinox@spreadspace.org>2018-11-23 14:22:55 +0100
commita3832be0ae169755506db1ca639ea394c57fe6e4 (patch)
tree486a23fe6146771af330307aeeb410ec4836d6f1
parentadded ubsio to lora-test and renamed it to usb-lora (diff)
improved handling for __cxa_.._virtual() functions
-rw-r--r--lib/arduino-stub.cpp20
-rw-r--r--lib/stdc++-minimal.cpp41
-rw-r--r--radiohead.mk2
3 files changed, 42 insertions, 21 deletions
diff --git a/lib/arduino-stub.cpp b/lib/arduino-stub.cpp
index 39bd9cc..201962f 100644
--- a/lib/arduino-stub.cpp
+++ b/lib/arduino-stub.cpp
@@ -22,7 +22,6 @@
#define ARDUINO_MAIN
#include "Arduino.h"
-#include "stdlib.h"
int atexit(void (* /*func*/ )()) { return 0; }
@@ -1042,22 +1041,3 @@ long map(long x, long in_min, long in_max, long out_min, long out_max)
unsigned int makeWord(unsigned int w) { return w; }
unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }
-
-
-// ******************
-// this is from Arduino's abi.cpp
-
-extern "C" void __cxa_pure_virtual(void) __attribute__ ((__noreturn__));
-extern "C" void __cxa_deleted_virtual(void) __attribute__ ((__noreturn__));
-
-void __cxa_pure_virtual(void) {
- // We might want to write some diagnostics to uart in this case
- //std::terminate();
- abort();
-}
-
-void __cxa_deleted_virtual(void) {
- // We might want to write some diagnostics to uart in this case
- //std::terminate();
- abort();
-}
diff --git a/lib/stdc++-minimal.cpp b/lib/stdc++-minimal.cpp
new file mode 100644
index 0000000..50b1947
--- /dev/null
+++ b/lib/stdc++-minimal.cpp
@@ -0,0 +1,41 @@
+/*
+ * spreadspace avr utils
+ *
+ *
+ * Copyright (C) 2014-2018 Christian Pointner <equinox@spreadspace.org>
+ *
+ * This file is part of spreadspace avr utils.
+ *
+ * spreadspace avr utils is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * spreadspace avr utils is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "stdlib.h"
+#include "stdio.h"
+
+extern "C" void __cxa_pure_virtual(void) __attribute__ ((__noreturn__));
+extern "C" void __cxa_deleted_virtual(void) __attribute__ ((__noreturn__));
+
+void __cxa_pure_virtual(void) {
+ // this only works with serialio, it won't work with usbio
+ // because we would need to call usbio_task() ...
+ printf("PANIC: __cxa_pure_virtual() got called ...");
+ for(;;);
+}
+
+void __cxa_deleted_virtual(void) {
+ // this only works with serialio, it won't work with usbio
+ // because we would need to call usbio_task() ...
+ printf("PANIC: __cxa_deleted_virtual() got called ...");
+ for(;;);
+}
diff --git a/radiohead.mk b/radiohead.mk
index 16e13e1..cef06b8 100644
--- a/radiohead.mk
+++ b/radiohead.mk
@@ -26,7 +26,7 @@ include $(SPREADAVR_PATH)/defines.mk
RADIOHEAD_COMPONENTS := RH_$(RADIOHEAD_DRIVER) RHGenericDriver RHSPIDriver RHHardwareSPI RHGenericSPI
SRC:=$(foreach COMP,$(RADIOHEAD_COMPONENTS),$(RADIOHEAD_PATH)/$(COMP).cpp)
-DEPLIBS := Arduino-SPI arduino-stub
+DEPLIBS := Arduino-SPI arduino-stub stdc++-minimal
CXXFLAGS += -I$(RADIOHEAD_PATH)
CXXFLAGS += -DRH_PLATFORM=RH_PLATFORM_GENERIC_AVR8