From d354130b3ac060051b55cda46c45ab5f5574548d Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Wed, 26 Feb 2014 00:01:00 +0000 Subject: Fix build with Bionic libc Add generic tests for fopen64 and fputs_unlocked functions to fix build with Bionic libc that does not provide them. * configure.ac (AC_CHECK_FUNCS): Add fopen64 and fputs_unlocked. * strace.c [_LARGEFILE64_SOURCE]: Use fopen instead of fopen64 if !HAVE_FOPEN64. Use fputs instead of fputs_unlocked if !HAVE_FPUTS_UNLOCKED. * vsprintf.c: Use fputs instead of fputs_unlocked if !HAVE_FPUTS_UNLOCKED. Reported-by: Elliott Hughes --- configure.ac | 2 ++ strace.c | 10 +++++++++- vsprintf.c | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index db24349..75eafc8 100644 --- a/configure.ac +++ b/configure.ac @@ -196,7 +196,9 @@ AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,, AC_LITTLE_ENDIAN_LONG_LONG AC_CHECK_FUNCS(m4_normalize([ + fopen64 fork + fputs_unlocked if_indextoname inet_ntop prctl diff --git a/strace.c b/strace.c index 914b0a6..063cb94 100644 --- a/strace.c +++ b/strace.c @@ -439,7 +439,11 @@ swap_uid(void) } #ifdef _LARGEFILE64_SOURCE -# define fopen_for_output fopen64 +# ifdef HAVE_FOPEN64 +# define fopen_for_output fopen64 +# else +# define fopen_for_output fopen +# endif # define struct_stat struct stat64 # define stat_file stat64 # define struct_dirent struct dirent64 @@ -537,6 +541,10 @@ tprintf(const char *fmt, ...) va_end(args); } +#ifndef HAVE_FPUTS_UNLOCKED +# define fputs_unlocked fputs +#endif + void tprints(const char *str) { diff --git a/vsprintf.c b/vsprintf.c index 92fe1a7..0125e72 100644 --- a/vsprintf.c +++ b/vsprintf.c @@ -16,6 +16,10 @@ #include #include +#ifndef HAVE_FPUTS_UNLOCKED +# define fputs_unlocked fputs +#endif + #define noinline_for_stack /*nothing*/ #define likely(expr) (expr) #define unlikely(expr) (expr) -- cgit v1.2.3