path: root/arch
diff options
authorrofl0r <>2013-02-06 02:15:51 +0100
committerrofl0r <>2013-02-06 22:46:19 +0100
commit526900484ca5673630a5838e081db685c6856fe2 (patch)
treee4cdec84768c18b85b86c55cfbd38de7cdabf097 /arch
parent158f721adc851850f22f789ad672deb6b88d511d (diff)
arm: add __aeabi_atexit()
arm eabi requires this symbol for static C++ dtors. usually it is provided by libstdc++, but when a C++ program doesn't use the std lib (free-standing), the libc has to provide it. this was encountered while building transmission, which depends on such a C++ library (libutp). this function is nearly identical to __cxa_atexit, but it has the order of argumens swapped for "performance reasons". see page 25 of there are other aeabi specific C++ support functions missing, but it is not clear yet that GCC makes use of them so we omit them for the moment.
Diffstat (limited to 'arch')
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/src/__aeabi_atexit.c b/arch/arm/src/__aeabi_atexit.c
new file mode 100644
index 00000000..ce16101d
--- /dev/null
+++ b/arch/arm/src/__aeabi_atexit.c
@@ -0,0 +1,6 @@
+int __cxa_atexit(void (*func)(void *), void *arg, void *dso);
+int __aeabi_atexit (void *obj, void (*func) (void *), void *d)
+ return __cxa_atexit (func, obj, d);