diff options
| author | Paul Eggert | 2016-01-26 23:00:10 -0800 |
|---|---|---|
| committer | Paul Eggert | 2016-01-26 23:01:48 -0800 |
| commit | b88e9cded7ae3756e3a2ec4a23e8df352a0239f9 (patch) | |
| tree | 201806e4c770722fa29ef77365030df930751d06 /src/lisp.h | |
| parent | cf17002326ba29d78f20118e0016dbd32fc3527e (diff) | |
| download | emacs-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.h | 8 |
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. */ |
| 3593 | extern void *my_heap_start (void); | ||
| 3593 | extern void check_pure_size (void); | 3594 | extern void check_pure_size (void); |
| 3594 | extern void free_misc (Lisp_Object); | 3595 | extern void free_misc (Lisp_Object); |
| 3595 | extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); | 3596 | extern 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 |
| 3602 | extern void refill_memory_reserve (void); | 3603 | extern void refill_memory_reserve (void); |
| 3603 | #endif | 3604 | #endif |
| 3605 | #ifdef DOUG_LEA_MALLOC | ||
| 3606 | extern void alloc_unexec_pre (void); | ||
| 3607 | extern void alloc_unexec_post (void); | ||
| 3608 | #else | ||
| 3609 | INLINE void alloc_unexec_pre (void) {} | ||
| 3610 | INLINE void alloc_unexec_post (void) {} | ||
| 3611 | #endif | ||
| 3604 | extern const char *pending_malloc_warning; | 3612 | extern const char *pending_malloc_warning; |
| 3605 | extern Lisp_Object zero_vector; | 3613 | extern Lisp_Object zero_vector; |
| 3606 | extern Lisp_Object *stack_base; | 3614 | extern Lisp_Object *stack_base; |