This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by strace configure 4.5.12, which was
generated by GNU Autoconf 2.59.  Invocation command line was

  $ ./configure --prefix=/data/ --build=arm-unknown-linux-gnu

## --------- ##
## Platform. ##
## --------- ##

hostname = skywriting.corp.google.com
uname -m = x86_64
uname -r = 2.6.18.5-gg19workstation-mixed64-32
uname -s = Linux
uname -v = #1 SMP Tue Nov 20 16:02:52 PST 2007

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = x86_64
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
hostinfo               = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /usr/local/symlinks
PATH: /usr/local/scripts
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/bin/X11
PATH: /android/device/prebuilt/Linux/toolchain/bin/
PATH: /home/mkf/bin
PATH: /android/device/out/host/linux-x86/bin
PATH: /android/device/prebuilt/Linux/toolchain/arm-elf
PATH: /android/device/tools/qtools
PATH: /android/device/prebuilt/Linux/toolchain-eabi-4.2.1/bin
PATH: /android/device/prebuilt/Linux/toolchain-eabi-4.2.1/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1358: checking for a BSD-compatible install
configure:1413: result: /usr/bin/install -c
configure:1424: checking whether build environment is sane
configure:1467: result: yes
configure:1532: checking for gawk
configure:1548: found /usr/bin/gawk
configure:1558: result: gawk
configure:1568: checking whether make sets $(MAKE)
configure:1588: result: yes
configure:1756: checking whether to enable maintainer-specific portions of Makefiles
configure:1765: result: no
configure:1786: checking build system type
configure:1804: result: arm-unknown-linux-gnu
configure:1812: checking host system type
configure:1826: result: arm-unknown-linux-gnu
configure:1835: checking for supported operating system
configure:1894: result: linux
configure:1897: checking for supported architecture
configure:2028: result: arm
configure:2141: checking for gcc
configure:2157: found /usr/bin/gcc
configure:2167: result: gcc
configure:2411: checking for C compiler version
configure:2414: gcc --version </dev/null >&5
gcc (GCC) 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:2417: $? = 0
configure:2419: gcc -v </dev/null >&5
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --with-tune=pentium4 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
configure:2422: $? = 0
configure:2424: gcc -V </dev/null >&5
gcc: '-V' option must have argument
configure:2427: $? = 1
configure:2450: checking for C compiler default output file name
configure:2453: gcc -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:2456: $? = 0
configure:2502: result: a.out
configure:2507: checking whether the C compiler works
configure:2513: ./a.out
configure:2516: $? = 0
configure:2533: result: yes
configure:2540: checking whether we are cross compiling
configure:2542: result: no
configure:2545: checking for suffix of executables
configure:2547: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:2550: $? = 0
configure:2575: result: 
configure:2581: checking for suffix of object files
configure:2602: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:2605: $? = 0
configure:2627: result: o
configure:2631: checking whether we are using the GNU C compiler
configure:2655: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:2661: $? = 0
configure:2665: test -z 
			 || test ! -s conftest.err
configure:2668: $? = 0
configure:2671: test -s conftest.o
configure:2674: $? = 0
configure:2687: result: yes
configure:2693: checking whether gcc accepts -g
configure:2714: gcc -c -g  conftest.c >&5
configure:2720: $? = 0
configure:2724: test -z 
			 || test ! -s conftest.err
configure:2727: $? = 0
configure:2730: test -s conftest.o
configure:2733: $? = 0
configure:2744: result: yes
configure:2761: checking for gcc option to accept ANSI C
configure:2831: gcc  -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:2837: $? = 0
configure:2841: test -z 
			 || test ! -s conftest.err
configure:2844: $? = 0
configure:2847: test -s conftest.o
configure:2850: $? = 0
configure:2868: result: none needed
configure:2886: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:2: error: syntax error before 'me'
configure:2892: $? = 1
configure: failed program was:
| #ifndef __cplusplus
|   choke me
| #endif
configure:3036: checking for style of include used by make
configure:3064: result: GNU
configure:3092: checking dependency style of gcc
configure:3182: result: gcc3
configure:3207: checking for primary include directory
configure:3225: result: /usr/include
configure:3274: checking how to run the C preprocessor
configure:3309: gcc -E  conftest.c
configure:3315: $? = 0
configure:3347: gcc -E  conftest.c
conftest.c:14:28: error: ac_nonexistent.h: No such file or directory
configure:3353: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3392: result: gcc -E
configure:3416: gcc -E  conftest.c
configure:3422: $? = 0
configure:3454: gcc -E  conftest.c
conftest.c:14:28: error: ac_nonexistent.h: No such file or directory
configure:3460: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3505: checking for egrep
configure:3515: result: grep -E
configure:3521: checking whether gcc needs -traditional
configure:3563: result: no
configure:3583: checking for a BSD-compatible install
configure:3638: result: /usr/bin/install -c
configure:3649: checking for an ANSI C-conforming const
configure:3716: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:3722: $? = 0
configure:3726: test -z 
			 || test ! -s conftest.err
configure:3729: $? = 0
configure:3732: test -s conftest.o
configure:3735: $? = 0
configure:3746: result: yes
configure:3756: checking for ANSI C header files
configure:3781: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:3787: $? = 0
configure:3791: test -z 
			 || test ! -s conftest.err
configure:3794: $? = 0
configure:3797: test -s conftest.o
configure:3800: $? = 0
configure:3889: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
conftest.c: In function 'main':
conftest.c:31: warning: incompatible implicit declaration of built-in function 'exit'
configure:3892: $? = 0
configure:3894: ./conftest
configure:3897: $? = 0
configure:3912: result: yes
configure:3930: checking for dirent.h that defines DIR
configure:3954: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:3960: $? = 0
configure:3964: test -z 
			 || test ! -s conftest.err
configure:3967: $? = 0
configure:3970: test -s conftest.o
configure:3973: $? = 0
configure:3984: result: yes
configure:3997: checking for library containing opendir
configure:4027: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:4033: $? = 0
configure:4037: test -z 
			 || test ! -s conftest.err
configure:4040: $? = 0
configure:4043: test -s conftest
configure:4046: $? = 0
configure:4116: result: none required
configure:4252: checking whether stat file-mode macros are broken
configure:4300: result: no
configure:4324: checking for sys/types.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4324: checking for sys/stat.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4324: checking for stdlib.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4324: checking for string.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4324: checking for memory.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4324: checking for strings.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4324: checking for inttypes.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4324: checking for stdint.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4324: checking for unistd.h
configure:4340: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4346: $? = 0
configure:4350: test -z 
			 || test ! -s conftest.err
configure:4353: $? = 0
configure:4356: test -s conftest.o
configure:4359: $? = 0
configure:4370: result: yes
configure:4382: checking for struct stat.st_blksize
configure:4405: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4411: $? = 0
configure:4415: test -z 
			 || test ! -s conftest.err
configure:4418: $? = 0
configure:4421: test -s conftest.o
configure:4424: $? = 0
configure:4481: result: yes
configure:4491: checking for struct stat.st_blocks
configure:4514: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:4520: $? = 0
configure:4524: test -z 
			 || test ! -s conftest.err
configure:4527: $? = 0
configure:4530: test -s conftest.o
configure:4533: $? = 0
configure:4590: result: yes
configure:4600: checking for struct stat.st_aclcnt
configure:4623: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_aclcnt'
configure:4629: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (ac_aggr.st_aclcnt)
| return 0;
|   ;
|   return 0;
| }
configure:4667: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_aclcnt'
configure:4673: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (sizeof ac_aggr.st_aclcnt)
| return 0;
|   ;
|   return 0;
| }
configure:4699: result: no
configure:4709: checking for struct stat.st_flags
configure:4732: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_flags'
configure:4738: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (ac_aggr.st_flags)
| return 0;
|   ;
|   return 0;
| }
configure:4776: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_flags'
configure:4782: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (sizeof ac_aggr.st_flags)
| return 0;
|   ;
|   return 0;
| }
configure:4808: result: no
configure:4818: checking for struct stat.st_fstype
configure:4841: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_fstype'
configure:4847: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (ac_aggr.st_fstype)
| return 0;
|   ;
|   return 0;
| }
configure:4885: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_fstype'
configure:4891: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (sizeof ac_aggr.st_fstype)
| return 0;
|   ;
|   return 0;
| }
configure:4917: result: no
configure:4927: checking for struct stat.st_gen
configure:4950: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_gen'
configure:4956: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (ac_aggr.st_gen)
| return 0;
|   ;
|   return 0;
| }
configure:4994: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_gen'
configure:5000: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (sizeof ac_aggr.st_gen)
| return 0;
|   ;
|   return 0;
| }
configure:5026: result: no
configure:5036: checking for struct stat.st_level
configure:5059: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_level'
configure:5065: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (ac_aggr.st_level)
| return 0;
|   ;
|   return 0;
| }
configure:5103: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:65: error: 'struct stat' has no member named 'st_level'
configure:5109: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| static struct stat ac_aggr;
| if (sizeof ac_aggr.st_level)
| return 0;
|   ;
|   return 0;
| }
configure:5135: result: no
configure:5145: checking for struct stat.st_rdev
configure:5168: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:5174: $? = 0
configure:5178: test -z 
			 || test ! -s conftest.err
configure:5181: $? = 0
configure:5184: test -s conftest.o
configure:5187: $? = 0
configure:5244: result: yes
configure:5255: checking for stat64 in (asm|sys)/stat.h
configure:5281: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:5287: $? = 0
configure:5291: test -z 
			 || test ! -s conftest.err
configure:5294: $? = 0
configure:5297: test -s conftest.o
configure:5300: $? = 0
configure:5312: result: yes
configure:5324: checking return type of signal handlers
configure:5355: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:5361: $? = 0
configure:5365: test -z 
			 || test ! -s conftest.err
configure:5368: $? = 0
configure:5371: test -s conftest.o
configure:5374: $? = 0
configure:5385: result: void
configure:5393: checking for uid_t in sys/types.h
configure:5416: result: yes
configure:5431: checking for mode_t
configure:5455: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:5461: $? = 0
configure:5465: test -z 
			 || test ! -s conftest.err
configure:5468: $? = 0
configure:5471: test -s conftest.o
configure:5474: $? = 0
configure:5485: result: yes
configure:5497: checking type of array argument to getgroups
configure:5535: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
conftest.c: In function 'main':
conftest.c:50: warning: incompatible implicit declaration of built-in function 'exit'
configure:5538: $? = 0
configure:5540: ./conftest
configure:5543: $? = 0
configure:5576: result: gid_t
configure:5584: checking whether sys/types.h defines makedev
configure:5605: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:5611: $? = 0
configure:5615: test -z 
			 || test ! -s conftest.err
configure:5618: $? = 0
configure:5621: test -s conftest
configure:5624: $? = 0
configure:5637: result: yes
configure:5938: checking for sig_atomic_t
configure:5963: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:5969: $? = 0
configure:5973: test -z 
			 || test ! -s conftest.err
configure:5976: $? = 0
configure:5979: test -s conftest.o
configure:5982: $? = 0
configure:5993: result: yes
configure:6003: checking for siginfo_t
configure:6028: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6034: $? = 0
configure:6038: test -z 
			 || test ! -s conftest.err
configure:6041: $? = 0
configure:6044: test -s conftest.o
configure:6047: $? = 0
configure:6058: result: yes
configure:6069: checking for struct sockaddr_in6.sin6_scope_id
configure:6095: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6101: $? = 0
configure:6105: test -z 
			 || test ! -s conftest.err
configure:6108: $? = 0
configure:6111: test -s conftest.o
configure:6114: $? = 0
configure:6174: result: yes
configure:6185: checking for long long
configure:6209: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6215: $? = 0
configure:6219: test -z 
			 || test ! -s conftest.err
