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);
 }