Merge "Add attribute weak on operator new/delete."
diff --git a/sources/cxx-stl/gabi++/src/delete.cc b/sources/cxx-stl/gabi++/src/delete.cc
index c3493a5..e91e589 100644
--- a/sources/cxx-stl/gabi++/src/delete.cc
+++ b/sources/cxx-stl/gabi++/src/delete.cc
@@ -30,28 +30,28 @@
#include <stdlib.h>
#include <new>
-void
-operator delete(void* ptr) throw()
+__attribute__ ((weak))
+void operator delete(void* ptr) throw()
{
if (ptr)
free(ptr);
}
-void
-operator delete[](void* ptr) throw()
+__attribute__ ((weak))
+void operator delete[](void* ptr) throw()
{
::operator delete(ptr);
}
-void
-operator delete(void* ptr, const std::nothrow_t &) throw()
+__attribute__ ((weak))
+void operator delete(void* ptr, const std::nothrow_t &) throw()
{
if (ptr)
free(ptr);
}
-void
-operator delete[](void* ptr, const std::nothrow_t &nt) throw()
+__attribute__ ((weak))
+void operator delete[](void* ptr, const std::nothrow_t &nt) throw()
{
::operator delete(ptr, nt);
}
diff --git a/sources/cxx-stl/gabi++/src/new.cc b/sources/cxx-stl/gabi++/src/new.cc
index c0fc00a..6008900 100644
--- a/sources/cxx-stl/gabi++/src/new.cc
+++ b/sources/cxx-stl/gabi++/src/new.cc
@@ -45,6 +45,7 @@
} // namespace std
+__attribute__ ((weak))
void* operator new(std::size_t size) throw(std::bad_alloc) {
void* space = ::operator new(size, std::nothrow_t());
if (space) {
@@ -54,14 +55,17 @@
}
}
+__attribute__ ((weak))
void* operator new(std::size_t size, const std::nothrow_t& no) throw() {
return malloc(size);
}
+__attribute__ ((weak))
void* operator new[](std::size_t size) throw(std::bad_alloc) {
return ::operator new(size);
}
+__attribute__ ((weak))
void* operator new[](std::size_t size, const std::nothrow_t& no) throw() {
return ::operator new[](size, no);
}