mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-18 14:48:17 +01:00
mcheck: integrate mcheck into dlmalloc.c
This changes are probable worth to be generalized in a separate .h-file so, making it able to cover libc-mallocs and others, without too much copy-paste. But the malloc<=>mALLOc substitutions interfere with an elegant way to do this. Signed-off-by: Eugene Uriev <eugeneuriev@gmail.com>
This commit is contained in:
parent
7dafc5c925
commit
151493a875
@ -2225,6 +2225,73 @@ void cfree(mem) Void_t *mem;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef MCHECK_HEAP_PROTECTION
|
||||||
|
#include "mcheck_core.inc.h"
|
||||||
|
#if !__STD_C
|
||||||
|
#error "must have __STD_C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Void_t *mALLOc(size_t bytes)
|
||||||
|
{
|
||||||
|
size_t fullsz = mcheck_alloc_prehook(bytes);
|
||||||
|
void *p = mALLOc_impl(fullsz);
|
||||||
|
|
||||||
|
if (!p)
|
||||||
|
return p;
|
||||||
|
return mcheck_alloc_posthook(p, bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fREe(Void_t *mem) { fREe_impl(mcheck_free_prehook(mem)); }
|
||||||
|
|
||||||
|
Void_t *rEALLOc(Void_t *oldmem, size_t bytes)
|
||||||
|
{
|
||||||
|
if (bytes == 0) {
|
||||||
|
if (oldmem)
|
||||||
|
fREe(oldmem);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oldmem == NULL)
|
||||||
|
return mALLOc(bytes);
|
||||||
|
|
||||||
|
void *p = mcheck_reallocfree_prehook(oldmem);
|
||||||
|
size_t newsz = mcheck_alloc_prehook(bytes);
|
||||||
|
|
||||||
|
p = rEALLOc_impl(p, newsz);
|
||||||
|
if (!p)
|
||||||
|
return p;
|
||||||
|
return mcheck_alloc_noclean_posthook(p, bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
Void_t *mEMALIGn(size_t alignment, size_t bytes)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pvALLOc, vALLOc - redirect to mEMALIGn, defined here, so they need no wrapping.
|
||||||
|
|
||||||
|
Void_t *cALLOc(size_t n, size_t elem_size)
|
||||||
|
{
|
||||||
|
// NB: here is no overflow check.
|
||||||
|
size_t fullsz = mcheck_alloc_prehook(n * elem_size);
|
||||||
|
void *p = cALLOc_impl(1, fullsz);
|
||||||
|
|
||||||
|
if (!p)
|
||||||
|
return p;
|
||||||
|
return mcheck_alloc_noclean_posthook(p, n * elem_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// mcheck API {
|
||||||
|
int mcheck(mcheck_abortfunc_t f)
|
||||||
|
{
|
||||||
|
mcheck_initialize(f, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum mcheck_status mprobe(void *__ptr) { return mcheck_mprobe(__ptr); }
|
||||||
|
// mcheck API }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user