From 92e1ab0eb58c57d5843fa982ff6c24f551f2f634 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 20 Jun 2016 11:11:29 +0200 Subject: Revert __malloc_initialize_hook symbol poisoning It turns out the Emacs-internal malloc implementation uses __malloc_* symbols. If glibc poisons them in , Emacs will no longer compile. --- ChangeLog | 12 ++++++++++++ include/stdc-predef.h | 7 ------- malloc/Makefile | 14 -------------- malloc/arena.c | 2 +- malloc/malloc-hooks.h | 5 +---- malloc/malloc.c | 6 +++--- malloc/mcheck-init.c | 2 +- 7 files changed, 18 insertions(+), 30 deletions(-) diff --git a/ChangeLog b/ChangeLog index d610e9badc..58210558cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2016-06-20 Florian Weimer + + Revert symbol poisoning of __malloc_initialize_hook. + * include/stdc-predef.h (__malloc_initialize_hook): Remove + poisoning. + * malloc/Makefile: Remove un-poisoning. + * malloc/arena.c (ptmalloc_init): Use __malloc_initialize_hook + instead of old__malloc_initialize_hook. + * malloc/malloc-hooks.h: Likewise. + * malloc/malloc.c: Likewise. + * malloc/mcheck-init.c: Likewise. + 2016-06-19 Carlos O'Donell * sysdeps/unix/sysv/linux/times.c (__times): Expand comments. diff --git a/include/stdc-predef.h b/include/stdc-predef.h index 52cf8d10a0..f9f7f731d1 100644 --- a/include/stdc-predef.h +++ b/include/stdc-predef.h @@ -57,11 +57,4 @@ /* We do not support C11 . */ #define __STDC_NO_THREADS__ 1 -/* Remove symbols from the API which can be interposed. */ -#if defined (__GNUC__) -# if __GNUC__ >= 4 -# pragma GCC poison __malloc_initialize_hook -# endif /* __GNUC__ >= 4 */ -#endif /* __GNUC__ */ - #endif diff --git a/malloc/Makefile b/malloc/Makefile index 91eb17dd7a..fa1730ecb7 100644 --- a/malloc/Makefile +++ b/malloc/Makefile @@ -115,20 +115,6 @@ endif include ../Rules -# Support references to removed APIs. We use #pragma GCC poison in -# to make it difficult to reference them. For select -# source files, we work around this poisoning by defining a macro on -# the command line (which is processed before and can -# therefore use tokens poisoned later). -poisoned_apis = \ - __malloc_initialize_hook \ - -unpoisoned_api_defines := \ - $(foreach sym,$(poisoned_apis), \ - $(patsubst %,-Dold%, $(sym))=$(sym)) -CPPFLAGS-malloc.c = $(unpoisoned_api_defines) -CPPFLAGS-mcheck-init.c = $(unpoisoned_api_defines) - CFLAGS-mcheck-init.c = $(PIC-ccflag) CFLAGS-obstack.c = $(uses-callbacks) diff --git a/malloc/arena.c b/malloc/arena.c index 64a118c319..ed5a4d5cd3 100644 --- a/malloc/arena.c +++ b/malloc/arena.c @@ -341,7 +341,7 @@ ptmalloc_init (void) __malloc_check_init (); } #if HAVE_MALLOC_INIT_HOOK - void (*hook) (void) = atomic_forced_read (old__malloc_initialize_hook); + void (*hook) (void) = atomic_forced_read (__malloc_initialize_hook); if (hook != NULL) (*hook)(); #endif diff --git a/malloc/malloc-hooks.h b/malloc/malloc-hooks.h index 3be391b6fb..c7aa8b2d53 100644 --- a/malloc/malloc-hooks.h +++ b/malloc/malloc-hooks.h @@ -19,9 +19,6 @@ #ifndef _MALLOC_HOOKS_H #define _MALLOC_HOOKS_H -/* These hooks are no longer part of the public API and are poisoned - in . Their names here reflect the command-line - mapping which is used inside glibc to get past the poisoning. */ -void (*old__malloc_initialize_hook) (void); +void (*__malloc_initialize_hook) (void); #endif /* _MALLOC_HOOKS_H */ diff --git a/malloc/malloc.c b/malloc/malloc.c index 21a912a6d1..1f5f166ea2 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -1851,9 +1851,9 @@ static void *memalign_hook_ini (size_t alignment, size_t sz, const void *caller) __THROW; #if HAVE_MALLOC_INIT_HOOK -void weak_variable (*old__malloc_initialize_hook) (void) = NULL; -compat_symbol (libc, old__malloc_initialize_hook, - old__malloc_initialize_hook, GLIBC_2_0); +void weak_variable (*__malloc_initialize_hook) (void) = NULL; +compat_symbol (libc, __malloc_initialize_hook, + __malloc_initialize_hook, GLIBC_2_0); #endif void weak_variable (*__free_hook) (void *__ptr, diff --git a/malloc/mcheck-init.c b/malloc/mcheck-init.c index 3218bb03b9..8d63dd3488 100644 --- a/malloc/mcheck-init.c +++ b/malloc/mcheck-init.c @@ -27,4 +27,4 @@ turn_on_mcheck (void) mcheck (NULL); } -void (*old__malloc_initialize_hook) (void) = turn_on_mcheck; +void (*__malloc_initialize_hook) (void) = turn_on_mcheck; -- cgit v1.2.3