Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/libstdcxx_wrapper.cc')
-rwxr-xr-xwinsup/cygwin/libstdcxx_wrapper.cc27
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)