Make the malloc(3) family of functions weak and make their non-weak

implementations visible for use by applications. The functions $F that
are now weak symbols are:
	allocm, calloc, dallocm, free, malloc, malloc_usable_size,
	nallocm, posix_memalign, rallocm, realloc, sallocm

The non-weak implementations of $F are exported as __$F.

Submitted by:	stevek@juniper.net
Reviewed by:	jasone@, kib@
Approved by:	jasone@ (jemalloc)
Obtained from:	juniper Networks, Inc
This commit is contained in:
Marcel Moolenaar 2013-05-25 18:59:11 +00:00
parent e814330de1
commit 9dfba391d6
3 changed files with 64 additions and 0 deletions

View file

@ -68,9 +68,50 @@ extern int __isthreaded;
#define isthreaded ((bool)__isthreaded)
/* Mangle. */
#undef je_malloc
#undef je_calloc
#undef je_realloc
#undef je_free
#undef je_posix_memalign
#undef je_malloc_usable_size
#undef je_allocm
#undef je_rallocm
#undef je_sallocm
#undef je_dallocm
#undef je_nallocm
#define je_malloc __malloc
#define je_calloc __calloc
#define je_realloc __realloc
#define je_free __free
#define je_posix_memalign __posix_memalign
#define je_malloc_usable_size __malloc_usable_size
#define je_allocm __allocm
#define je_rallocm __rallocm
#define je_sallocm __sallocm
#define je_dallocm __dallocm
#define je_nallocm __nallocm
#define open _open
#define read _read
#define write _write
#define close _close
#define pthread_mutex_lock _pthread_mutex_lock
#define pthread_mutex_unlock _pthread_mutex_unlock
#ifdef JEMALLOC_C_
/*
* Define 'weak' symbols so that an application can have its own versions
* of malloc, calloc, realloc, free, et al.
*/
__weak_reference(__malloc, malloc);
__weak_reference(__calloc, calloc);
__weak_reference(__realloc, realloc);
__weak_reference(__free, free);
__weak_reference(__posix_memalign, posix_memalign);
__weak_reference(__malloc_usable_size, malloc_usable_size);
__weak_reference(__allocm, allocm);
__weak_reference(__rallocm, rallocm);
__weak_reference(__sallocm, sallocm);
__weak_reference(__dallocm, dallocm);
__weak_reference(__nallocm, nallocm);
#endif

View file

@ -61,6 +61,18 @@ int rallocm(void **ptr, size_t *rsize, size_t size, size_t extra,
int sallocm(const void *ptr, size_t *rsize, int flags) __nonnull(1);
int dallocm(void *ptr, int flags) __nonnull(1);
int nallocm(size_t *rsize, size_t size, int flags);
void * __calloc(size_t, size_t) __malloc_like;
void * __malloc(size_t) __malloc_like;
void * __realloc(void *, size_t);
void __free(void *);
int __posix_memalign(void **, size_t, size_t);
size_t __malloc_usable_size(const void *);
int __allocm(void **, size_t *, size_t, int) __nonnull(1);
int __rallocm(void **, size_t *, size_t, size_t, int) __nonnull(1);
int __sallocm(const void *, size_t *, int) __nonnull(1);
int __dallocm(void *, int) __nonnull(1);
int __nallocm(size_t *, size_t, int);
__END_DECLS
#endif /* _MALLOC_NP_H_ */

View file

@ -26,6 +26,17 @@ FBSD_1.3 {
sallocm;
dallocm;
nallocm;
__malloc;
__calloc;
__realloc;
__free;
__posix_memalign;
__malloc_usable_size;
__allocm;
__rallocm;
__sallocm;
__dallocm;
__nallocm;
};
FBSDprivate_1.0 {