diff options
Diffstat (limited to 'winsup/cygwin/libstdcxx_wrapper.cc')
-rwxr-xr-x | winsup/cygwin/libstdcxx_wrapper.cc | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/winsup/cygwin/libstdcxx_wrapper.cc b/winsup/cygwin/libstdcxx_wrapper.cc index a6492f243..80861b738 100755 --- a/winsup/cygwin/libstdcxx_wrapper.cc +++ b/winsup/cygwin/libstdcxx_wrapper.cc @@ -22,23 +22,34 @@ details. */ around the standard C++ memory management operators; these are the wrappers, but we want the compiler to know they are the malloc operators and not have it think they're just any old function matching 'extern "C" _wrap_*'. */ +#ifdef __x86_64__ +#define MANGLED_ZNWX "__wrap__Znwm" +#define MANGLED_ZNAX "__wrap__Znam" +#define MANGLED_ZNWX_NOTHROW_T "__wrap__ZnwmRKSt9nothrow_t" +#define MANGLED_ZNAX_NOTHROW_T "__wrap__ZnamRKSt9nothrow_t" +#else +#define MANGLED_ZNWX "___wrap__Znwj" +#define MANGLED_ZNAX "___wrap__Znaj" +#define MANGLED_ZNWX_NOTHROW_T "___wrap__ZnwjRKSt9nothrow_t" +#define MANGLED_ZNAX_NOTHROW_T "___wrap__ZnajRKSt9nothrow_t" +#endif extern void *operator new(std::size_t sz) throw (std::bad_alloc) - __asm__ ("___wrap__Znwj"); + __asm__ (MANGLED_ZNWX); extern void *operator new[](std::size_t sz) throw (std::bad_alloc) - __asm__ ("___wrap__Znaj"); + __asm__ (MANGLED_ZNAX); extern void operator delete(void *p) throw() - __asm__ ("___wrap__ZdlPv"); + __asm__ (_SYMSTR (__wrap__ZdlPv)); extern void operator delete[](void *p) throw() - __asm__ ("___wrap__ZdaPv"); + __asm__ (_SYMSTR (__wrap__ZdaPv)); extern void *operator new(std::size_t sz, const std::nothrow_t &nt) throw() - __asm__ ("___wrap__ZnwjRKSt9nothrow_t"); + __asm__ (MANGLED_ZNWX_NOTHROW_T); extern void *operator new[](std::size_t sz, const std::nothrow_t &nt) throw() - __asm__ ("___wrap__ZnajRKSt9nothrow_t"); + __asm__ (MANGLED_ZNAX_NOTHROW_T); extern void operator delete(void *p, const std::nothrow_t &nt) throw() - __asm__ ("___wrap__ZdlPvRKSt9nothrow_t"); + __asm__ (_SYMSTR (__wrap__ZdlPvRKSt9nothrow_t)); extern void operator delete[](void *p, const std::nothrow_t &nt) throw() - __asm__ ("___wrap__ZdaPvRKSt9nothrow_t"); + __asm__ (_SYMSTR (__wrap__ZdaPvRKSt9nothrow_t)); extern void * operator new(std::size_t sz) throw (std::bad_alloc) |