mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-08-04 00:40:27 +00:00
Add weak specifiers to new.cc definitions
The STL says that these should be replaceable by user code.
This commit is contained in:
parent
9a5a13854d
commit
8b7b6a414e
1 changed files with 18 additions and 16 deletions
34
ctl/new.cc
34
ctl/new.cc
|
@ -28,7 +28,9 @@ constexpr auto a1 = align_val_t(1);
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
void*
|
#define WEAK __attribute__((weak))
|
||||||
|
|
||||||
|
WEAK void*
|
||||||
operator new(size_t n, align_val_t a)
|
operator new(size_t n, align_val_t a)
|
||||||
{
|
{
|
||||||
void* p;
|
void* p;
|
||||||
|
@ -38,79 +40,79 @@ operator new(size_t n, align_val_t a)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void*
|
WEAK void*
|
||||||
operator new[](size_t n, align_val_t a)
|
operator new[](size_t n, align_val_t a)
|
||||||
{
|
{
|
||||||
return operator new(n, a);
|
return operator new(n, a);
|
||||||
}
|
}
|
||||||
void*
|
WEAK void*
|
||||||
operator new(size_t n)
|
operator new(size_t n)
|
||||||
{
|
{
|
||||||
return operator new(n, a1);
|
return operator new(n, a1);
|
||||||
}
|
}
|
||||||
void*
|
WEAK void*
|
||||||
operator new[](size_t n)
|
operator new[](size_t n)
|
||||||
{
|
{
|
||||||
return operator new(n, a1);
|
return operator new(n, a1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void*
|
WEAK void*
|
||||||
operator new(size_t, void* p)
|
operator new(size_t, void* p)
|
||||||
{
|
{
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
void*
|
WEAK void*
|
||||||
operator new[](size_t, void* p)
|
operator new[](size_t, void* p)
|
||||||
{
|
{
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
WEAK void
|
||||||
operator delete(void* p) noexcept
|
operator delete(void* p) noexcept
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
void
|
WEAK void
|
||||||
operator delete[](void* p) noexcept
|
operator delete[](void* p) noexcept
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
void
|
WEAK void
|
||||||
operator delete(void* p, align_val_t) noexcept
|
operator delete(void* p, align_val_t) noexcept
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
void
|
WEAK void
|
||||||
operator delete[](void* p, align_val_t) noexcept
|
operator delete[](void* p, align_val_t) noexcept
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
void
|
WEAK void
|
||||||
operator delete(void* p, size_t) noexcept
|
operator delete(void* p, size_t) noexcept
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
void
|
WEAK void
|
||||||
operator delete[](void* p, size_t) noexcept
|
operator delete[](void* p, size_t) noexcept
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
void
|
WEAK void
|
||||||
operator delete(void* p, size_t, align_val_t) noexcept
|
operator delete(void* p, size_t, align_val_t) noexcept
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
void
|
WEAK void
|
||||||
operator delete[](void* p, size_t, align_val_t) noexcept
|
operator delete[](void* p, size_t, align_val_t) noexcept
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
WEAK void
|
||||||
operator delete(void*, void*) noexcept
|
operator delete(void*, void*) noexcept
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void
|
WEAK void
|
||||||
operator delete[](void*, void*) noexcept
|
operator delete[](void*, void*) noexcept
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue