From 750c1f2a9aefc7b3329283c1b0c95e1a0bb88f14 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 17 Aug 2012 11:29:45 -0700 Subject: [PATCH] Make malloc build for no-threads configurations. --- ChangeLog | 11 +++++++++-- malloc/arena.c | 12 ++++++++---- malloc/malloc.c | 3 ++- sysdeps/generic/malloc-machine.h | 11 ++++++----- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index fd40eec..62a6916 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,17 @@ 2012-08-17 Roland McGrath + * sysdeps/generic/malloc-machine.h (MUTEX_INITIALIZER): New macro. + (atomic_full_barrier, atomic_read_barrier, atomic_write_barrier): + Macros removed. + * malloc/arena.c (save_malloc_hook, save_free_hook): Conditionalize on + [!NO_THREADS]. + (malloc_atfork, free_atfork, atfork_recursive_cntr): Likewise. + (ptmalloc_lock_all, ptmalloc_unlock_all, ptmalloc_unlock_all2): + Likewise. + * elf/dl-iteratephdr.c (__dl_iterate_phdr): Use NULL rather than 0 for __libc_cleanup_push argument. -2012-08-17 Roland McGrath - * bits/param.h: New file. * misc/sys/param.h: New file. * include/sys/param.h: New file. diff --git a/malloc/arena.c b/malloc/arena.c index 06bdd77..9e5e332 100644 --- a/malloc/arena.c +++ b/malloc/arena.c @@ -141,6 +141,8 @@ int __malloc_initialized = -1; /**************************************************************************/ +#ifndef NO_THREADS + /* atfork support. */ static __malloc_ptr_t (*save_malloc_hook) (size_t __size, @@ -276,7 +278,7 @@ ptmalloc_unlock_all (void) (void)mutex_unlock(&list_lock); } -#ifdef __linux__ +# ifdef __linux__ /* In NPTL, unlocking a mutex in the child process after a fork() is currently unsafe, whereas re-initializing it is safe and @@ -311,11 +313,13 @@ ptmalloc_unlock_all2 (void) atfork_recursive_cntr = 0; } -#else +# else -#define ptmalloc_unlock_all2 ptmalloc_unlock_all +# define ptmalloc_unlock_all2 ptmalloc_unlock_all -#endif +# endif + +#endif /* !NO_THREADS */ /* Initialization routine. */ #include diff --git a/malloc/malloc.c b/malloc/malloc.c index 373e063..0f1796c 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -1075,9 +1075,10 @@ static void* realloc_check(void* oldmem, size_t bytes, const void *caller); static void* memalign_check(size_t alignment, size_t bytes, const void *caller); -/* These routines are never needed in this configuration. */ +#ifndef NO_THREADS static void* malloc_atfork(size_t sz, const void *caller); static void free_atfork(void* mem, const void *caller); +#endif /* ------------- Optional versions of memcopy ---------------- */ diff --git a/sysdeps/generic/malloc-machine.h b/sysdeps/generic/malloc-machine.h index 03e9de5..851978a 100644 --- a/sysdeps/generic/malloc-machine.h +++ b/sysdeps/generic/malloc-machine.h @@ -1,6 +1,6 @@ /* Basic platform-independent macro definitions for mutexes, thread-specific data and parameters for malloc. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -34,10 +34,11 @@ be based on atomic test-and-set operations, for example. */ typedef int mutex_t; -# define mutex_init(m) (*(m) = 0) -# define mutex_lock(m) ((*(m) = 1), 0) -# define mutex_trylock(m) (*(m) ? 1 : ((*(m) = 1), 0)) -# define mutex_unlock(m) (*(m) = 0) +# define mutex_init(m) (*(m) = 0) +# define mutex_lock(m) ((*(m) = 1), 0) +# define mutex_trylock(m) (*(m) ? 1 : ((*(m) = 1), 0)) +# define mutex_unlock(m) (*(m) = 0) +# define MUTEX_INITIALIZER (0) typedef void *tsd_key_t; # define tsd_key_create(key, destr) do {} while(0) -- 2.7.4