diff options
author | Florian Weimer <fweimer@redhat.com> | 2016-06-20 11:11:29 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2016-06-20 11:11:29 +0200 |
commit | 92e1ab0eb58c57d5843fa982ff6c24f551f2f634 (patch) | |
tree | e9080190c7a4e80722d4d30ca22ed55bc09bff09 | |
parent | e3c0687de17a97e5dcd991841b54bec181b30e90 (diff) | |
download | glibc-92e1ab0eb58c57d5843fa982ff6c24f551f2f634.tar.gz glibc-92e1ab0eb58c57d5843fa982ff6c24f551f2f634.tar.xz glibc-92e1ab0eb58c57d5843fa982ff6c24f551f2f634.zip |
Revert __malloc_initialize_hook symbol poisoning
It turns out the Emacs-internal malloc implementation uses __malloc_* symbols. If glibc poisons them in <stdc-pre.h>, Emacs will no longer compile.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | include/stdc-predef.h | 7 | ||||
-rw-r--r-- | malloc/Makefile | 14 | ||||
-rw-r--r-- | malloc/arena.c | 2 | ||||
-rw-r--r-- | malloc/malloc-hooks.h | 5 | ||||
-rw-r--r-- | malloc/malloc.c | 6 | ||||
-rw-r--r-- | 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 <fweimer@redhat.com> + + 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 <carlos@redhat.com> * 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 <threads.h>. */ #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 -# <stdc-predef.h> 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 <stdc-predef.h> 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 <stdc-predef.h>. 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; |