aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorPaul Eggert2016-01-26 23:00:10 -0800
committerPaul Eggert2016-01-26 23:01:48 -0800
commitb88e9cded7ae3756e3a2ec4a23e8df352a0239f9 (patch)
tree201806e4c770722fa29ef77365030df930751d06 /src/lisp.h
parentcf17002326ba29d78f20118e0016dbd32fc3527e (diff)
downloademacs-b88e9cded7ae3756e3a2ec4a23e8df352a0239f9.tar.gz
emacs-b88e9cded7ae3756e3a2ec4a23e8df352a0239f9.zip
malloc.h hygiene
This attempts to future-proof Emacs a bit against possible glibc changes, by having Emacs use <malloc.h> declarations rather than coding them up by hand. Problem noted by Florian Weimer in: https://sourceware.org/ml/libc-alpha/2016-01/msg00777.html Implement this mainly by moving malloc.h-related functions from emacs.c (which does not include <malloc.h>) to alloc.c (which does). * src/alloc.c (my_heap_start) [DOUG_LEA_MALLOC || GNU_LINUX]: New function. The remaining changes to this file apply only if DOUG_LEA_MALLOC. (alloc_unexec_pre, alloc_unexec_post): New functions. (malloc_initialize_hook): Use my_heap_start and alloc_unexec_post. (__MALLOC_HOOK_VOLATILE): New macro, if not already defined. (__malloc_initialize_hook): Use it. (malloc_state_ptr, malloc_initialize_hook, __malloc_initialize_hook): Move here from ... * src/emacs.c: ... here. (malloc_get_state, malloc_set_state): Remove extern decls. (my_heap_start) [DOUG_LEA_MALLOC || GNU_LINUX]: Remove static var. All uses changed to similarly-named new function. (Fdump_emacs): Use new functions alloc_unexec_pre, alloc_unexec_post. * src/lisp.h (my_heap_start, alloc_unexec_pre, alloc_unexec_post): New decls.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 6be2104ef9e..82cbca8e6ba 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3590,6 +3590,7 @@ extern void parse_str_as_multibyte (const unsigned char *, ptrdiff_t,
3590 ptrdiff_t *, ptrdiff_t *); 3590 ptrdiff_t *, ptrdiff_t *);
3591 3591
3592/* Defined in alloc.c. */ 3592/* Defined in alloc.c. */
3593extern void *my_heap_start (void);
3593extern void check_pure_size (void); 3594extern void check_pure_size (void);
3594extern void free_misc (Lisp_Object); 3595extern void free_misc (Lisp_Object);
3595extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); 3596extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT);
@@ -3601,6 +3602,13 @@ extern void mark_object (Lisp_Object);
3601#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC 3602#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
3602extern void refill_memory_reserve (void); 3603extern void refill_memory_reserve (void);
3603#endif 3604#endif
3605#ifdef DOUG_LEA_MALLOC
3606extern void alloc_unexec_pre (void);
3607extern void alloc_unexec_post (void);
3608#else
3609INLINE void alloc_unexec_pre (void) {}
3610INLINE void alloc_unexec_post (void) {}
3611#endif
3604extern const char *pending_malloc_warning; 3612extern const char *pending_malloc_warning;
3605extern Lisp_Object zero_vector; 3613extern Lisp_Object zero_vector;
3606extern Lisp_Object *stack_base; 3614extern Lisp_Object *stack_base;