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 <enh@google.com>
This commit is contained in:
Дмитрий Левин 2014-02-26 00:01:00 +00:00
parent a78d777c86
commit d354130b3a
3 changed files with 15 additions and 1 deletions

View File

@ -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

View File

@ -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)
{

View File

@ -16,6 +16,10 @@
#include <stdarg.h>
#include <limits.h>
#ifndef HAVE_FPUTS_UNLOCKED
# define fputs_unlocked fputs
#endif
#define noinline_for_stack /*nothing*/
#define likely(expr) (expr)
#define unlikely(expr) (expr)