Add weak specifiers to new.cc definitions

The STL says that these should be replaceable by user code.
This commit is contained in:
Steven Dee (Jōshin) 2024-06-19 09:01:41 -07:00
parent 9a5a13854d
commit 8b7b6a414e
No known key found for this signature in database

View file

@ -28,7 +28,9 @@ constexpr auto a1 = align_val_t(1);
} // namespace
void*
#define WEAK __attribute__((weak))
WEAK void*
operator new(size_t n, align_val_t a)
{
void* p;
@ -38,79 +40,79 @@ operator new(size_t n, align_val_t a)
return p;
}
void*
WEAK void*
operator new[](size_t n, align_val_t a)
{
return operator new(n, a);
}
void*
WEAK void*
operator new(size_t n)
{
return operator new(n, a1);
}
void*
WEAK void*
operator new[](size_t n)
{
return operator new(n, a1);
}
void*
WEAK void*
operator new(size_t, void* p)
{
return p;
}
void*
WEAK void*
operator new[](size_t, void* p)
{
return p;
}
void
WEAK void
operator delete(void* p) noexcept
{
free(p);
}
void
WEAK void
operator delete[](void* p) noexcept
{
free(p);
}
void
WEAK void
operator delete(void* p, align_val_t) noexcept
{
free(p);
}
void
WEAK void
operator delete[](void* p, align_val_t) noexcept
{
free(p);
}
void
WEAK void
operator delete(void* p, size_t) noexcept
{
free(p);
}
void
WEAK void
operator delete[](void* p, size_t) noexcept
{
free(p);
}
void
WEAK void
operator delete(void* p, size_t, align_val_t) noexcept
{
free(p);
}
void
WEAK void
operator delete[](void* p, size_t, align_val_t) noexcept
{
free(p);
}
void
WEAK void
operator delete(void*, void*) noexcept
{
}
void
WEAK void
operator delete[](void*, void*) noexcept
{
}