From 696674a800cb6d2070897a565b92d7e63022a8f1 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 16 Jul 2017 15:51:28 -0700 Subject: [PATCH] fix build with musl libc Patch from https://github.com/gperftools/gperftools/pull/765/ Signed-off-by: Khem Raj --- configure.ac | 1 + src/malloc_hook_mmap_linux.h | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 497103e..f9efc3e 100644 --- a/configure.ac +++ b/configure.ac @@ -188,6 +188,7 @@ AC_HEADER_STDC AC_CHECK_TYPES([__int64]) # defined in some windows platforms AC_CHECK_TYPES([struct mallinfo],,, [#include ]) AC_CHECK_TYPES([Elf32_Versym],,, [#include ]) # for vdso_support.h +AC_CHECK_FUNCS(__sbrk) # for intercepting glibc memory allocator AC_CHECK_FUNCS(sbrk) # for tcmalloc to get memory AC_CHECK_FUNCS(geteuid) # for turning off services when run as root AC_CHECK_FUNCS(fork) # for the pthread_atfork setup diff --git a/src/malloc_hook_mmap_linux.h b/src/malloc_hook_mmap_linux.h index 2f6116f..0605855 100755 --- a/src/malloc_hook_mmap_linux.h +++ b/src/malloc_hook_mmap_linux.h @@ -46,6 +46,10 @@ #include #include "base/linux_syscall_support.h" +#ifndef __GLIBC__ +typedef off64_t __off64_t; +#endif + // The x86-32 case and the x86-64 case differ: // 32b has a mmap2() syscall, 64b does not. // 64b and 32b have different calling conventions for mmap(). @@ -168,7 +172,7 @@ extern "C" void* mmap64(void *start, size_t length, int prot, int flags, return result; } -# if !defined(__USE_FILE_OFFSET64) || !defined(__REDIRECT_NTH) +# if defined(__GLIBC__) && (!defined(__USE_FILE_OFFSET64) || !defined(__REDIRECT_NTH)) extern "C" void* mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) __THROW { @@ -206,7 +210,7 @@ extern "C" void* mremap(void* old_addr, size_t old_size, size_t new_size, return result; } -#ifndef __UCLIBC__ +#if HAVE___SBRK // libc's version: extern "C" void* __sbrk(intptr_t increment);