LibC: Add option to debug userspace malloc family calls
This commit is contained in:
parent
6bd51ac345
commit
7542e55cb2
|
@ -1,3 +1,5 @@
|
||||||
|
#include <BAN/Debug.h>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -6,6 +8,8 @@
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define DEBUG_MALLOC 0
|
||||||
|
|
||||||
static consteval size_t log_size_t(size_t value, size_t base)
|
static consteval size_t log_size_t(size_t value, size_t base)
|
||||||
{
|
{
|
||||||
size_t result = 0;
|
size_t result = 0;
|
||||||
|
@ -174,6 +178,8 @@ static malloc_pool_t& pool_from_node(malloc_node_t* node)
|
||||||
|
|
||||||
void* malloc(size_t size)
|
void* malloc(size_t size)
|
||||||
{
|
{
|
||||||
|
dprintln_if(DEBUG_MALLOC, "malloc({})", size);
|
||||||
|
|
||||||
// align size to s_malloc_default_align boundary
|
// align size to s_malloc_default_align boundary
|
||||||
if (size_t ret = size % s_malloc_default_align)
|
if (size_t ret = size % s_malloc_default_align)
|
||||||
size += s_malloc_default_align - ret;
|
size += s_malloc_default_align - ret;
|
||||||
|
@ -207,6 +213,8 @@ void* malloc(size_t size)
|
||||||
|
|
||||||
void* realloc(void* ptr, size_t size)
|
void* realloc(void* ptr, size_t size)
|
||||||
{
|
{
|
||||||
|
dprintln_if(DEBUG_MALLOC, "realloc({}, {})", ptr, size);
|
||||||
|
|
||||||
if (ptr == nullptr)
|
if (ptr == nullptr)
|
||||||
return malloc(size);
|
return malloc(size);
|
||||||
|
|
||||||
|
@ -237,6 +245,8 @@ void* realloc(void* ptr, size_t size)
|
||||||
|
|
||||||
void free(void* ptr)
|
void free(void* ptr)
|
||||||
{
|
{
|
||||||
|
dprintln_if(DEBUG_MALLOC, "free({})", ptr);
|
||||||
|
|
||||||
if (ptr == nullptr)
|
if (ptr == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -265,6 +275,8 @@ void free(void* ptr)
|
||||||
|
|
||||||
void* calloc(size_t nmemb, size_t size)
|
void* calloc(size_t nmemb, size_t size)
|
||||||
{
|
{
|
||||||
|
dprintln_if(DEBUG_MALLOC, "calloc({}, {})", nmemb, size);
|
||||||
|
|
||||||
size_t total = nmemb * size;
|
size_t total = nmemb * size;
|
||||||
if (size != 0 && total / size != nmemb)
|
if (size != 0 && total / size != nmemb)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue