Build of libsigsegv with clang_glibc toolchain

The build took 00h 01m 02s and was SUCCESSFUL.

The program in this build is written in the following languages, according to sloccount:

SLOCLanguage
10,567 sh
3,721 ansic
1,769 makefile
16,057 total

The process tree of the build process is here.

Log

To avoid scrolling, you may jump to the last line of the invocation of makepkg that was used to build this package.

Removed vanilla repositories from pacman.conf and added:
# [tuscan]
# Server = file:///var/cache/pacman/pkg/

CMD: pacman -Syy --noconfirm
# :: Synchronizing package databases...
# downloading tuscan.db...

Copied permanent toolchain into container-local sysroot
# /toolchain_root/sysroot --> /sysroot/sysroot
# /toolchain_root/lib --> /sysroot/lib
# /toolchain_root/sbin --> /sysroot/sbin
# /toolchain_root/lib64 --> /sysroot/lib64
# /toolchain_root/etc --> /sysroot/etc
# /toolchain_root/share --> /sysroot/share
# /toolchain_root/bin --> /sysroot/bin
# /toolchain_root/var --> /sysroot/var
# /toolchain_root/usr --> /sysroot/usr
# /toolchain_root/glibc-build --> /sysroot/glibc-build
# /toolchain_root/x86_64-pc-linux-gnu --> /sysroot/x86_64-pc-linux-gnu
# /toolchain_root/include --> /sysroot/include
# /toolchain_root/libexec --> /sysroot/libexec

CMD: sudo -u tuscan PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin CC=clang CXX=clang++ red makepkg --noextract --syncdeps --skipinteg --skippgpcheck --skipchecksums --noconfirm --nocolor --log --noprogressbar --nocheck
# ==> Making package: libsigsegv 2.10-2 (Thu Apr 13 19:46:03 UTC 2017)
# ==> Checking runtime dependencies...
# ==> Checking buildtime dependencies...
# ==> WARNING: Using existing $srcdir/ tree
# ==> Starting build()...
# configure: WARNING: if you wanted to set the --build type, don't use --host.
# If a cross compiler is detected then cross compile mode will be used
#
# Build Tools:
# checking for a BSD-compatible install... /usr/bin/install -c
# checking whether build environment is sane... yes
# checking for x86_64-unknown-linux-strip... no
# checking for strip... strip
# checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
# checking for gawk... gawk
# checking whether make sets $(MAKE)... yes
# checking for x86_64-unknown-linux-gcc... clang
# checking whether the C compiler works... yes
# checking for C compiler default output file name... a.out
# checking for suffix of executables...
# checking whether we are cross compiling... no
# checking for suffix of object files... o
# checking whether we are using the GNU C compiler... yes
# checking whether clang accepts -g... yes
# checking for clang option to accept ISO C89... none needed
# checking for style of include used by make... GNU
# checking dependency style of clang... none
# checking how to run the C preprocessor... clang -E
# checking build system type... x86_64-unknown-linux-gnu
# checking host system type... x86_64-unknown-linux-gnu
# checking host platform... x86_64-unknown-linux4.10.6-gnu-glibc2.23
# checking how to print strings... printf
# checking for a sed that does not truncate output... /usr/bin/sed
# checking for grep that handles long lines and -e... /usr/bin/grep
# checking for egrep... /usr/bin/grep -E
# checking for fgrep... /usr/bin/grep -F
# checking for ld used by clang... /usr/bin/ld
# checking if the linker (/usr/bin/ld) is GNU ld... yes
# checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
# checking the name lister (/usr/bin/nm -B) interface... BSD nm
# checking whether ln -s works... yes
# checking the maximum length of command line arguments... 1572864
# checking whether the shell understands some XSI constructs... yes
# checking whether the shell understands "+="... yes
# checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
# checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
# checking for /usr/bin/ld option to reload object files... -r
# checking for x86_64-unknown-linux-objdump... no
# checking for objdump... objdump
# checking how to recognize dependent libraries... pass_all
# checking for x86_64-unknown-linux-dlltool... no
# checking for dlltool... no
# checking how to associate runtime and link libraries... printf %s\n
# checking for x86_64-unknown-linux-ar... no
# checking for ar... ar
# checking for archiver @FILE support... @
# checking for x86_64-unknown-linux-strip... strip
# checking for x86_64-unknown-linux-ranlib... no
# checking for ranlib... ranlib
# checking command to parse /usr/bin/nm -B output from clang object... ok
# checking for sysroot... no
# checking for x86_64-unknown-linux-mt... no
# checking for mt... no
# checking if : is a manifest tool... no
# checking for ANSI C header files... yes
# checking for sys/types.h... yes
# checking for sys/stat.h... yes
# checking for stdlib.h... yes
# checking for string.h... yes
# checking for memory.h... yes
# checking for strings.h... yes
# checking for inttypes.h... yes
# checking for stdint.h... yes
# checking for unistd.h... yes
# checking for dlfcn.h... yes
# checking for objdir... .libs
# checking if clang supports -fno-rtti -fno-exceptions... yes
# checking for clang option to produce PIC... -fPIC -DPIC
# checking if clang PIC flag -fPIC -DPIC works... yes
# checking if clang static flag -static works... yes
# checking if clang supports -c -o file.o... yes
# checking if clang supports -c -o file.o... (cached) yes
# checking whether the clang linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
# checking whether -lc should be explicitly linked in... no
# checking dynamic linker characteristics... GNU/Linux ld.so
# checking how to hardcode library paths into programs... immediate
# checking whether stripping libraries is possible... yes
# checking if libtool supports shared libraries... yes
# checking whether to build shared libraries... yes
# checking whether to build static libraries... yes
#
# Optional Platform Environment:
# checking sys/signal.h usability... yes
# checking sys/signal.h presence... yes
# checking for sys/signal.h... yes
# checking for unistd.h... (cached) yes
# checking for getpagesize... yes
# checking for sysconf(_SC_PAGESIZE)... yes
# checking for PAGESIZE in limits.h... no
# checking for mmap with MAP_ANON... yes
# checking for mmap with MAP_ANONYMOUS... yes
# checking for mmap of /dev/zero... yes
# checking whether a fault handler according to POSIX works... yes
# checking whether a fault handler according to Linux/i386 works... no
# checking whether a fault handler according to old Linux/i386 works... no
# checking whether a fault handler according to Linux/m68k works... no
# checking whether a fault handler according to Linux/PowerPC works... no
# checking whether a fault handler according to Linux/HPPA works... no
# checking whether a fault handler according to BSD works... no
# checking whether a fault handler according to IRIX works... no
# checking whether a fault handler according to HP-UX HPPA works... no
# checking whether a fault handler according to OSF/1 Alpha works... no
# checking whether a fault handler according to NetBSD Alpha works... no
# checking whether a fault handler according to AIX works... no
# checking whether a fault handler according to MacOSX/Darwin7 PowerPC works... no
# checking whether a fault handler according to MacOSX/Darwin5 PowerPC works... no
# checking whether a fault handler according to Hurd works... no
# checking ucontext.h usability... yes
# checking ucontext.h presence... yes
# checking for ucontext.h... yes
# checking for the fault handler specifics... fault-linux-i386.h
# checking if the system supports catching SIGSEGV... yes
# checking for stack direction... grows down
# checking for PIOCMAP in sys/procfs.h... no
# checking for mquery... no
# checking for mincore... yes
# checking for getrlimit... yes
# checking for setrlimit... yes
# checking for sigaltstack... yes
# checking for stack_t... yes
# checking for working sigaltstack... yes
# checking for correct stack_t interpretation... yes
# checking whether a signal handler can be left through longjmp... yes
# checking whether a signal handler can be left through longjmp and sigaltstack... yes
# checking whether a signal handler can be left through longjmp and setcontext... yes
# checking whether a signal handler can be left through siglongjmp... yes
# checking whether a signal handler can be left through siglongjmp and sigaltstack... yes
# checking whether a signal handler can be left through siglongjmp and setcontext... yes
# checking if the system supports catching stack overflow... yes
# checking for uintptr_t... yes
#
# Build Parameters:
# checking whether to activate relocatable installation... no
#
# Output Substitution:
# configure: creating ./config.status
# config.status: creating Makefile
# config.status: creating src/Makefile
# config.status: creating src/sigsegv.h
# config.status: creating tests/Makefile
# config.status: creating config.h
# config.status: executing depfiles commands
# config.status: executing libtool commands
#
# Now please type 'make' to compile. Good luck.
#
# make TARGETSTACK=" all" all-recursive
# make[1]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10'
# Making all in src
# make[2]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10/src'
# /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o handler.lo handler.c
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c handler.c -fPIC -DPIC -o .libs/handler.o
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c handler.c -o handler.o >/dev/null 2>&1
# /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o stackvma.lo stackvma.c
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c stackvma.c -fPIC -DPIC -o .libs/stackvma.o
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c stackvma.c -o stackvma.o >/dev/null 2>&1
# /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o leave.lo leave.c
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c leave.c -fPIC -DPIC -o .libs/leave.o
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c leave.c -o leave.o >/dev/null 2>&1
# /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o dispatcher.lo dispatcher.c
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c dispatcher.c -fPIC -DPIC -o .libs/dispatcher.o
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c dispatcher.c -o dispatcher.o >/dev/null 2>&1
# /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o version.lo version.c
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c version.c -fPIC -DPIC -o .libs/version.o
# libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I. -I. -c version.c -o version.o >/dev/null 2>&1
# /bin/sh ../libtool --tag=CC --mode=link clang -rpath /usr/lib -version-info 2:3:0 -lc -no-undefined -o libsigsegv.la -rpath /usr/lib handler.lo stackvma.lo leave.lo dispatcher.lo version.lo
# libtool: link: clang -shared -fPIC -DPIC .libs/handler.o .libs/stackvma.o .libs/leave.o .libs/dispatcher.o .libs/version.o -lc -Wl,-soname -Wl,libsigsegv.so.2 -o .libs/libsigsegv.so.2.0.3
# libtool: link: (cd ".libs" && rm -f "libsigsegv.so.2" && ln -s "libsigsegv.so.2.0.3" "libsigsegv.so.2")
# libtool: link: (cd ".libs" && rm -f "libsigsegv.so" && ln -s "libsigsegv.so.2.0.3" "libsigsegv.so")
# libtool: link: ar cru .libs/libsigsegv.a handler.o stackvma.o leave.o dispatcher.o version.o
# ar: `u' modifier ignored since `D' is the default (see `U')
# libtool: link: ranlib .libs/libsigsegv.a
# libtool: link: ( cd ".libs" && rm -f "libsigsegv.la" && ln -s "../libsigsegv.la" "libsigsegv.la" )
# make[2]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10/src'
# Making all in tests
# make[2]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10/tests'
# clang -DHAVE_CONFIG_H -I. -I.. -I../src -c sigsegv1.c
# /bin/sh ../libtool --tag=CC --mode=link clang -o sigsegv1 sigsegv1.o ../src/libsigsegv.la
# libtool: link: clang -o .libs/sigsegv1 sigsegv1.o ../src/.libs/libsigsegv.so -lc
# clang -DHAVE_CONFIG_H -I. -I.. -I../src -c sigsegv2.c
# /bin/sh ../libtool --tag=CC --mode=link clang -o sigsegv2 sigsegv2.o ../src/libsigsegv.la
# libtool: link: clang -o .libs/sigsegv2 sigsegv2.o ../src/.libs/libsigsegv.so -lc
# clang -DHAVE_CONFIG_H -I. -I.. -I../src -c sigsegv3.c
# /bin/sh ../libtool --tag=CC --mode=link clang -o sigsegv3 sigsegv3.o ../src/libsigsegv.la
# libtool: link: clang -o .libs/sigsegv3 sigsegv3.o ../src/.libs/libsigsegv.so -lc
# clang -DHAVE_CONFIG_H -I. -I.. -I../src -c stackoverflow1.c
# /bin/sh ../libtool --tag=CC --mode=link clang -o stackoverflow1 stackoverflow1.o ../src/libsigsegv.la
# libtool: link: clang -o .libs/stackoverflow1 stackoverflow1.o ../src/.libs/libsigsegv.so -lc
# clang -DHAVE_CONFIG_H -I. -I.. -I../src -c stackoverflow2.c
# /bin/sh ../libtool --tag=CC --mode=link clang -o stackoverflow2 stackoverflow2.o ../src/libsigsegv.la
# libtool: link: clang -o .libs/stackoverflow2 stackoverflow2.o ../src/.libs/libsigsegv.so -lc
# make[2]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10/tests'
# make[2]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10'
#
# Now please type 'make check' to run a quick test suite. Hope it works.
#
# make[2]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10'
# make[1]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10'
# ==> Entering fakeroot environment...
# ==> Starting package()...
# Making install in src
# make[1]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10/src'
# make[2]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10/src'
# test -z "/usr/lib" || /usr/bin/mkdir -p "/tmp/libsigsegv/pkg/libsigsegv/usr/lib"
# /bin/sh ../libtool --mode=install /usr/bin/install -c libsigsegv.la '/tmp/libsigsegv/pkg/libsigsegv/usr/lib'
# libtool: install: /usr/bin/install -c .libs/libsigsegv.so.2.0.3 /tmp/libsigsegv/pkg/libsigsegv/usr/lib/libsigsegv.so.2.0.3
# libtool: install: (cd /tmp/libsigsegv/pkg/libsigsegv/usr/lib && { ln -s -f libsigsegv.so.2.0.3 libsigsegv.so.2 || { rm -f libsigsegv.so.2 && ln -s libsigsegv.so.2.0.3 libsigsegv.so.2; }; })
# libtool: install: (cd /tmp/libsigsegv/pkg/libsigsegv/usr/lib && { ln -s -f libsigsegv.so.2.0.3 libsigsegv.so || { rm -f libsigsegv.so && ln -s libsigsegv.so.2.0.3 libsigsegv.so; }; })
# libtool: install: /usr/bin/install -c .libs/libsigsegv.lai /tmp/libsigsegv/pkg/libsigsegv/usr/lib/libsigsegv.la
# libtool: install: /usr/bin/install -c .libs/libsigsegv.a /tmp/libsigsegv/pkg/libsigsegv/usr/lib/libsigsegv.a
# libtool: install: chmod 644 /tmp/libsigsegv/pkg/libsigsegv/usr/lib/libsigsegv.a
# libtool: install: ranlib /tmp/libsigsegv/pkg/libsigsegv/usr/lib/libsigsegv.a
# libtool: install: warning: remember to run `libtool --finish /usr/lib'
# /bin/sh /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/install-sh -d /tmp/libsigsegv/pkg/libsigsegv/usr/include
# /usr/bin/install -c -m 644 sigsegv.h /tmp/libsigsegv/pkg/libsigsegv/usr/include/sigsegv.h
# make[2]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10/src'
# make[1]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10/src'
# Making install in tests
# make[1]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10/tests'
# make[2]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10/tests'
# make[2]: Nothing to be done for 'install-exec-am'.
# make[2]: Nothing to be done for 'install-data-am'.
# make[2]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10/tests'
# make[1]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10/tests'
# make[1]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10'
# make[2]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10'
# make[2]: Nothing to be done for 'install-exec-am'.
# make TARGETSTACK="install-recursive install-am install-data-am" install-data-hook
# make[3]: Entering directory '/tmp/libsigsegv/src/libsigsegv-2.10'
#
# Now use the package; you can remove it later via 'make uninstall'.
#
# make[3]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10'
# make[2]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10'
# make[1]: Leaving directory '/tmp/libsigsegv/src/libsigsegv-2.10'
# ==> Tidying install...
# -> Removing doc files...
# -> Purging unwanted files...
# ==> Checking for packaging issue...
# ==> Creating package "libsigsegv"...
# -> Generating .PKGINFO file...
# -> Generating .BUILDINFO file...
# error: invalid option '--noprogressbar'
# -> Generating .MTREE file...
# -> Compressing package...
# ==> Leaving fakeroot environment.
# ==> Finished making: libsigsegv 2.10-2 (Thu Apr 13 19:46:36 UTC 2017)

