From 91a5b2c6f46db7f6882fb1bf514209f45802732e Mon Sep 17 00:00:00 2001 From: Wolfgang Jenkner Date: Mon, 16 Nov 2015 13:15:00 +0100 Subject: [PATCH 1/5] * src/gmalloc.c: Always define gmalloc and friends. This is a work-around to prevent the compiler from using semantic knowledge about malloc for optimization purposes. E.g., newer gcc with -O2 replaces most of calloc's definition by a call to calloc. --- src/gmalloc.c | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/gmalloc.c b/src/gmalloc.c index a88f4ab..90a52a1 100644 --- a/src/gmalloc.c +++ b/src/gmalloc.c @@ -60,7 +60,6 @@ extern void emacs_abort (void); which HYBRID_MACRO is defined. Any other platform that wants to define it will have to define the macros DUMPED and ALLOCATED_BEFORE_DUMPING, defined below for Cygwin. */ -#ifdef HYBRID_MALLOC #undef malloc #undef realloc #undef calloc @@ -70,7 +69,6 @@ extern void emacs_abort (void); #define calloc gcalloc #define aligned_alloc galigned_alloc #define free gfree -#endif /* HYBRID_MALLOC */ #ifdef CYGWIN extern void *bss_sbrk (ptrdiff_t size); @@ -1711,13 +1709,13 @@ valloc (size_t size) return aligned_alloc (pagesize, size); } -#ifdef HYBRID_MALLOC #undef malloc #undef realloc #undef calloc #undef aligned_alloc #undef free +#ifdef HYBRID_MALLOC /* Declare system malloc and friends. */ extern void *malloc (size_t size); extern void *realloc (void *ptr, size_t size); @@ -1816,6 +1814,38 @@ hybrid_get_current_dir_name (void) } #endif +#else /* ! HYBRID_MALLOC */ + +void * +malloc (size_t size) +{ + return gmalloc (size); +} + +void * +calloc (size_t nmemb, size_t size) +{ + return gcalloc (nmemb, size); +} + +void +free (void *ptr) +{ + gfree (ptr); +} + +void * +aligned_alloc (size_t alignment, size_t size) +{ + return galigned_alloc (alignment, size); +} + +void * +realloc (void *ptr, size_t size) +{ + return grealloc (ptr, size); +} + #endif /* HYBRID_MALLOC */ #ifdef GC_MCHECK -- 2.6.3