From 6f5a3cf48fbee4c74f71a068404f41d12a0c21c3 Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Thu, 8 Dec 2016 14:48:47 +0100 Subject: [PATCH] [libaxx] Explicitely define __cxa_pure_virtual Change-Id: I07315f1bf84771a2784788e0d0eea4360245701d --- ion/src/device/boot/flash.ld | 5 ----- libaxx/Makefile | 1 + libaxx/src/cxxabi/pure_virtual.cpp | 10 ++++++++++ 3 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 libaxx/src/cxxabi/pure_virtual.cpp diff --git a/ion/src/device/boot/flash.ld b/ion/src/device/boot/flash.ld index 37c3e5e02..3925a4949 100644 --- a/ion/src/device/boot/flash.ld +++ b/ion/src/device/boot/flash.ld @@ -36,11 +36,6 @@ SECTIONS { .text : { . = ALIGN(4); - - /* C++ code calls __cxa_pure_virtual when a pure-virtual method is called. - * This is an error case, so we just redirect it to abort. */ - PROVIDE(__cxa_pure_virtual = abort); - *(.text) *(.text.*) } >FLASH diff --git a/libaxx/Makefile b/libaxx/Makefile index 2f64bd449..b4c97c60f 100644 --- a/libaxx/Makefile +++ b/libaxx/Makefile @@ -1 +1,2 @@ objs += $(addprefix libaxx/src/, new.o) +objs += $(addprefix libaxx/src/cxxabi/, pure_virtual.o) diff --git a/libaxx/src/cxxabi/pure_virtual.cpp b/libaxx/src/cxxabi/pure_virtual.cpp new file mode 100644 index 000000000..eee71e8aa --- /dev/null +++ b/libaxx/src/cxxabi/pure_virtual.cpp @@ -0,0 +1,10 @@ +extern "C" { +#include +} + +/* C++ code calls __cxa_pure_virtual when a pure-virtual method is called. + * This is an error case, so we just redirect it to abort. */ + +extern "C" void __cxa_pure_virtual() { + abort(); +}