CMD: pacman --query --file libsigsegv-2.10-2-x86_64.pkg.tar.xz
# libsigsegv 2.10-2

Creating hybrid package for 'libsigsegv'

Trying to find vanilla package 'libsigsegv'...

CMD: pacman --query --file /mirror/libsigsegv-2.10-2.pkg.tar.xz
# libsigsegv 2.10-2

Package file has the following structure:
# /.PKGINFO
# /.MTREE
# /usr/lib/libsigsegv.so
# /usr/lib/libsigsegv.so.2.0.3
# /usr/lib/libsigsegv.so.2
# /usr/include/sigsegv.h
# /sysroot/usr/lib/libsigsegv.so.2.0.3
# /sysroot/usr/lib/libsigsegv.so.2
# /sysroot/usr/lib/libsigsegv.so
# /sysroot/usr/lib/libsigsegv.la
# /sysroot/usr/lib/libsigsegv.a
# /sysroot/usr/include/sigsegv.h

Generating .MTREE

CMD: bsdtar -czf .MTREE --format=mtree --options=!all,use-set,type,uid,mode,time,size,md5,sha256,link .PKGINFO usr sysroot

Tar-ing up files

CMD: bsdtar -cf - .PKGINFO usr sysroot .MTREE

CMD: xz -c -z

Successfully ran bsdtar -cf - .PKGINFO usr sysroot .MTREE | xz -c -z

CMD: bsdtar -tqf libsigsegv.pkg.tar.xz .PKGINFO
# .PKGINFO

Created package at path /var/cache/pacman/pkg/libsigsegv.pkg.tar.xz

Attempting to access local repository, attempt 1

CMD: repo-add /var/cache/pacman/pkg/tuscan.db.tar /var/cache/pacman/pkg/libsigsegv.pkg.tar.xz
# ==> Extracting database to a temporary location...
# ==> Extracting database to a temporary location...
# ==> Adding package '/var/cache/pacman/pkg/libsigsegv.pkg.tar.xz'
# -> Computing checksums...
# -> Creating 'desc' db entry...
# -> Creating 'files' db entry...
# ==> Creating updated database file '/var/cache/pacman/pkg/tuscan.db.tar'

