Hello, Mach-defpager uses libc’s malloc hooks and fails to build with libc 2.14 where they are declared as volatile [0]:
--8<---------------cut here---------------start------------->8--- i586-pc-gnu-gcc -std=gnu99 -fgnu89-inline -g -O3 -g -O2 -I. -I.. -I../include -I../include -D_GNU_SOURCE -D_IO_MTSAFE_IO -D_FILE_OFFSET_BITS=64 -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DHAVE_MIG_RETCODE=1 -DHAVE_GETGROUPLIST=1 -DHAVE_USELOCALE=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_PARTED_PARTED_H=1 -DHAVE_LIBPARTED=1 -DHAVE_LIBUUID=1 -DHAVE_LIBDL=1 -c -o kalloc.o kalloc.c kalloc.c:43:8: error: conflicting type qualifiers for '__malloc_initialize_hook' /nix/store/j4klk4cmm3ih0lpf749pkab7b82w7lgb-glibc-20111025-i586-pc-gnu/include/malloc.h:170:38: note: previous declaration of '__malloc_initialize_hook' was here --8<---------------cut here---------------end--------------->8--- OK to apply? (This is a temporary measure anyway since those variables are deprecated.) Thanks, Ludo’.
diff --git a/mach-defpager/kalloc.c b/mach-defpager/kalloc.c index 28c0b55..5d91ace 100644 --- a/mach-defpager/kalloc.c +++ b/mach-defpager/kalloc.c @@ -40,7 +40,13 @@ static void init_hook (void); static void *malloc_hook (size_t size, const void *caller); static void free_hook (void *ptr, const void *caller); -void (*__malloc_initialize_hook) (void) = init_hook; +/* GNU libc 2.14 defines this macro to declare hook variables as volatile. + Define it as empty for older libc versions. */ +#ifndef __MALLOC_HOOK_VOLATILE +# define __MALLOC_HOOK_VOLATILE +#endif + +void (*__MALLOC_HOOK_VOLATILE __malloc_initialize_hook) (void) = init_hook; #define DEBUG
[0] The offending libc change is: commit cf6bbbd701380accba8f709cf88b7bb160131e32 Author: Ulrich Drepper <drep...@gmail.com> Date: Sun May 29 20:40:08 2011 -0400 Declare malloc hook variables as volatile.