configure:6222: $? = 0
configure:6225: test -s conftest.o
configure:6228: $? = 0
configure:6239: result: yes
configure:6250: checking for little endian long long
configure:6280: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6283: $? = 0
configure:6285: ./conftest
configure:6288: $? = 0
configure:6303: result: yes
configure:6314: checking for long long off_t
configure:6340: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6343: $? = 0
configure:6345: ./conftest
configure:6348: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| /* end confdefs.h.  */
| #include <sys/types.h>
| main () {
| 	if (sizeof (off_t) == sizeof (long long) &&
| 	    sizeof (off_t) > sizeof (long))
| 	    return 0;
| 	return 1;
| }
| 
configure:6363: result: no
configure:6374: checking for long long rlim_t
configure:6402: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6405: $? = 0
configure:6407: ./conftest
configure:6410: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| /* end confdefs.h.  */
| #include <sys/types.h>
| #include <sys/time.h>
| #include <sys/resource.h>
| main () {
| 	if (sizeof (rlim_t) == sizeof (long long) &&
| 	    sizeof (rlim_t) > sizeof (long))
| 	    return 0;
| 	return 1;
| }
| 
configure:6425: result: no
configure:6436: checking for struct opthdr
configure:6461: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:43: error: invalid application of 'sizeof' to incomplete type 'struct opthdr' 
configure:6467: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| /* end confdefs.h.  */
| #include <sys/socket.h>
| 
| int
| main ()
| {
| if ((struct opthdr *) 0)
|   return 0;
| if (sizeof (struct opthdr))
|   return 0;
|   ;
|   return 0;
| }
configure:6491: result: no
configure:6502: checking for struct t_opthdr
configure:6527: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:36:24: error: sys/tiuser.h: No such file or directory
conftest.c: In function 'main':
conftest.c:43: error: invalid application of 'sizeof' to incomplete type 'struct t_opthdr' 
configure:6533: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| /* end confdefs.h.  */
| #include <sys/tiuser.h>
| 
| int
| main ()
| {
| if ((struct t_opthdr *) 0)
|   return 0;
| if (sizeof (struct t_opthdr))
|   return 0;
|   ;
|   return 0;
| }
configure:6557: result: no
configure:6655: checking for sigaction
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for strerror
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for strsignal
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for pread
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for sys_siglist
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for _sys_siglist
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for getdents
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
/tmp/ccI4ybUo.o: In function `main':conftest.c:(.text+0x22): undefined reference to `getdents'
/tmp/ccI4ybUo.o:(.data+0x0): undefined reference to `getdents'
collect2: ld returned 1 exit status
configure:6718: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| /* end confdefs.h.  */
| /* Define getdents to an innocuous variant, in case <limits.h> declares getdents.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define getdents innocuous_getdents
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char getdents (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef getdents
| 
| /* Override any gcc2 internal prototype to avoid an error.  */
| #ifdef __cplusplus
| extern "C"
| {
| #endif
| /* We use char because int might match the return type of a gcc2
|    builtin and then its argument prototype would still apply.  */
| char getdents ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined (__stub_getdents) || defined (__stub___getdents)
| choke me
| #else
| char (*f) () = getdents;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != getdents;
|   ;
|   return 0;
| }
configure:6743: result: no
configure:6655: checking for mctl
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
/tmp/ccORY4qv.o: In function `main':conftest.c:(.text+0x22): undefined reference to `mctl'
/tmp/ccORY4qv.o:(.data+0x0): undefined reference to `mctl'
collect2: ld returned 1 exit status
configure:6718: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| /* end confdefs.h.  */
| /* Define mctl to an innocuous variant, in case <limits.h> declares mctl.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define mctl innocuous_mctl
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char mctl (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef mctl
| 
| /* Override any gcc2 internal prototype to avoid an error.  */
| #ifdef __cplusplus
| extern "C"
| {
| #endif
| /* We use char because int might match the return type of a gcc2
|    builtin and then its argument prototype would still apply.  */
| char mctl ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined (__stub_mctl) || defined (__stub___mctl)
| choke me
| #else
| char (*f) () = mctl;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != mctl;
|   ;
|   return 0;
| }
configure:6743: result: no
configure:6655: checking for prctl
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for sendmsg
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for inet_ntop
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6655: checking for if_indextoname
configure:6712: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
configure:6718: $? = 0
configure:6722: test -z 
			 || test ! -s conftest.err
configure:6725: $? = 0
configure:6728: test -s conftest
configure:6731: $? = 0
configure:6743: result: yes
configure:6794: checking sys/reg.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking sys/reg.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for sys/reg.h
configure:6917: result: yes
configure:6794: checking sys/filio.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:81:23: error: sys/filio.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/filio.h>
configure:6835: result: no
configure:6839: checking sys/filio.h presence
configure:6849: gcc -E  conftest.c
conftest.c:47:23: error: sys/filio.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| /* end confdefs.h.  */
| #include <sys/filio.h>
configure:6875: result: no
configure:6910: checking for sys/filio.h
configure:6917: result: no
configure:6794: checking sys/acl.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:81:21: error: sys/acl.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/acl.h>
configure:6835: result: no
configure:6839: checking sys/acl.h presence
configure:6849: gcc -E  conftest.c
conftest.c:47:21: error: sys/acl.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| /* end confdefs.h.  */
| #include <sys/acl.h>
configure:6875: result: no
configure:6910: checking for sys/acl.h
configure:6917: result: no
configure:6794: checking sys/asynch.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:81:24: error: sys/asynch.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/asynch.h>
configure:6835: result: no
configure:6839: checking sys/asynch.h presence
configure:6849: gcc -E  conftest.c
conftest.c:47:24: error: sys/asynch.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| /* end confdefs.h.  */
| #include <sys/asynch.h>
configure:6875: result: no
configure:6910: checking for sys/asynch.h
configure:6917: result: no
configure:6794: checking sys/door.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:81:22: error: sys/door.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/door.h>
configure:6835: result: no
configure:6839: checking sys/door.h presence
configure:6849: gcc -E  conftest.c
conftest.c:47:22: error: sys/door.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| /* end confdefs.h.  */
| #include <sys/door.h>
configure:6875: result: no
configure:6910: checking for sys/door.h
configure:6917: result: no
configure:6794: checking stropts.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking stropts.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for stropts.h
configure:6917: result: yes
configure:6794: checking sys/conf.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:82:22: error: sys/conf.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/conf.h>
configure:6835: result: no
configure:6839: checking sys/conf.h presence
configure:6849: gcc -E  conftest.c
conftest.c:48:22: error: sys/conf.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <sys/conf.h>
configure:6875: result: no
configure:6910: checking for sys/conf.h
configure:6917: result: no
configure:6794: checking sys/stream.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:82:24: error: sys/stream.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/stream.h>
configure:6835: result: no
configure:6839: checking sys/stream.h presence
configure:6849: gcc -E  conftest.c
conftest.c:48:24: error: sys/stream.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <sys/stream.h>
configure:6875: result: no
configure:6910: checking for sys/stream.h
configure:6917: result: no
configure:6794: checking sys/tihdr.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:82:23: error: sys/tihdr.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/tihdr.h>
configure:6835: result: no
configure:6839: checking sys/tihdr.h presence
configure:6849: gcc -E  conftest.c
conftest.c:48:23: error: sys/tihdr.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <sys/tihdr.h>
configure:6875: result: no
configure:6910: checking for sys/tihdr.h
configure:6917: result: no
configure:6794: checking sys/tiuser.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:82:24: error: sys/tiuser.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/tiuser.h>
configure:6835: result: no
configure:6839: checking sys/tiuser.h presence
configure:6849: gcc -E  conftest.c
conftest.c:48:24: error: sys/tiuser.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <sys/tiuser.h>
configure:6875: result: no
configure:6910: checking for sys/tiuser.h
configure:6917: result: no
configure:6794: checking sys/sysconfig.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:82:27: error: sys/sysconfig.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/sysconfig.h>
configure:6835: result: no
configure:6839: checking sys/sysconfig.h presence
configure:6849: gcc -E  conftest.c
conftest.c:48:27: error: sys/sysconfig.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <sys/sysconfig.h>
configure:6875: result: no
configure:6910: checking for sys/sysconfig.h
configure:6917: result: no
configure:6794: checking ioctls.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:82:20: error: ioctls.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <ioctls.h>
configure:6835: result: no
configure:6839: checking ioctls.h presence
configure:6849: gcc -E  conftest.c
conftest.c:48:20: error: ioctls.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| /* end confdefs.h.  */
| #include <ioctls.h>
configure:6875: result: no
configure:6910: checking for ioctls.h
configure:6917: result: no
configure:6794: checking sys/ioctl.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking sys/ioctl.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for sys/ioctl.h
configure:6917: result: yes
configure:6794: checking sys/ptrace.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking sys/ptrace.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for sys/ptrace.h
configure:6917: result: yes
configure:6794: checking termio.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking termio.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for termio.h
configure:6917: result: yes
configure:6794: checking linux/ptrace.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking linux/ptrace.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for linux/ptrace.h
configure:6917: result: yes
configure:6794: checking asm/reg.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:86:21: error: asm/reg.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <asm/reg.h>
configure:6835: result: no
configure:6839: checking asm/reg.h presence
configure:6849: gcc -E  conftest.c
conftest.c:52:21: error: asm/reg.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| /* end confdefs.h.  */
| #include <asm/reg.h>
configure:6875: result: no
configure:6910: checking for asm/reg.h
configure:6917: result: no
configure:6794: checking sys/uio.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking sys/uio.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for sys/uio.h
configure:6917: result: yes
configure:6794: checking sys/aio.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:87:21: error: sys/aio.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/aio.h>
configure:6835: result: no
configure:6839: checking sys/aio.h presence
configure:6849: gcc -E  conftest.c
conftest.c:53:21: error: sys/aio.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| /* end confdefs.h.  */
| #include <sys/aio.h>
configure:6875: result: no
configure:6910: checking for sys/aio.h
configure:6917: result: no
configure:6794: checking poll.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking poll.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for poll.h
configure:6917: result: yes
configure:6794: checking sys/poll.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking sys/poll.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for sys/poll.h
configure:6917: result: yes
configure:6794: checking sys/vfs.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking sys/vfs.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for sys/vfs.h
configure:6917: result: yes
configure:6794: checking asm/sysmips.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:90:25: error: asm/sysmips.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <asm/sysmips.h>
configure:6835: result: no
configure:6839: checking asm/sysmips.h presence
configure:6849: gcc -E  conftest.c
conftest.c:56:25: error: asm/sysmips.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| /* end confdefs.h.  */
| #include <asm/sysmips.h>
configure:6875: result: no
configure:6910: checking for asm/sysmips.h
configure:6917: result: no
configure:6794: checking linux/utsname.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking linux/utsname.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for linux/utsname.h
configure:6917: result: yes
configure:6794: checking sys/nscsys.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:91:24: error: sys/nscsys.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/nscsys.h>
configure:6835: result: no
configure:6839: checking sys/nscsys.h presence
configure:6849: gcc -E  conftest.c
conftest.c:57:24: error: sys/nscsys.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| /* end confdefs.h.  */
| #include <sys/nscsys.h>
configure:6875: result: no
configure:6910: checking for sys/nscsys.h
configure:6917: result: no
configure:6794: checking mqueue.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking mqueue.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for mqueue.h
configure:6917: result: yes
configure:6794: checking sys/epoll.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6812: $? = 0
configure:6816: test -z 
			 || test ! -s conftest.err
configure:6819: $? = 0
configure:6822: test -s conftest.o
configure:6825: $? = 0
configure:6835: result: yes
configure:6839: checking sys/epoll.h presence
configure:6849: gcc -E  conftest.c
configure:6855: $? = 0
configure:6875: result: yes
configure:6910: checking for sys/epoll.h
configure:6917: result: yes
configure:6794: checking libaio.h usability
configure:6806: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:93:20: error: libaio.h: No such file or directory
configure:6812: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <libaio.h>
configure:6835: result: no
configure:6839: checking libaio.h presence
configure:6849: gcc -E  conftest.c
conftest.c:59:20: error: libaio.h: No such file or directory
configure:6855: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| /* end confdefs.h.  */
| #include <libaio.h>
configure:6875: result: no
configure:6910: checking for libaio.h
configure:6917: result: no
configure:6937: checking for linux/icmp.h
configure:6952: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6958: $? = 0
configure:6962: test -z 
			 || test ! -s conftest.err
configure:6965: $? = 0
configure:6968: test -s conftest.o
configure:6971: $? = 0
configure:6982: result: yes
configure:6937: checking for linux/in6.h
configure:6952: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6958: $? = 0
configure:6962: test -z 
			 || test ! -s conftest.err
configure:6965: $? = 0
configure:6968: test -s conftest.o
configure:6971: $? = 0
configure:6982: result: yes
configure:6937: checking for linux/netlink.h
configure:6952: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6958: $? = 0
configure:6962: test -z 
			 || test ! -s conftest.err
configure:6965: $? = 0
configure:6968: test -s conftest.o
configure:6971: $? = 0
configure:6982: result: yes
configure:6937: checking for linux/if_packet.h
configure:6952: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:6958: $? = 0
configure:6962: test -z 
			 || test ! -s conftest.err
configure:6965: $? = 0
configure:6968: test -s conftest.o
configure:6971: $? = 0
configure:6982: result: yes
configure:6997: checking for asm/sigcontext.h
configure:7013: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:7019: $? = 0
configure:7023: test -z 
			 || test ! -s conftest.err
configure:7026: $? = 0
configure:7029: test -s conftest.o
configure:7032: $? = 0
configure:7043: result: yes
configure:7059: checking for netinet/tcp.h
configure:7075: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:7081: $? = 0
configure:7085: test -z 
			 || test ! -s conftest.err
configure:7088: $? = 0
configure:7091: test -s conftest.o
configure:7094: $? = 0
configure:7105: result: yes
configure:7059: checking for netinet/udp.h
configure:7075: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:7081: $? = 0
configure:7085: test -z 
			 || test ! -s conftest.err
configure:7088: $? = 0
configure:7091: test -s conftest.o
configure:7094: $? = 0
configure:7105: result: yes
configure:7117: checking for MP procfs
configure:7179: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
conftest.c: In function 'main':
conftest.c:78: error: storage size of 'pstatus' isn't known
conftest.c:82: warning: incompatible implicit declaration of built-in function 'exit'
conftest.c:90: error: 'PCSTOP' undeclared (first use in this function)
conftest.c:90: error: (Each undeclared identifier is reported only once
conftest.c:90: error: for each function it appears in.)
conftest.c:96: warning: incompatible implicit declaration of built-in function 'exit'
configure:7182: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| /* end confdefs.h.  */
| 
| #include <stdio.h>
| #include <signal.h>
| #include <sys/procfs.h>
| 
| main()
| {
| 	int pid;
| 	char proc[32];
| 	FILE *ctl;
| 	FILE *status;
| 	int cmd;
| 	struct pstatus pstatus;
| 
| 	if ((pid = fork()) == 0) {
| 		pause();
| 		exit(0);
| 	}
| 	sprintf(proc, "/proc/%d/ctl", pid);
| 	if ((ctl = fopen(proc, "w")) == NULL)
| 		goto fail;
| 	sprintf(proc, "/proc/%d/status", pid);
| 	if ((status = fopen (proc, "r")) == NULL)
| 		goto fail;
| 	cmd = PCSTOP;
| 	if (write (fileno (ctl), &cmd, sizeof cmd) < 0)
| 		goto fail;
| 	if (read (fileno (status), &pstatus, sizeof pstatus) < 0)
| 		goto fail;
| 	kill(pid, SIGKILL);
| 	exit(0);
| fail:
| 	kill(pid, SIGKILL);
| 	exit(1);
| }
| 
configure:7202: result: no
configure:7213: checking for pollable procfs
configure:7290: gcc -o conftest -I/android/device/system/kernel_headers/   conftest.c  >&5
conftest.c: In function 'main':
conftest.c:97: warning: incompatible implicit declaration of built-in function 'exit'
conftest.c:102: error: 'PIOCSTOP' undeclared (first use in this function)
conftest.c:102: error: (Each undeclared identifier is reported only once
conftest.c:102: error: for each function it appears in.)
conftest.c:111: warning: incompatible implicit declaration of built-in function 'exit'
configure:7293: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| /* end confdefs.h.  */
| 
| #include <stdio.h>
| #include <signal.h>
| #include <sys/procfs.h>
| #include <sys/stropts.h>
| #include <poll.h>
| 
| #ifdef HAVE_MP_PROCFS
| #define PIOCSTOP	PCSTOP
| #define POLLWANT	POLLWRNORM
| #define PROC		"/proc/%d/ctl"
| #define PROC_MODE	"w"
| int IOCTL (int fd, int cmd, int arg) {
| 	return write (fd, &cmd, sizeof cmd);
| }
| #else
| #define POLLWANT	POLLPRI
| #define	PROC		"/proc/%d"
| #define PROC_MODE	"r+"
| #define IOCTL		ioctl
| #endif
| 
| main()
| {
| 	int pid;
| 	char proc[32];
| 	FILE *pfp;
| 	struct pollfd pfd;
| 
| 	if ((pid = fork()) == 0) {
| 		pause();
| 		exit(0);
| 	}
| 	sprintf(proc, PROC, pid);
| 	if ((pfp = fopen(proc, PROC_MODE)) == NULL)
| 		goto fail;
| 	if (IOCTL(fileno(pfp), PIOCSTOP, NULL) < 0)
| 		goto fail;
| 	pfd.fd = fileno(pfp);
| 	pfd.events = POLLWANT;
| 	if (poll(&pfd, 1, 0) < 0)
| 		goto fail;
| 	if (!(pfd.revents & POLLWANT))
| 		goto fail;
| 	kill(pid, SIGKILL);
| 	exit(0);
| fail:
| 	kill(pid, SIGKILL);
| 	exit(1);
| }
| 
configure:7313: result: no
configure:7325: checking for struct msghdr.msg_control
configure:7349: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:7355: $? = 0
configure:7359: test -z 
			 || test ! -s conftest.err
configure:7362: $? = 0
configure:7365: test -s conftest.o
configure:7368: $? = 0
configure:7426: result: yes
configure:7437: checking for pr_syscall in struct prstatus
configure:7464: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:76: error: 'prstatus_t' has no member named 'pr_syscall'
configure:7470: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| #define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
| /* end confdefs.h.  */
| #include <sys/procfs.h>
| int
| main ()
| {
| #ifdef HAVE_MP_PROCFS
| pstatus_t s;
| s.pr_lwp.pr_syscall
| #else
| prstatus_t s;
| s.pr_syscall
| #endif
|   ;
|   return 0;
| }
configure:7495: result: no
configure:7507: checking for struct T_conn_res.QUEUE_ptr
configure:7532: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:67:24: error: sys/stream.h: No such file or directory
conftest.c:68:23: error: sys/tihdr.h: No such file or directory
conftest.c: In function 'main':
conftest.c:73: error: storage size of 'ac_aggr' isn't known
conftest.c:73: error: storage size of 'ac_aggr' isn't known
configure:7538: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| #define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
| /* end confdefs.h.  */
| #include <sys/stream.h>
| #include <sys/tihdr.h>
| 
| int
| main ()
| {
| static struct T_conn_res ac_aggr;
| if (ac_aggr.QUEUE_ptr)
| return 0;
|   ;
|   return 0;
| }
configure:7578: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:67:24: error: sys/stream.h: No such file or directory
conftest.c:68:23: error: sys/tihdr.h: No such file or directory
conftest.c: In function 'main':
conftest.c:73: error: storage size of 'ac_aggr' isn't known
conftest.c:73: error: storage size of 'ac_aggr' isn't known
configure:7584: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| #define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
| /* end confdefs.h.  */
| #include <sys/stream.h>
| #include <sys/tihdr.h>
| 
| int
| main ()
| {
| static struct T_conn_res ac_aggr;
| if (sizeof ac_aggr.QUEUE_ptr)
| return 0;
|   ;
|   return 0;
| }
configure:7610: result: no
configure:7620: checking for struct T_conn_res.ACCEPTOR_id
configure:7645: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:67:24: error: sys/stream.h: No such file or directory
conftest.c:68:23: error: sys/tihdr.h: No such file or directory
conftest.c: In function 'main':
conftest.c:73: error: storage size of 'ac_aggr' isn't known
conftest.c:73: error: storage size of 'ac_aggr' isn't known
configure:7651: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| #define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
| /* end confdefs.h.  */
| #include <sys/stream.h>
| #include <sys/tihdr.h>
| 
| int
| main ()
| {
| static struct T_conn_res ac_aggr;
| if (ac_aggr.ACCEPTOR_id)
| return 0;
|   ;
|   return 0;
| }
configure:7691: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c:67:24: error: sys/stream.h: No such file or directory
conftest.c:68:23: error: sys/tihdr.h: No such file or directory
conftest.c: In function 'main':
conftest.c:73: error: storage size of 'ac_aggr' isn't known
conftest.c:73: error: storage size of 'ac_aggr' isn't known
configure:7697: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| #define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
| /* end confdefs.h.  */
| #include <sys/stream.h>
| #include <sys/tihdr.h>
| 
| int
| main ()
| {
| static struct T_conn_res ac_aggr;
| if (sizeof ac_aggr.ACCEPTOR_id)
| return 0;
|   ;
|   return 0;
| }
configure:7723: result: no
configure:7735: checking for struct __old_kernel_stat
configure:7760: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:7766: $? = 0
configure:7770: test -z 
			 || test ! -s conftest.err
configure:7773: $? = 0
configure:7776: test -s conftest.o
configure:7779: $? = 0
configure:7790: result: yes
configure:7802: checking for struct pt_all_user_regs
configure:7827: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:75: error: invalid application of 'sizeof' to incomplete type 'struct pt_all_user_regs' 
configure:7833: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| #define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
| #define HAVE_STRUCT___OLD_KERNEL_STAT 1
| /* end confdefs.h.  */
| #include <sys/ptrace.h>
| 
| int
| main ()
| {
| if ((struct pt_all_user_regs *) 0)
|   return 0;
| if (sizeof (struct pt_all_user_regs))
|   return 0;
|   ;
|   return 0;
| }
configure:7857: result: no
configure:7867: checking for struct ia64_fpreg
configure:7892: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
conftest.c: In function 'main':
conftest.c:75: error: invalid application of 'sizeof' to incomplete type 'struct ia64_fpreg' 
configure:7898: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "strace"
| #define PACKAGE_TARNAME "strace"
| #define PACKAGE_VERSION "4.5.12"
| #define PACKAGE_STRING "strace 4.5.12"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "strace"
| #define VERSION "4.5.12"
| #define LINUX 1
| #define ARM 1
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_STAT64 1
| #define RETSIGTYPE void
| #define GETGROUPS_T gid_t
| #define HAVE_SIG_ATOMIC_T 1
| #define HAVE_SIGINFO_T 1
| #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
| #define HAVE_LONG_LONG 1
| #define HAVE_LITTLE_ENDIAN_LONG_LONG 1
| #define HAVE_SIGACTION 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSIGNAL 1
| #define HAVE_PREAD 1
| #define HAVE_SYS_SIGLIST 1
| #define HAVE__SYS_SIGLIST 1
| #define HAVE_PRCTL 1
| #define HAVE_SENDMSG 1
| #define HAVE_INET_NTOP 1
| #define HAVE_IF_INDEXTONAME 1
| #define HAVE_SYS_REG_H 1
| #define HAVE_STROPTS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_PTRACE_H 1
| #define HAVE_TERMIO_H 1
| #define HAVE_LINUX_PTRACE_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_LINUX_UTSNAME_H 1
| #define HAVE_MQUEUE_H 1
| #define HAVE_SYS_EPOLL_H 1
| #define HAVE_LINUX_ICMP_H 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_LINUX_NETLINK_H 1
| #define HAVE_LINUX_IF_PACKET_H 1
| #define HAVE_ASM_SIGCONTEXT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_NETINET_UDP_H 1
| #define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
| #define HAVE_STRUCT___OLD_KERNEL_STAT 1
| /* end confdefs.h.  */
| #include <sys/ptrace.h>
| 
| int
| main ()
| {
| if ((struct ia64_fpreg *) 0)
|   return 0;
| if (sizeof (struct ia64_fpreg))
|   return 0;
|   ;
|   return 0;
| }
configure:7922: result: no
configure:7934: checking for struct user_desc
configure:7959: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:7965: $? = 0
configure:7969: test -z 
			 || test ! -s conftest.err
configure:7972: $? = 0
configure:7975: test -s conftest.o
configure:7978: $? = 0
configure:7989: result: yes
configure:8001: checking whether sys_errlist is declared
configure:8025: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:8031: $? = 0
configure:8035: test -z 
			 || test ! -s conftest.err
configure:8038: $? = 0
configure:8041: test -s conftest.o
configure:8044: $? = 0
configure:8055: result: yes
configure:8073: checking whether sys_siglist is declared
configure:8098: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:8104: $? = 0
configure:8108: test -z 
			 || test ! -s conftest.err
configure:8111: $? = 0
configure:8114: test -s conftest.o
configure:8117: $? = 0
configure:8128: result: yes
configure:8144: checking whether _sys_siglist is declared
configure:8169: gcc -c -I/android/device/system/kernel_headers/  conftest.c >&5
configure:8175: $? = 0
configure:8179: test -z 
			 || test ! -s conftest.err
configure:8182: $? = 0
configure:8185: test -s conftest.o
configure:8188: $? = 0
configure:8199: result: yes
configure:8220: checking for perl
configure:8238: found /usr/bin/perl
configure:8250: result: /usr/bin/perl
configure:8418: creating ./config.status

## ---------------------- ##
## Running config.status. ##
## ---------------------- ##

This file was extended by strace config.status 4.5.12, which was
generated by GNU Autoconf 2.59.  Invocation command line was

  CONFIG_FILES    = 
  CONFIG_HEADERS  = 
  CONFIG_LINKS    = 
  CONFIG_COMMANDS = 
  $ ./config.status 

on skywriting.corp.google.com

config.status:716: creating Makefile
config.status:820: creating config.h
config.status:1226: executing depfiles commands

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=arm-unknown-linux-gnu
ac_cv_build_alias=arm-unknown-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_c_const=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value=-I/android/device/system/kernel_headers/
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_build_alias_set=set
ac_cv_env_build_alias_value=arm-unknown-linux-gnu
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_exeext=
ac_cv_func__sys_siglist=yes
ac_cv_func_getdents=no
ac_cv_func_if_indextoname=yes
ac_cv_func_inet_ntop=yes
ac_cv_func_mctl=no
ac_cv_func_prctl=yes
ac_cv_func_pread=yes
ac_cv_func_sendmsg=yes
ac_cv_func_sigaction=yes
ac_cv_func_strerror=yes
ac_cv_func_strsignal=yes
ac_cv_func_sys_siglist=yes
ac_cv_have_decl__sys_siglist=yes
ac_cv_have_decl_sys_errlist=yes
ac_cv_have_decl_sys_siglist=yes
ac_cv_have_little_endian_long_long=yes
ac_cv_have_long_long_off_t=no
ac_cv_have_long_long_rlim_t=no
ac_cv_header_asm_reg_h=no
ac_cv_header_asm_sigcontext_h=yes
ac_cv_header_asm_sysmips_h=no
ac_cv_header_dirent_dirent_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_ioctls_h=no
ac_cv_header_libaio_h=no
ac_cv_header_linux_icmp_h=yes
ac_cv_header_linux_if_packet_h=yes
ac_cv_header_linux_in6_h=yes
ac_cv_header_linux_netlink_h=yes
ac_cv_header_linux_ptrace_h=yes
ac_cv_header_linux_utsname_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_mqueue_h=yes
ac_cv_header_netinet_tcp_h=yes
ac_cv_header_netinet_udp_h=yes
ac_cv_header_poll_h=yes
ac_cv_header_stat_broken=no
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_stropts_h=yes
ac_cv_header_sys_acl_h=no
ac_cv_header_sys_aio_h=no
ac_cv_header_sys_asynch_h=no
ac_cv_header_sys_conf_h=no
ac_cv_header_sys_door_h=no
ac_cv_header_sys_epoll_h=yes
ac_cv_header_sys_filio_h=no
ac_cv_header_sys_ioctl_h=yes
ac_cv_header_sys_nscsys_h=no
ac_cv_header_sys_poll_h=yes
ac_cv_header_sys_ptrace_h=yes
ac_cv_header_sys_reg_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_stream_h=no
ac_cv_header_sys_sysconfig_h=no
ac_cv_header_sys_tihdr_h=no
ac_cv_header_sys_tiuser_h=no
ac_cv_header_sys_types_h=yes
ac_cv_header_sys_types_h_makedev=yes
ac_cv_header_sys_uio_h=yes
ac_cv_header_sys_vfs_h=yes
ac_cv_header_termio_h=yes
ac_cv_header_unistd_h=yes
ac_cv_host=arm-unknown-linux-gnu
ac_cv_host_alias=arm-unknown-linux-gnu
ac_cv_member_struct_T_conn_res_ACCEPTOR_id=no
ac_cv_member_struct_T_conn_res_QUEUE_ptr=no
ac_cv_member_struct_msghdr_msg_control=yes
ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
ac_cv_member_struct_stat_st_aclcnt=no
ac_cv_member_struct_stat_st_blksize=yes
ac_cv_member_struct_stat_st_blocks=yes
ac_cv_member_struct_stat_st_flags=no
ac_cv_member_struct_stat_st_fstype=no
ac_cv_member_struct_stat_st_gen=no
ac_cv_member_struct_stat_st_level=no
ac_cv_member_struct_stat_st_rdev=yes
ac_cv_mp_procfs=no
ac_cv_objext=o
ac_cv_path_PERL=/usr/bin/perl
ac_cv_path_install='/usr/bin/install -c'
ac_cv_pollable_procfs=no
ac_cv_prog_AWK=gawk
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_cc_g=yes
ac_cv_prog_cc_stdc=
ac_cv_prog_egrep='grep -E'
ac_cv_prog_gcc_traditional=no
ac_cv_prog_make_make_set=yes
ac_cv_search_opendir='none required'
ac_cv_struct_pr_syscall=no
ac_cv_type_getgroups=gid_t
ac_cv_type_long_long=yes
ac_cv_type_mode_t=yes
ac_cv_type_sig_atomic_t=yes
ac_cv_type_siginfo_t=yes
ac_cv_type_signal=void
ac_cv_type_stat64=yes
ac_cv_type_struct___old_kernel_stat=yes
ac_cv_type_struct_ia64_fpreg=no
ac_cv_type_struct_opthdr=no
ac_cv_type_struct_pt_all_user_regs=no
ac_cv_type_struct_t_opthdr=no
ac_cv_type_struct_user_desc=yes
ac_cv_type_uid_t=yes
am_cv_CC_dependencies_compiler_type=gcc3

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL='${SHELL} /android/sandbox/mkf/funpack/strace-4.5.12/missing --run aclocal-1.9'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='${SHELL} /android/sandbox/mkf/funpack/strace-4.5.12/missing --run tar'
AUTOCONF='${SHELL} /android/sandbox/mkf/funpack/strace-4.5.12/missing --run autoconf'
AUTOHEADER='${SHELL} /android/sandbox/mkf/funpack/strace-4.5.12/missing --run autoheader'
AUTOMAKE='${SHELL} /android/sandbox/mkf/funpack/strace-4.5.12/missing --run automake-1.9'
AWK='gawk'
CC='gcc'
CCDEPMODE='depmode=gcc3'
CFLAGS='-I/android/device/system/kernel_headers/'
CPP='gcc -E'
CPPFLAGS=''
CYGPATH_W='echo'
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='grep -E'
EXEEXT=''
FREEBSD_FALSE=''
FREEBSD_TRUE='#'
I386_FALSE=''
I386_TRUE='#'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s'
LDFLAGS=''
LIBOBJS=''
LIBS=''
LINUX_FALSE='#'
LINUX_TRUE=''
LTLIBOBJS=''
MAINT='#'
MAINTAINER_MODE_FALSE=''
MAINTAINER_MODE_TRUE='#'
MAKEINFO='${SHELL} /android/sandbox/mkf/funpack/strace-4.5.12/missing --run makeinfo'
OBJEXT='o'
PACKAGE='strace'
PACKAGE_BUGREPORT=''
PACKAGE_NAME='strace'
PACKAGE_STRING='strace 4.5.12'
PACKAGE_TARNAME='strace'
PACKAGE_VERSION='4.5.12'
PATH_SEPARATOR=':'
PERL='/usr/bin/perl'
SET_MAKE=''
SHELL='/bin/sh'
STRIP=''
SUNOS4_FALSE=''
SUNOS4_TRUE='#'
SVR4_FALSE=''
SVR4_TRUE='#'
VERSION='4.5.12'
WARNFLAGS='-Wall'
X86_64_FALSE=''
X86_64_TRUE='#'
ac_ct_CC='gcc'
ac_ct_STRIP=''
am__fastdepCC_FALSE='#'
am__fastdepCC_TRUE=''
am__include='include'
am__leading_dot='.'
am__quote=''
am__tar='${AMTAR} chof - "$$tardir"'
am__untar='${AMTAR} xf -'
arch='arm'
bindir='${exec_prefix}/bin'
build='arm-unknown-linux-gnu'
build_alias='arm-unknown-linux-gnu'
build_cpu='arm'
build_os='linux-gnu'
build_vendor='unknown'
datadir='${prefix}/share'
exec_prefix='${prefix}'
host='arm-unknown-linux-gnu'
host_alias=''
host_cpu='arm'
host_os='linux-gnu'
host_vendor='unknown'
includedir='/usr/include'
infodir='${prefix}/info'
install_sh='/android/sandbox/mkf/funpack/strace-4.5.12/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localstatedir='${prefix}/var'
mandir='${prefix}/man'
mkdir_p='mkdir -p --'
oldincludedir='/usr/include'
opsys='linux'
prefix='/data/'
program_transform_name='s,x,x,'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define ARM 1
#define GETGROUPS_T gid_t
#define HAVE_ASM_SIGCONTEXT_H 1
#define HAVE_DECL_SYS_ERRLIST 1
#define HAVE_DECL_SYS_SIGLIST 1
#define HAVE_DECL__SYS_SIGLIST 1
#define HAVE_DIRENT_H 1
#define HAVE_IF_INDEXTONAME 1
#define HAVE_INET_NTOP 1
#define HAVE_INTTYPES_H 1
#define HAVE_LINUX_ICMP_H 1
#define HAVE_LINUX_IF_PACKET_H 1
#define HAVE_LINUX_IN6_H 1
#define HAVE_LINUX_NETLINK_H 1
#define HAVE_LINUX_PTRACE_H 1
#define HAVE_LINUX_UTSNAME_H 1
#define HAVE_LITTLE_ENDIAN_LONG_LONG 1
#define HAVE_LONG_LONG 1
#define HAVE_MEMORY_H 1
#define HAVE_MQUEUE_H 1
#define HAVE_NETINET_TCP_H 1
#define HAVE_NETINET_UDP_H 1
#define HAVE_POLL_H 1
#define HAVE_PRCTL 1
#define HAVE_PREAD 1
#define HAVE_SENDMSG 1
#define HAVE_SIGACTION 1
#define HAVE_SIGINFO_T 1
#define HAVE_SIG_ATOMIC_T 1
#define HAVE_STAT64 1
#define HAVE_STDINT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRERROR 1
#define HAVE_STRINGS_H 1
#define HAVE_STRING_H 1
#define HAVE_STROPTS_H 1
#define HAVE_STRSIGNAL 1
#define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
#define HAVE_STRUCT_STAT_ST_BLOCKS 1
#define HAVE_STRUCT_STAT_ST_RDEV 1
#define HAVE_STRUCT_USER_DESC 1
#define HAVE_STRUCT___OLD_KERNEL_STAT 1
#define HAVE_SYS_EPOLL_H 1
#define HAVE_SYS_IOCTL_H 1
#define HAVE_SYS_POLL_H 1
#define HAVE_SYS_PTRACE_H 1
#define HAVE_SYS_REG_H 1
#define HAVE_SYS_SIGLIST 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_UIO_H 1
#define HAVE_SYS_VFS_H 1
#define HAVE_TERMIO_H 1
#define HAVE_UNISTD_H 1
#define HAVE__SYS_SIGLIST 1
#define LINUX 1
#define PACKAGE "strace"
#define PACKAGE_BUGREPORT ""
#define PACKAGE_NAME "strace"
#define PACKAGE_STRING "strace 4.5.12"
#define PACKAGE_TARNAME "strace"
#define PACKAGE_VERSION "4.5.12"
#define RETSIGTYPE void
#define STDC_HEADERS 1
#define VERSION "4.5.12"
#define _GNU_SOURCE 1

configure: exit 0