Printing config logfiles

CMD: config logfiles '/tmp/libsigsegv/src/libsigsegv-2.10/config.log'
# This file contains any messages produced by compilers while
# running configure, to aid debugging if configure makes a mistake.
#
# It was created by configure, which was
# generated by GNU Autoconf 2.68. Invocation command line was
#
# $ ./configure --host=x86_64-unknown-linux --prefix=/usr --enable-shared
#
# ## --------- ##
# ## Platform. ##
# ## --------- ##
#
# hostname = 0713cef7d819
# uname -m = x86_64
# uname -r = 4.10.6-1-ARCH
# uname -s = Linux
# uname -v = #1 SMP PREEMPT Mon Mar 27 08:28:22 CEST 2017
#
# /usr/bin/uname -p = unknown
# /bin/uname -X = unknown
#
# /bin/arch = unknown
# /usr/bin/arch -k = unknown
# /usr/convex/getsysinfo = unknown
# /usr/bin/hostinfo = unknown
# /bin/machine = unknown
# /usr/bin/oslevel = unknown
# /bin/universe = unknown
#
# PATH: /usr/bin
# PATH: /usr/local/sbin
# PATH: /usr/local/bin
# PATH: /usr/sbin
# PATH: /usr/bin
# PATH: /sbin
# PATH: /bin
#
#
# ## ----------- ##
# ## Core tests. ##
# ## ----------- ##
#
# configure:2335: checking for a BSD-compatible install
# configure:2403: result: /usr/bin/install -c
# configure:2414: checking whether build environment is sane
# configure:2464: result: yes
# configure:2513: checking for x86_64-unknown-linux-strip
# configure:2543: result: no
# configure:2553: checking for strip
# configure:2569: found /usr/bin/strip
# configure:2580: result: strip
# configure:2605: checking for a thread-safe mkdir -p
# configure:2644: result: /usr/bin/mkdir -p
# configure:2657: checking for gawk
# configure:2673: found /usr/bin/gawk
# configure:2684: result: gawk
# configure:2695: checking whether make sets $(MAKE)
# configure:2717: result: yes
# configure:2810: checking for x86_64-unknown-linux-gcc
# configure:2837: result: clang
# configure:3106: checking for C compiler version
# configure:3115: clang --version >&5
# clang version 3.8.0 (tags/RELEASE_380/final)
# Target: x86_64-unknown-linux-gnu
# Thread model: posix
# InstalledDir: /usr/bin
# configure:3126: $? = 0
# configure:3115: clang -v >&5
# clang version 3.8.0 (tags/RELEASE_380/final)
# Target: x86_64-unknown-linux-gnu
# Thread model: posix
# InstalledDir: /usr/bin
# Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/6.1.1
# Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.1.1
# Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1
# Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/6.1.1
# Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.1.1
# Candidate multilib: .;@m64
# ... rest of stderr output deleted ...
# configure:3126: $? = 0
# configure:3115: clang -V >&5
# clang-3.8: error: argument to '-V' is missing (expected 1 value)
# clang-3.8: error: no input files
# configure:3126: $? = 1
# configure:3115: clang -qversion >&5
# clang-3.8: error: unknown argument: '-qversion'
# clang-3.8: error: no input files
# configure:3126: $? = 1
# configure:3146: checking whether the C compiler works
# configure:3168: clang conftest.c >&5
# configure:3172: $? = 0
# configure:3220: result: yes
# configure:3223: checking for C compiler default output file name
# configure:3225: result: a.out
# configure:3231: checking for suffix of executables
# configure:3238: clang -o conftest conftest.c >&5
# configure:3242: $? = 0
# configure:3264: result:
# configure:3286: checking whether we are cross compiling
# configure:3294: clang -o conftest conftest.c >&5
# configure:3298: $? = 0
# configure:3305: ./conftest
# configure:3309: $? = 0
# configure:3324: result: no
# configure:3329: checking for suffix of object files
# configure:3351: clang -c conftest.c >&5
# configure:3355: $? = 0
# configure:3376: result: o
# configure:3380: checking whether we are using the GNU C compiler
# configure:3399: clang -c conftest.c >&5
# configure:3399: $? = 0
# configure:3408: result: yes
# configure:3417: checking whether clang accepts -g
# configure:3437: clang -c -g conftest.c >&5
# configure:3437: $? = 0
# configure:3478: result: yes
# configure:3495: checking for clang option to accept ISO C89
# configure:3559: clang -c conftest.c >&5
# configure:3559: $? = 0
# configure:3572: result: none needed
# configure:3603: checking for style of include used by make
# configure:3631: result: GNU
# configure:3656: checking dependency style of clang
# configure:3766: result: none
# configure:3786: checking how to run the C preprocessor
# configure:3817: clang -E conftest.c
# configure:3817: $? = 0
# configure:3831: clang -E conftest.c
# conftest.c:11:10: fatal error: 'ac_nonexistent.h' file not found
# #include
# ^
# 1 error generated.
# configure:3831: $? = 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | /* end confdefs.h. */
# | #include
# configure:3856: result: clang -E
# configure:3876: clang -E conftest.c
# configure:3876: $? = 0
# configure:3890: clang -E conftest.c
# conftest.c:11:10: fatal error: 'ac_nonexistent.h' file not found
# #include
# ^
# 1 error generated.
# configure:3890: $? = 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | /* end confdefs.h. */
# | #include
# configure:3923: checking build system type
# configure:3937: result: x86_64-unknown-linux-gnu
# configure:3957: checking host system type
# configure:3970: result: x86_64-unknown-linux-gnu
# configure:3993: checking host platform
# configure:4012: result: x86_64-unknown-linux4.10.6-gnu-glibc2.23
# configure:4067: checking how to print strings
# configure:4094: result: printf
# configure:4115: checking for a sed that does not truncate output
# configure:4179: result: /usr/bin/sed
# configure:4197: checking for grep that handles long lines and -e
# configure:4255: result: /usr/bin/grep
# configure:4260: checking for egrep
# configure:4322: result: /usr/bin/grep -E
# configure:4327: checking for fgrep
# configure:4389: result: /usr/bin/grep -F
# configure:4424: checking for ld used by clang
# configure:4491: result: /usr/bin/ld
# configure:4498: checking if the linker (/usr/bin/ld) is GNU ld
# configure:4513: result: yes
# configure:4525: checking for BSD- or MS-compatible name lister (nm)
# configure:4574: result: /usr/bin/nm -B
# configure:4704: checking the name lister (/usr/bin/nm -B) interface
# configure:4711: clang -c conftest.c >&5
# configure:4714: /usr/bin/nm -B "conftest.o"
# configure:4717: output
# 0000000000000000 B some_variable
# configure:4724: result: BSD nm
# configure:4727: checking whether ln -s works
# configure:4731: result: yes
# configure:4739: checking the maximum length of command line arguments
# configure:4864: result: 1572864
# configure:4881: checking whether the shell understands some XSI constructs
# configure:4891: result: yes
# configure:4895: checking whether the shell understands "+="
# configure:4901: result: yes
# configure:4936: checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format
# configure:4976: result: func_convert_file_noop
# configure:4983: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format
# configure:5003: result: func_convert_file_noop
# configure:5010: checking for /usr/bin/ld option to reload object files
# configure:5017: result: -r
# configure:5051: checking for x86_64-unknown-linux-objdump
# configure:5081: result: no
# configure:5091: checking for objdump
# configure:5107: found /usr/bin/objdump
# configure:5118: result: objdump
# configure:5150: checking how to recognize dependent libraries
# configure:5352: result: pass_all
# configure:5397: checking for x86_64-unknown-linux-dlltool
# configure:5427: result: no
# configure:5437: checking for dlltool
# configure:5467: result: no
# configure:5497: checking how to associate runtime and link libraries
# configure:5524: result: printf %s\n
# configure:5541: checking for x86_64-unknown-linux-ar
# configure:5571: result: no
# configure:5585: checking for ar
# configure:5601: found /usr/bin/ar
# configure:5612: result: ar
# configure:5649: checking for archiver @FILE support
# configure:5666: clang -c conftest.c >&5
# configure:5666: $? = 0
# configure:5669: ar cru libconftest.a @conftest.lst >&5
# ar: `u' modifier ignored since `D' is the default (see `U')
# configure:5672: $? = 0
# configure:5677: ar cru libconftest.a @conftest.lst >&5
# ar: `u' modifier ignored since `D' is the default (see `U')
# ar: conftest.o: No such file or directory
# configure:5680: $? = 1
# configure:5692: result: @
# configure:5710: checking for x86_64-unknown-linux-strip
# configure:5737: result: strip
# configure:5809: checking for x86_64-unknown-linux-ranlib
# configure:5839: result: no
# configure:5849: checking for ranlib
# configure:5865: found /usr/bin/ranlib
# configure:5876: result: ranlib
# configure:5978: checking command to parse /usr/bin/nm -B output from clang object
# configure:6097: clang -c conftest.c >&5
# configure:6100: $? = 0
# configure:6104: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
# configure:6107: $? = 0
# configure:6173: clang -o conftest conftest.c conftstm.o >&5
# configure:6176: $? = 0
# configure:6214: result: ok
# configure:6251: checking for sysroot
# configure:6281: result: no
# configure:6358: clang -c conftest.c >&5
# configure:6361: $? = 0
# configure:6484: checking for x86_64-unknown-linux-mt
# configure:6514: result: no
# configure:6524: checking for mt
# configure:6554: result: no
# configure:6574: checking if : is a manifest tool
# configure:6580: : '-?'
# configure:6588: result: no
# configure:7216: checking for ANSI C header files
# configure:7236: clang -c conftest.c >&5
# configure:7236: $? = 0
# configure:7309: clang -o conftest conftest.c >&5
# configure:7309: $? = 0
# configure:7309: ./conftest
# configure:7309: $? = 0
# configure:7320: result: yes
# configure:7333: checking for sys/types.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for sys/stat.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for stdlib.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for string.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for memory.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for strings.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for inttypes.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for stdint.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for unistd.h
# configure:7333: clang -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7347: checking for dlfcn.h
# configure:7347: clang -c conftest.c >&5
# configure:7347: $? = 0
# configure:7347: result: yes
# configure:7533: checking for objdir
# configure:7548: result: .libs
# configure:7819: checking if clang supports -fno-rtti -fno-exceptions
# configure:7837: clang -c -fno-rtti -fno-exceptions conftest.c >&5
# configure:7841: $? = 0
# configure:7854: result: yes
# configure:8164: checking for clang option to produce PIC
# configure:8171: result: -fPIC -DPIC
# configure:8179: checking if clang PIC flag -fPIC -DPIC works
# configure:8197: clang -c -fPIC -DPIC -DPIC conftest.c >&5
# configure:8201: $? = 0
# configure:8214: result: yes
# configure:8243: checking if clang static flag -static works
# configure:8271: result: yes
# configure:8286: checking if clang supports -c -o file.o
# configure:8307: clang -c -o out/conftest2.o conftest.c >&5
# configure:8311: $? = 0
# configure:8333: result: yes
# configure:8341: checking if clang supports -c -o file.o
# configure:8388: result: yes
# configure:8421: checking whether the clang linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
# configure:9579: result: yes
# configure:9616: checking whether -lc should be explicitly linked in
# configure:9624: clang -c conftest.c >&5
# configure:9627: $? = 0
# configure:9642: clang -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/bin/grep -lc \>/dev/null 2\>\&1
# configure:9645: $? = 0
# configure:9659: result: no
# configure:9824: checking dynamic linker characteristics
# configure:10338: clang -o conftest -Wl,-rpath -Wl,/foo conftest.c >&5
# configure:10338: $? = 0
# configure:10560: result: GNU/Linux ld.so
# configure:10667: checking how to hardcode library paths into programs
# configure:10692: result: immediate
# configure:11232: checking whether stripping libraries is possible
# configure:11237: result: yes
# configure:11272: checking if libtool supports shared libraries
# configure:11274: result: yes
# configure:11277: checking whether to build shared libraries
# configure:11298: result: yes
# configure:11301: checking whether to build static libraries
# configure:11305: result: yes
# configure:11348: checking sys/signal.h usability
# configure:11348: clang -c conftest.c >&5
# configure:11348: $? = 0
# configure:11348: result: yes
# configure:11348: checking sys/signal.h presence
# configure:11348: clang -E conftest.c
# configure:11348: $? = 0
# configure:11348: result: yes
# configure:11348: checking for sys/signal.h
# configure:11348: result: yes
# configure:11387: checking for unistd.h
# configure:11387: result: yes
# configure:11399: checking for getpagesize
# configure:11422: clang -o conftest conftest.c >&5
# configure:11422: $? = 0
# configure:11430: result: yes
# configure:11439: checking for sysconf(_SC_PAGESIZE)
# configure:11462: clang -o conftest conftest.c >&5
# configure:11462: $? = 0
# configure:11470: result: yes
# configure:11479: checking for PAGESIZE in limits.h
# configure:11497: clang -o conftest conftest.c >&5
# conftest.c:33:12: error: use of undeclared identifier 'PAGESIZE'
# int pgsz = PAGESIZE;
# ^
# 1 error generated.
# configure:11497: $? = 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | /* end confdefs.h. */
# |
# | #include
# | int
# | main ()
# | {
# | int pgsz = PAGESIZE;
# | ;
# | return 0;
# | }
# configure:11505: result: no
# configure:11523: checking for mmap with MAP_ANON
# configure:11573: clang -o conftest conftest.c >&5
# configure:11573: $? = 0
# configure:11573: ./conftest
# configure:11573: $? = 0
# configure:11584: result: yes
# configure:11593: checking for mmap with MAP_ANONYMOUS
# configure:11645: clang -o conftest conftest.c >&5
# configure:11645: $? = 0
# configure:11645: ./conftest
# configure:11645: $? = 0
# configure:11656: result: yes
# configure:11665: checking for mmap of /dev/zero
# configure:11728: clang -o conftest conftest.c >&5
# configure:11728: $? = 0
# configure:11728: ./conftest
# configure:11728: $? = 0
# configure:11739: result: yes
# configure:11763: checking whether a fault handler according to POSIX works
# configure:11898: clang -o conftest conftest.c >&5
# configure:11898: $? = 0
# configure:11898: ./conftest
# configure:11898: $? = 0
# configure:11909: result: yes
# configure:11917: checking whether a fault handler according to Linux/i386 works
# configure:12053: clang -o conftest conftest.c >&5
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:39:8: error: redefinition of '_fpx_sw_bytes'
# struct _fpx_sw_bytes {
# ^
# /usr/include/bits/sigcontext.h:29:8: note: previous definition is here
# struct _fpx_sw_bytes
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:84:8: error: redefinition of '_fpreg'
# struct _fpreg {
# ^
# /usr/include/bits/sigcontext.h:38:8: note: previous definition is here
# struct _fpreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:90:8: error: redefinition of '_fpxreg'
# struct _fpxreg {
# ^
# /usr/include/bits/sigcontext.h:44:8: note: previous definition is here
# struct _fpxreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:97:8: error: redefinition of '_xmmreg'
# struct _xmmreg {
# ^
# /usr/include/bits/sigcontext.h:51:8: note: previous definition is here
# struct _xmmreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:179:8: error: redefinition of '_ymmh_state'
# struct _ymmh_state {
# ^
# /usr/include/bits/sigcontext.h:182:8: note: previous definition is here
# struct _ymmh_state
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:191:8: error: redefinition of '_xstate'
# struct _xstate {
# ^
# /usr/include/bits/sigcontext.h:187:8: note: previous definition is here
# struct _xstate
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:316:8: error: redefinition of 'sigcontext'
# struct sigcontext {
# ^
# /usr/include/bits/sigcontext.h:137:8: note: previous definition is here
# struct sigcontext
# ^
# 7 errors generated.
# configure:12053: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# | #include
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, struct sigcontext sc)
# | {
# | void *fault_address = (void *) (sc.cr2);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:12064: result: no
# configure:12072: checking whether a fault handler according to old Linux/i386 works
# configure:12208: clang -o conftest conftest.c >&5
# configure:12208: $? = 0
# configure:12208: ./conftest
# configure:12208: $? = 3
# configure: program exited with status 3
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, unsigned int more)
# | {
# | void *fault_address = (void *) (((unsigned long *) &more) [21]);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:12219: result: no
# configure:12227: checking whether a fault handler according to Linux/m68k works
# configure:12365: clang -o conftest conftest.c >&5
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:39:8: error: redefinition of '_fpx_sw_bytes'
# struct _fpx_sw_bytes {
# ^
# /usr/include/bits/sigcontext.h:29:8: note: previous definition is here
# struct _fpx_sw_bytes
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:84:8: error: redefinition of '_fpreg'
# struct _fpreg {
# ^
# /usr/include/bits/sigcontext.h:38:8: note: previous definition is here
# struct _fpreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:90:8: error: redefinition of '_fpxreg'
# struct _fpxreg {
# ^
# /usr/include/bits/sigcontext.h:44:8: note: previous definition is here
# struct _fpxreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:97:8: error: redefinition of '_xmmreg'
# struct _xmmreg {
# ^
# /usr/include/bits/sigcontext.h:51:8: note: previous definition is here
# struct _xmmreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:179:8: error: redefinition of '_ymmh_state'
# struct _ymmh_state {
# ^
# /usr/include/bits/sigcontext.h:182:8: note: previous definition is here
# struct _ymmh_state
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:191:8: error: redefinition of '_xstate'
# struct _xstate {
# ^
# /usr/include/bits/sigcontext.h:187:8: note: previous definition is here
# struct _xstate
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:316:8: error: redefinition of 'sigcontext'
# struct sigcontext {
# ^
# /usr/include/bits/sigcontext.h:137:8: note: previous definition is here
# struct sigcontext
# ^
# In file included from conftest.c:39:
# ././src/fault-linux-m68k-old.c:22:22: error: no member named 'sc_formatvec' in 'struct sigcontext'
# int format = (scp->sc_formatvec >> 12) & 0xf;
# ~~~ ^
# 8 errors generated.
# configure:12365: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# | #include
# | #include "./src/fault-linux-m68k-old.c"
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) (get_fault_addr (scp));
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:12376: result: no
# configure:12384: checking whether a fault handler according to Linux/PowerPC works
# configure:12520: clang -o conftest conftest.c >&5
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:39:8: error: redefinition of '_fpx_sw_bytes'
# struct _fpx_sw_bytes {
# ^
# /usr/include/bits/sigcontext.h:29:8: note: previous definition is here
# struct _fpx_sw_bytes
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:84:8: error: redefinition of '_fpreg'
# struct _fpreg {
# ^
# /usr/include/bits/sigcontext.h:38:8: note: previous definition is here
# struct _fpreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:90:8: error: redefinition of '_fpxreg'
# struct _fpxreg {
# ^
# /usr/include/bits/sigcontext.h:44:8: note: previous definition is here
# struct _fpxreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:97:8: error: redefinition of '_xmmreg'
# struct _xmmreg {
# ^
# /usr/include/bits/sigcontext.h:51:8: note: previous definition is here
# struct _xmmreg
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:179:8: error: redefinition of '_ymmh_state'
# struct _ymmh_state {
# ^
# /usr/include/bits/sigcontext.h:182:8: note: previous definition is here
# struct _ymmh_state
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:191:8: error: redefinition of '_xstate'
# struct _xstate {
# ^
# /usr/include/bits/sigcontext.h:187:8: note: previous definition is here
# struct _xstate
# ^
# In file included from conftest.c:38:
# /usr/include/asm/sigcontext.h:316:8: error: redefinition of 'sigcontext'
# struct sigcontext {
# ^
# /usr/include/bits/sigcontext.h:137:8: note: previous definition is here
# struct sigcontext
# ^
# conftest.c:69:40: error: no member named 'regs' in 'struct sigcontext'
# void *fault_address = (void *) (scp->regs->dar);
# ~~~ ^
# 8 errors generated.
# configure:12520: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# | #include
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) (scp->regs->dar);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:12531: result: no
# configure:12539: checking whether a fault handler according to Linux/HPPA works
# configure:12674: clang -o conftest conftest.c >&5
# configure:12674: $? = 0
# configure:12674: ./conftest
# configure:12674: $? = 3
# configure: program exited with status 3
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, siginfo_t *sip, void *ucp)
# | {
# | void *fault_address = (void *) (sip->si_ptr);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# | action.sa_sigaction = &sigsegv_handler;
# | action.sa_flags = SA_SIGINFO;
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:12685: result: no
# configure:12693: checking whether a fault handler according to BSD works
# configure:12829: clang -o conftest conftest.c >&5
# configure:12829: $? = 0
# configure:12829: ./conftest
# configure:12829: $? = 3
# configure: program exited with status 3
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp, void *addr)
# | {
# | void *fault_address = (void *) (addr);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:12840: result: no
# configure:12848: checking whether a fault handler according to IRIX works
# configure:12984: clang -o conftest conftest.c >&5
# conftest.c:69:56: error: no member named 'sc_badvaddr' in 'struct sigcontext'
# void *fault_address = (void *) ((unsigned long) scp->sc_badvaddr);
# ~~~ ^
# 1 error generated.
# configure:12984: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) ((unsigned long) scp->sc_badvaddr);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:12995: result: no
# configure:13003: checking whether a fault handler according to HP-UX HPPA works
# configure:13149: clang -o conftest conftest.c >&5
# conftest.c:72:50: error: no member named 'sc_sl' in 'struct sigcontext'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ~~~ ^
# conftest.c:40:40: note: expanded from macro 'GET_CR21'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^~
# conftest.c:39:33: note: expanded from macro 'USE_64BIT_REGS'
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^~
# conftest.c:72:35: error: use of undeclared identifier 'SS_WIDEREGS'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^
# conftest.c:40:25: note: expanded from macro 'GET_CR21'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^
# conftest.c:39:48: note: expanded from macro 'USE_64BIT_REGS'
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^
# conftest.c:72:50: error: no member named 'sc_sl' in 'struct sigcontext'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ~~~ ^
# conftest.c:40:40: note: expanded from macro 'GET_CR21'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^~
# conftest.c:39:66: note: expanded from macro 'USE_64BIT_REGS'
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^~
# conftest.c:72:35: error: use of undeclared identifier 'SS_NARROWISINVALID'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^
# conftest.c:40:25: note: expanded from macro 'GET_CR21'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^
# conftest.c:39:81: note: expanded from macro 'USE_64BIT_REGS'
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^
# conftest.c:72:50: error: no member named 'sc_sl' in 'struct sigcontext'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ~~~ ^
# conftest.c:40:47: note: expanded from macro 'GET_CR21'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^~
# conftest.c:72:50: error: no member named 'sc_sl' in 'struct sigcontext'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ~~~ ^
# conftest.c:40:76: note: expanded from macro 'GET_CR21'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^~
# 6 errors generated.
# configure:13149: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# | #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# | #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# |
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:13160: result: no
# configure:13168: checking whether a fault handler according to OSF/1 Alpha works
# configure:13304: clang -o conftest conftest.c >&5
# conftest.c:69:40: error: no member named 'sc_traparg_a0' in 'struct sigcontext'
# void *fault_address = (void *) (scp->sc_traparg_a0);
# ~~~ ^
# 1 error generated.
# configure:13304: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) (scp->sc_traparg_a0);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:13315: result: no
# configure:13323: checking whether a fault handler according to NetBSD Alpha works
# configure:13459: clang -o conftest conftest.c >&5
# In file included from conftest.c:38:
# ././src/fault-netbsd-alpha.c:25:48: error: no member named 'sc_pc' in 'struct sigcontext'
# unsigned int instr = *((unsigned int *)(scp->sc_pc));
# ~~~ ^
# ././src/fault-netbsd-alpha.c:36:20: error: no member named 'sc_regs' in 'struct sigcontext'
# faultaddr = scp->sc_regs[(instr >> 16) & 0x1f];
# ~~~ ^
# 2 errors generated.
# configure:13459: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# | #include "./src/fault-netbsd-alpha.c"
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) (get_fault_addr (scp));
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:13470: result: no
# configure:13478: checking whether a fault handler according to AIX works
# configure:13614: clang -o conftest conftest.c >&5
# conftest.c:69:40: error: no member named 'sc_jmpbuf' in 'struct sigcontext'
# void *fault_address = (void *) (scp->sc_jmpbuf.jmp_context.o_vaddr);
# ~~~ ^
# 1 error generated.
# configure:13614: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) (scp->sc_jmpbuf.jmp_context.o_vaddr);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:13625: result: no
# configure:13633: checking whether a fault handler according to MacOSX/Darwin7 PowerPC works
# configure:13768: clang -o conftest conftest.c >&5
# In file included from conftest.c:38:
# ././src/fault-macosdarwin7-powerpc.c:43:22: error: member reference type 'mcontext_t' is not a pointer; did you mean to use '.'?
# &ucp->uc_mcontext->ss.r0; /* r0..r31 */
# ~~~~~~~~~~~~~~~~^~
# .
# ././src/fault-macosdarwin7-powerpc.c:43:24: error: no member named 'ss' in 'mcontext_t'
# &ucp->uc_mcontext->ss.r0; /* r0..r31 */
# ~~~~~~~~~~~~~~~~ ^
# ././src/fault-macosdarwin7-powerpc.c:130:10: warning: cast to 'void *' from smaller integer type 'unsigned int' [-Wint-to-void-pointer-cast]
# return (void *) addr;
# ^
# conftest.c:107:21: warning: incompatible pointer types assigning to 'void (*)(int, siginfo_t *, void *)' from 'void (*)(int, siginfo_t *, ucontext_t *)' (aka 'void (*)(int, siginfo_t *, struct ucontext *)') [-Wincompatible-pointer-types]
# action.sa_sigaction = &sigsegv_handler;
# ^ ~~~~~~~~~~~~~~~~
# 2 warnings and 2 errors generated.
# configure:13768: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# | #include "./src/fault-macosdarwin7-powerpc.c"
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, siginfo_t *sip, ucontext_t *ucp)
# | {
# | void *fault_address = (void *) (get_fault_addr (sip, ucp));
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# | action.sa_sigaction = &sigsegv_handler;
# | action.sa_flags = SA_SIGINFO;
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:13779: result: no
# configure:13788: checking whether a fault handler according to MacOSX/Darwin5 PowerPC works
# configure:13924: clang -o conftest conftest.c >&5
# In file included from conftest.c:38:
# ././src/fault-macosdarwin5-powerpc.c:36:48: error: no member named 'sc_ir' in 'struct sigcontext'
# unsigned int instr = *((unsigned int *) scp->sc_ir);
# ~~~ ^
# ././src/fault-macosdarwin5-powerpc.c:37:48: error: no member named 'sc_regs' in 'struct sigcontext'
# unsigned int *regs = &((unsigned int *) scp->sc_regs)[2];
# ~~~ ^
# ././src/fault-macosdarwin5-powerpc.c:123:10: warning: cast to 'void *' from smaller integer type 'unsigned int' [-Wint-to-void-pointer-cast]
# return (void *) addr;
# ^
# 1 warning and 2 errors generated.
# configure:13924: $? = 1
# configure: program exited with status 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# | #include "./src/fault-macosdarwin5-powerpc.c"
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) (get_fault_addr (scp));
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:13935: result: no
# configure:13944: checking whether a fault handler according to Hurd works
# configure:14080: clang -o conftest conftest.c >&5
# conftest.c:69:25: warning: cast to 'void *' from smaller integer type 'int' [-Wint-to-void-pointer-cast]
# void *fault_address = (void *) (code);
# ^
# 1 warning generated.
# configure:14080: $? = 0
# configure:14080: ./conftest
# configure:14080: $? = 3
# configure: program exited with status 3
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | /* end confdefs.h. */
# |
# |
# | #include
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# | #include
# | #include
# | #if HAVE_MMAP_DEVZERO
# | # include
# | # ifndef MAP_FILE
# | # define MAP_FILE 0
# | # endif
# | #endif
# | #ifndef PROT_NONE
# | # define PROT_NONE 0
# | #endif
# | #if HAVE_MMAP_ANON
# | # define zero_fd -1
# | # define map_flags MAP_ANON | MAP_PRIVATE
# | #elif HAVE_MMAP_ANONYMOUS
# | # define zero_fd -1
# | # define map_flags MAP_ANONYMOUS | MAP_PRIVATE
# | #elif HAVE_MMAP_DEVZERO
# | static int zero_fd;
# | # define map_flags MAP_FILE | MAP_PRIVATE
# | #endif
# | #if defined __linux__ && (defined __s390__ || defined __s390x__)
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS (0x1000UL - 1)
# | #else
# | # define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
# | #endif
# | unsigned long page;
# | int handler_called = 0;
# | void sigsegv_handler (int sig, int code, struct sigcontext *scp)
# | {
# | void *fault_address = (void *) (code);
# | handler_called++;
# | if (handler_called == 10)
# | exit (4);
# | if (fault_address
# | != (void*)((page + 0x678) & ~SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS))
# | exit (3);
# | if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
# | exit (2);
# | }
# | void crasher (unsigned long p)
# | {
# | *(int *) (p + 0x678) = 42;
# | }
# | int main ()
# | {
# | void *p;
# | struct sigaction action;
# | /* Preparations. */
# | #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO
# | zero_fd = open ("/dev/zero", O_RDONLY, 0644);
# | #endif
# | /* Setup some mmaped memory. */
# | #ifdef __hpux
# | /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete
# | freedom about the address range. */
# | p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #else
# | p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0);
# | #endif
# | if (p == (void *)(-1))
# | exit (2);
# | page = (unsigned long) p;
# | /* Make it read-only. */
# | if (mprotect ((void *) page, 0x10000, PROT_READ) < 0)
# | exit (2);
# | /* Install the SIGSEGV handler. */
# | sigemptyset(&action.sa_mask);
# |
# | action.sa_handler = (void (*) (int)) &sigsegv_handler;
# | action.sa_flags = 0;
# |
# | sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
# | sigaction (SIGBUS, &action, (struct sigaction *) NULL);
# | /* The first write access should invoke the handler and then complete. */
# | crasher (page);
# | /* The second write access should not invoke the handler. */
# | crasher (page);
# | /* Check that the handler was called only once. */
# | if (handler_called != 1)
# | exit (1);
# | /* Test passed! */
# | return 0;
# | }
# configure:14091: result: no
# configure:14207: checking ucontext.h usability
# configure:14207: clang -c conftest.c >&5
# configure:14207: $? = 0
# configure:14207: result: yes
# configure:14207: checking ucontext.h presence
# configure:14207: clang -E conftest.c
# configure:14207: $? = 0
# configure:14207: result: yes
# configure:14207: checking for ucontext.h
# configure:14207: result: yes
# configure:14445: checking for the fault handler specifics
# configure:14456: result: fault-linux-i386.h
# configure:14481: checking if the system supports catching SIGSEGV
# configure:14483: result: yes
# configure:14496: checking for stack direction
# configure:14593: result: grows down
# configure:14604: checking for PIOCMAP in sys/procfs.h
# configure:14621: clang -o conftest conftest.c >&5
# conftest.c:39:9: error: use of undeclared identifier 'PIOCNMAP'
# int x = PIOCNMAP + PIOCMAP; prmap_t y;
# ^
# conftest.c:39:20: error: use of undeclared identifier 'PIOCMAP'
# int x = PIOCNMAP + PIOCMAP; prmap_t y;
# ^
# conftest.c:39:29: error: use of undeclared identifier 'prmap_t'
# int x = PIOCNMAP + PIOCMAP; prmap_t y;
# ^
# 3 errors generated.
# configure:14621: $? = 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | #define HAVE_UCONTEXT_H 1
# | #define CFG_FAULT "fault-linux-i386.h"
# | #define CFG_MACHFAULT "fault-none.h"
# | #define STACK_DIRECTION -1
# | /* end confdefs.h. */
# | #include
# | int
# | main ()
# | {
# | int x = PIOCNMAP + PIOCMAP; prmap_t y;
# | ;
# | return 0;
# | }
# configure:14630: result: no
# configure:14635: checking for mquery
# configure:14635: clang -o conftest conftest.c >&5
# /tmp/conftest-d0e536.o: In function `main':
# conftest.c:(.text+0x12): undefined reference to `mquery'
# clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation)
# configure:14635: $? = 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | #define HAVE_UCONTEXT_H 1
# | #define CFG_FAULT "fault-linux-i386.h"
# | #define CFG_MACHFAULT "fault-none.h"
# | #define STACK_DIRECTION -1
# | /* end confdefs.h. */
# | /* Define mquery to an innocuous variant, in case declares mquery.
# | For example, HP-UX 11i declares gettimeofday. */
# | #define mquery innocuous_mquery
# |
# | /* System header to define __stub macros and hopefully few prototypes,
# | which can conflict with char mquery (); below.
# | Prefer to if __STDC__ is defined, since
# | exists even on freestanding compilers. */
# |
# | #ifdef __STDC__
# | # include
# | #else
# | # include
# | #endif
# |
# | #undef mquery
# |
# | /* Override any GCC internal prototype to avoid an error.
# | Use char because int might match the return type of a GCC
# | builtin and then its argument prototype would still apply. */
# | #ifdef __cplusplus
# | extern "C"
# | #endif
# | char mquery ();
# | /* 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_mquery || defined __stub___mquery
# | choke me
# | #endif
# |
# | int
# | main ()
# | {
# | return mquery ();
# | ;
# | return 0;
# | }
# configure:14635: result: no
# configure:14635: checking for mincore
# configure:14635: clang -o conftest conftest.c >&5
# configure:14635: $? = 0
# configure:14635: result: yes
# configure:14681: checking for getrlimit
# configure:14681: clang -o conftest conftest.c >&5
# configure:14681: $? = 0
# configure:14681: result: yes
# configure:14681: checking for setrlimit
# configure:14681: clang -o conftest conftest.c >&5
# configure:14681: $? = 0
# configure:14681: result: yes
# configure:14697: checking for sigaltstack
# configure:14697: clang -o conftest conftest.c >&5
# configure:14697: $? = 0
# configure:14697: result: yes
# configure:14708: checking for stack_t
# configure:14708: clang -c conftest.c >&5
# configure:14708: $? = 0
# configure:14708: clang -c conftest.c >&5
# conftest.c:51:22: error: expected expression
# if (sizeof ((stack_t)))
# ^
# 1 error generated.
# configure:14708: $? = 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | #define HAVE_UCONTEXT_H 1
# | #define CFG_FAULT "fault-linux-i386.h"
# | #define CFG_MACHFAULT "fault-none.h"
# | #define STACK_DIRECTION -1
# | #define HAVE_MINCORE 1
# | #define HAVE_STACKVMA 1
# | #define CFG_STACKVMA "stackvma-linux.c"
# | #define HAVE_GETRLIMIT 1
# | #define HAVE_SETRLIMIT 1
# | #define HAVE_SIGALTSTACK 1
# | /* end confdefs.h. */
# |
# | #include
# | #if HAVE_SYS_SIGNAL_H
# | # include
# | #endif
# |
# |
# | int
# | main ()
# | {
# | if (sizeof ((stack_t)))
# | return 0;
# | ;
# | return 0;
# | }
# configure:14708: result: yes
# configure:14726: checking for working sigaltstack
# configure:14850: clang -o conftest conftest.c >&5
# configure:14850: $? = 0
# configure:14850: ./conftest
# configure:14850: $? = 0
# configure:14866: result: yes
# configure:14873: checking for correct stack_t interpretation
# configure:14937: clang -o conftest conftest.c >&5
# configure:14937: $? = 0
# configure:14937: ./conftest
# configure:14937: $? = 0
# configure:14948: result: yes
# configure:14974: checking whether a signal handler can be left through longjmp
# configure:15063: clang -o conftest conftest.c >&5
# configure:15063: $? = 0
# configure:15063: ./conftest
# configure:15063: $? = 0
# configure:15074: result: yes
# configure:15082: checking whether a signal handler can be left through longjmp and sigaltstack
# configure:15181: clang -o conftest conftest.c >&5
# configure:15181: $? = 0
# configure:15181: ./conftest
# configure:15181: $? = 0
# configure:15192: result: yes
# configure:15200: checking whether a signal handler can be left through longjmp and setcontext
# configure:15304: clang -o conftest conftest.c >&5
# configure:15304: $? = 0
# configure:15304: ./conftest
# configure:15304: $? = 0
# configure:15315: result: yes
# configure:15337: checking whether a signal handler can be left through siglongjmp
# configure:15424: clang -o conftest conftest.c >&5
# configure:15424: $? = 0
# configure:15424: ./conftest
# configure:15424: $? = 0
# configure:15435: result: yes
# configure:15443: checking whether a signal handler can be left through siglongjmp and sigaltstack
# configure:15540: clang -o conftest conftest.c >&5
# configure:15540: $? = 0
# configure:15540: ./conftest
# configure:15540: $? = 0
# configure:15551: result: yes
# configure:15559: checking whether a signal handler can be left through siglongjmp and setcontext
# configure:15661: clang -o conftest conftest.c >&5
# configure:15661: $? = 0
# configure:15661: ./conftest
# configure:15661: $? = 0
# configure:15672: result: yes
# configure:15711: checking if the system supports catching stack overflow
# configure:15798: result: yes
# configure:15932: checking for uintptr_t
# configure:15932: clang -c conftest.c >&5
# configure:15932: $? = 0
# configure:15932: clang -c conftest.c >&5
# conftest.c:80:24: error: expected expression
# if (sizeof ((uintptr_t)))
# ^
# 1 error generated.
# configure:15932: $? = 1
# configure: failed program was:
# | /* confdefs.h */
# | #define PACKAGE_NAME ""
# | #define PACKAGE_TARNAME ""
# | #define PACKAGE_VERSION ""
# | #define PACKAGE_STRING ""
# | #define PACKAGE_BUGREPORT ""
# | #define PACKAGE_URL ""
# | #define PACKAGE "libsigsegv"
# | #define VERSION "2.10"
# | #define STDC_HEADERS 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_DLFCN_H 1
# | #define LT_OBJDIR ".libs/"
# | #define HAVE_SYS_SIGNAL_H 1
# | #define CFG_SIGNALS "signals.h"
# | #define HAVE_UNISTD_H 1
# | #define HAVE_GETPAGESIZE 1
# | #define HAVE_SYSCONF_PAGESIZE 1
# | #define HAVE_MMAP_ANON 1
# | #define HAVE_MMAP_ANONYMOUS 1
# | #define HAVE_MMAP_DEVZERO 1
# | #define HAVE_UCONTEXT_H 1
# | #define CFG_FAULT "fault-linux-i386.h"
# | #define CFG_MACHFAULT "fault-none.h"
# | #define STACK_DIRECTION -1
# | #define HAVE_MINCORE 1
# | #define HAVE_STACKVMA 1
# | #define CFG_STACKVMA "stackvma-linux.c"
# | #define HAVE_GETRLIMIT 1
# | #define HAVE_SETRLIMIT 1
# | #define HAVE_SIGALTSTACK 1
# | #define HAVE_WORKING_SIGALTSTACK 1
# | #define CFG_LEAVE "leave-nop.c"
# | #define CFG_HANDLER "handler-unix.c"
# | /* end confdefs.h. */
# | #include
# | #ifdef HAVE_SYS_TYPES_H
# | # include
# | #endif
# | #ifdef HAVE_SYS_STAT_H
# | # include
# | #endif
# | #ifdef STDC_HEADERS
# | # include
# | # include
# | #else
# | # ifdef HAVE_STDLIB_H
# | # include
# | # endif
# | #endif
# | #ifdef HAVE_STRING_H
# | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
# | # include
# | # endif
# | # include
# | #endif
# | #ifdef HAVE_STRINGS_H
# | # include
# | #endif
# | #ifdef HAVE_INTTYPES_H
# | # include
# | #endif
# | #ifdef HAVE_STDINT_H
# | # include
# | #endif
# | #ifdef HAVE_UNISTD_H
# | # include
# | #endif
# | int
# | main ()
# | {
# | if (sizeof ((uintptr_t)))
# | return 0;
# | ;
# | return 0;
# | }
# configure:15932: result: yes
# configure:15972: checking whether to activate relocatable installation
# configure:15987: result: no
# configure:16133: creating ./config.status
#
# ## ---------------------- ##
# ## Running config.status. ##
# ## ---------------------- ##
#
# This file was extended by config.status, which was
# generated by GNU Autoconf 2.68. Invocation command line was
#
# CONFIG_FILES =
# CONFIG_HEADERS =
# CONFIG_LINKS =
# CONFIG_COMMANDS =
# $ ./config.status
#
# on 0713cef7d819
#
# config.status:1125: creating Makefile
# config.status:1125: creating src/Makefile
# config.status:1125: creating src/sigsegv.h
# config.status:1125: creating tests/Makefile
# config.status:1125: creating config.h
# config.status:1354: executing depfiles commands
# config.status:1354: executing libtool commands
#
# ## ---------------- ##
# ## Cache variables. ##
# ## ---------------- ##
#
# ac_cv_build=x86_64-unknown-linux-gnu
# ac_cv_c_compiler_gnu=yes
# ac_cv_env_CC_set=set
# ac_cv_env_CC_value=clang
# ac_cv_env_CFLAGS_set=set
# ac_cv_env_CFLAGS_value=
# ac_cv_env_CPPFLAGS_set=set
# ac_cv_env_CPPFLAGS_value=
# ac_cv_env_CPP_set=
# ac_cv_env_CPP_value=
# ac_cv_env_LDFLAGS_set=set
# ac_cv_env_LDFLAGS_value=
# ac_cv_env_LIBS_set=
# ac_cv_env_LIBS_value=
# ac_cv_env_build_alias_set=
# ac_cv_env_build_alias_value=
# ac_cv_env_host_alias_set=set
# ac_cv_env_host_alias_value=x86_64-unknown-linux
# ac_cv_env_target_alias_set=
# ac_cv_env_target_alias_value=
# ac_cv_func_getrlimit=yes
# ac_cv_func_mincore=yes
# ac_cv_func_mquery=no
# ac_cv_func_setrlimit=yes
# ac_cv_func_sigaltstack=yes
# ac_cv_header_dlfcn_h=yes
# ac_cv_header_inttypes_h=yes
# ac_cv_header_memory_h=yes
# 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_sys_signal_h=yes
# ac_cv_header_sys_stat_h=yes
# ac_cv_header_sys_types_h=yes
# ac_cv_header_ucontext_h=yes
# ac_cv_header_unistd_h=yes
# ac_cv_host=x86_64-unknown-linux-gnu
# ac_cv_objext=o
# ac_cv_path_EGREP='/usr/bin/grep -E'
# ac_cv_path_FGREP='/usr/bin/grep -F'
# ac_cv_path_GREP=/usr/bin/grep
# ac_cv_path_SED=/usr/bin/sed
# ac_cv_path_install='/usr/bin/install -c'
# ac_cv_path_mkdir=/usr/bin/mkdir
# ac_cv_prog_AWK=gawk
# ac_cv_prog_CC=clang
# ac_cv_prog_CPP='clang -E'
# ac_cv_prog_STRIP=strip
# ac_cv_prog_ac_ct_AR=ar
# ac_cv_prog_ac_ct_OBJDUMP=objdump
# ac_cv_prog_ac_ct_RANLIB=ranlib
# ac_cv_prog_ac_ct_STRIP=strip
# ac_cv_prog_cc_c89=
# ac_cv_prog_cc_g=yes
# ac_cv_prog_make_make_set=yes
# ac_cv_type_stack_t=yes
# ac_cv_type_uintptr_t=yes
# am_cv_CC_dependencies_compiler_type=none
# lt_cv_ar_at_file=@
# lt_cv_archive_cmds_need_lc=no
# lt_cv_deplibs_check_method=pass_all
# lt_cv_file_magic_cmd='$MAGIC_CMD'
# lt_cv_file_magic_test_file=
# lt_cv_ld_reload_flag=-r
# lt_cv_nm_interface='BSD nm'
# lt_cv_objdir=.libs
# lt_cv_path_LD=/usr/bin/ld
# lt_cv_path_NM='/usr/bin/nm -B'
# lt_cv_path_mainfest_tool=no
# lt_cv_prog_compiler_c_o=yes
# lt_cv_prog_compiler_pic='-fPIC -DPIC'
# lt_cv_prog_compiler_pic_works=yes
# lt_cv_prog_compiler_rtti_exceptions=yes
# lt_cv_prog_compiler_static_works=yes
# lt_cv_prog_gnu_ld=yes
# lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
# lt_cv_shlibpath_overrides_runpath=no
# lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
# lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\'''
# lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\'''
# lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
# lt_cv_sys_max_cmd_len=1572864
# lt_cv_to_host_file_cmd=func_convert_file_noop
# lt_cv_to_tool_file_cmd=func_convert_file_noop
# sv_cv_fault_aix=no
# sv_cv_fault_bsd=no
# sv_cv_fault_hpux_hppa=no
# sv_cv_fault_hurd=no
# sv_cv_fault_include=fault-linux-i386.h
# sv_cv_fault_irix=no
# sv_cv_fault_linux_hppa=no
# sv_cv_fault_linux_i386=no
# sv_cv_fault_linux_i386_old=no
# sv_cv_fault_linux_m68k=no
# sv_cv_fault_linux_powerpc=no
# sv_cv_fault_macosdarwin5_ppc=no
# sv_cv_fault_macosdarwin7_ppc=no
# sv_cv_fault_netbsd_alpha=no
# sv_cv_fault_osf_alpha=no
# sv_cv_fault_posix=yes
# sv_cv_func_getpagesize=yes
# sv_cv_func_mmap_anon=yes
# sv_cv_func_mmap_anonymous=yes
# sv_cv_func_mmap_devzero=yes
# sv_cv_func_sysconf_pagesize=yes
# sv_cv_have_sigsegv_recovery=yes
# sv_cv_have_stack_overflow_recovery=yes
# sv_cv_host=x86_64-unknown-linux4.10.6-gnu-glibc2.23
# sv_cv_leave_handler_longjmp=yes
# sv_cv_leave_handler_longjmp_setcontext=yes
# sv_cv_leave_handler_longjmp_sigaltstack=yes
# sv_cv_leave_handler_siglongjmp=yes
# sv_cv_leave_handler_siglongjmp_setcontext=yes
# sv_cv_leave_handler_siglongjmp_sigaltstack=yes
# sv_cv_macro_pagesize=no
# sv_cv_procfsvma=no
# sv_cv_sigaltstack=yes
# sv_cv_sigaltstack_low_base=yes
# sv_cv_stack_direction=-1
# sv_cv_stack_direction_msg='grows down'
#
# ## ----------------- ##
# ## Output variables. ##
# ## ----------------- ##
#
# ACLOCAL='${SHELL} /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/missing --run aclocal-1.11'
# AMDEPBACKSLASH='\'
# AMDEP_FALSE='#'
# AMDEP_TRUE=''
# AMTAR='${SHELL} /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/missing --run tar'
# AR='ar'
# AUTOCONF='${SHELL} /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/missing --run autoconf'
# AUTOHEADER='${SHELL} /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/missing --run autoheader'
# AUTOMAKE='${SHELL} /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/missing --run automake-1.11'
# AWK='gawk'
# CC='clang'
# CCDEPMODE='depmode=none'
# CFG_HANDLER='handler-unix.c'
# CFG_LEAVE='leave-nop.c'
# CFG_STACKVMA='stackvma-linux.c'
# CFLAGS=''
# CPP='clang -E'
# CPPFLAGS=''
# CYGPATH_W='echo'
# CYGWIN_FALSE=''
# CYGWIN_TRUE='#'
# DEFS='-DHAVE_CONFIG_H'
# DEPDIR='.deps'
# DLLTOOL='false'
# DSYMUTIL=''
# DUMPBIN=''
# ECHO_C=''
# ECHO_N='-n'
# ECHO_T=''
# EGREP='/usr/bin/grep -E'
# ENABLE_EFAULT_FALSE=''
# ENABLE_EFAULT_TRUE='#'
# EXEEXT=''
# FAULT_CONTEXT='ucontext_t'
# FAULT_CONTEXT_INCLUDE='#include '
# FGREP='/usr/bin/grep -F'
# GREP='/usr/bin/grep'
# HAVE_SIGSEGV_RECOVERY='1'
# HAVE_STACK_OVERFLOW_RECOVERY='1'
# INSTALL_DATA='${INSTALL} -m 644'
# INSTALL_PROGRAM='${INSTALL}'
# INSTALL_SCRIPT='${INSTALL}'
# INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
# LD='/usr/bin/ld -m elf_x86_64'
# LDFLAGS=''
# LIBOBJS=''
# LIBS=''
# LIBTOOL='$(SHELL) $(top_builddir)/libtool'
# LIPO=''
# LN_S='ln -s'
# LTLIBOBJS=''
# MAKEINFO='${SHELL} /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/missing --run makeinfo'
# MANIFEST_TOOL=':'
# MKDIR_P='/usr/bin/mkdir -p'
# NM='/usr/bin/nm -B'
# NMEDIT=''
# OBJDUMP='objdump'
# OBJEXT='o'
# OTOOL64=''
# OTOOL=''
# PACKAGE='libsigsegv'
# PACKAGE_BUGREPORT=''
# PACKAGE_NAME=''
# PACKAGE_STRING=''
# PACKAGE_TARNAME=''
# PACKAGE_URL=''
# PACKAGE_VERSION=''
# PATH_SEPARATOR=':'
# PLATFORM='x86_64-unknown-linux4.10.6-gnu-glibc2.23'
# RANLIB='ranlib'
# RELOCATABLE='no'
# SED='/usr/bin/sed'
# SET_MAKE=''
# SHELL='/bin/sh'
# STRIP='strip'
# VERSION='2.10'
# ac_ct_AR='ar'
# ac_ct_CC=''
# ac_ct_DUMPBIN=''
# am__EXEEXT_FALSE=''
# am__EXEEXT_TRUE='#'
# am__fastdepCC_FALSE=''
# am__fastdepCC_TRUE='#'
# am__include='include'
# am__isrc=''
# am__leading_dot='.'
# am__quote=''
# am__tar='${AMTAR} chf - --owner=root --group=root "$$tardir"'
# am__untar='${AMTAR} xf -'
# bindir='${exec_prefix}/bin'
# build='x86_64-unknown-linux-gnu'
# build_alias=''
# build_cpu='x86_64'
# build_os='linux-gnu'
# build_vendor='unknown'
# datadir='${datarootdir}'
# datarootdir='${prefix}/share'
# docdir='${datarootdir}/doc/${PACKAGE}'
# dvidir='${docdir}'
# exec_prefix='${prefix}'
# host='x86_64-unknown-linux-gnu'
# host_alias='x86_64-unknown-linux'
# host_cpu='x86_64'
# host_os='linux-gnu'
# host_vendor='unknown'
# htmldir='${docdir}'
# includedir='${prefix}/include'
# infodir='${datarootdir}/info'
# install_sh='${SHELL} /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/install-sh'
# libdir='${exec_prefix}/lib'
# libexecdir='${exec_prefix}/libexec'
# localedir='${datarootdir}/locale'
# localstatedir='${prefix}/var'
# mandir='${datarootdir}/man'
# mkdir_p='/usr/bin/mkdir -p'
# oldincludedir='/usr/include'
# pdfdir='${docdir}'
# prefix='/usr'
# program_transform_name='s,x,x,'
# psdir='${docdir}'
# sbindir='${exec_prefix}/sbin'
# sharedstatedir='${prefix}/com'
# sysconfdir='${prefix}/etc'
# target_alias=''
#
# ## ----------- ##
# ## confdefs.h. ##
# ## ----------- ##
#
# /* confdefs.h */
# #define PACKAGE_NAME ""
# #define PACKAGE_TARNAME ""
# #define PACKAGE_VERSION ""
# #define PACKAGE_STRING ""
# #define PACKAGE_BUGREPORT ""
# #define PACKAGE_URL ""
# #define PACKAGE "libsigsegv"
# #define VERSION "2.10"
# #define STDC_HEADERS 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_DLFCN_H 1
# #define LT_OBJDIR ".libs/"
# #define HAVE_SYS_SIGNAL_H 1
# #define CFG_SIGNALS "signals.h"
# #define HAVE_UNISTD_H 1
# #define HAVE_GETPAGESIZE 1
# #define HAVE_SYSCONF_PAGESIZE 1
# #define HAVE_MMAP_ANON 1
# #define HAVE_MMAP_ANONYMOUS 1
# #define HAVE_MMAP_DEVZERO 1
# #define HAVE_UCONTEXT_H 1
# #define CFG_FAULT "fault-linux-i386.h"
# #define CFG_MACHFAULT "fault-none.h"
# #define STACK_DIRECTION -1
# #define HAVE_MINCORE 1
# #define HAVE_STACKVMA 1
# #define CFG_STACKVMA "stackvma-linux.c"
# #define HAVE_GETRLIMIT 1
# #define HAVE_SETRLIMIT 1
# #define HAVE_SIGALTSTACK 1
# #define HAVE_WORKING_SIGALTSTACK 1
# #define CFG_LEAVE "leave-nop.c"
# #define CFG_HANDLER "handler-unix.c"
# #define HAVE_UINTPTR_T 1
#
# configure: exit 0