diff options
author | rofl0r <retnyg@gmx.net> | 2013-02-06 02:15:51 +0100 |
---|---|---|
committer | rofl0r <retnyg@gmx.net> | 2013-02-06 22:46:19 +0100 |
commit | 526900484ca5673630a5838e081db685c6856fe2 (patch) | |
tree | e4cdec84768c18b85b86c55cfbd38de7cdabf097 /arch/arm/src/__aeabi_atexit.c | |
parent | 158f721adc851850f22f789ad672deb6b88d511d (diff) | |
download | musl-526900484ca5673630a5838e081db685c6856fe2.tar.gz |
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
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043d/IHI0043D_rtabi.pdf
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/arm/src/__aeabi_atexit.c')
-rw-r--r-- | arch/arm/src/__aeabi_atexit.c | 6 |
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); +} |