Build of libsigsegv with vanilla toolchain

The build took 00h 00m 38s 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...

CMD: sudo -u tuscan red makepkg --noextract --syncdeps --skipinteg --skippgpcheck --skipchecksums --noconfirm --nocolor --log --noprogressbar --nocheck
# ==> Making package: libsigsegv 2.10-2 (Wed Aug 24 14:05:13 UTC 2016)
# ==> 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/sbin/mkdir -p
# checking for gawk... gawk
# checking whether make sets $(MAKE)... yes
# checking for x86_64-unknown-linux-gcc... no
# checking for gcc... gcc
# 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 gcc accepts -g... yes
# checking for gcc option to accept ISO C89... none needed
# checking for style of include used by make... GNU
# checking dependency style of gcc... none
# checking how to run the C preprocessor... gcc -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.7.1-gnu
# checking how to print strings... printf
# checking for a sed that does not truncate output... /usr/sbin/sed
# checking for grep that handles long lines and -e... /usr/sbin/grep
# checking for egrep... /usr/sbin/grep -E
# checking for fgrep... /usr/sbin/grep -F
# checking for ld used by gcc... /usr/sbin/ld
# checking if the linker (/usr/sbin/ld) is GNU ld... yes
# checking for BSD- or MS-compatible name lister (nm)... /usr/sbin/nm -B
# checking the name lister (/usr/sbin/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/sbin/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/sbin/nm -B output from gcc 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 gcc supports -fno-rtti -fno-exceptions... no
# checking for gcc option to produce PIC... -fPIC -DPIC
# checking if gcc PIC flag -fPIC -DPIC works... yes
# checking if gcc static flag -static works... yes
# checking if gcc supports -c -o file.o... yes
# checking if gcc supports -c -o file.o... (cached) yes
# checking whether the gcc linker (/usr/sbin/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 gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o handler.lo handler.c
# /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o stackvma.lo stackvma.c
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c stackvma.c -fPIC -DPIC -o .libs/stackvma.o
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c handler.c -fPIC -DPIC -o .libs/handler.o
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c stackvma.c -o stackvma.o >/dev/null 2>&1
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c handler.c -o handler.o >/dev/null 2>&1
# /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o leave.lo leave.c
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c leave.c -fPIC -DPIC -o .libs/leave.o
# /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o dispatcher.lo dispatcher.c
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c leave.c -o leave.o >/dev/null 2>&1
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c dispatcher.c -fPIC -DPIC -o .libs/dispatcher.o
# /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c -o version.lo version.c
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c version.c -fPIC -DPIC -o .libs/version.o
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c dispatcher.c -o dispatcher.o >/dev/null 2>&1
# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -c version.c -o version.o >/dev/null 2>&1
# /bin/sh ../libtool --tag=CC --mode=link gcc -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: gcc -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'
# gcc -DHAVE_CONFIG_H -I. -I.. -I../src -c sigsegv1.c
# gcc -DHAVE_CONFIG_H -I. -I.. -I../src -c sigsegv2.c
# gcc -DHAVE_CONFIG_H -I. -I.. -I../src -c sigsegv3.c
# gcc -DHAVE_CONFIG_H -I. -I.. -I../src -c stackoverflow1.c
# gcc -DHAVE_CONFIG_H -I. -I.. -I../src -c stackoverflow2.c
# /bin/sh ../libtool --tag=CC --mode=link gcc -o sigsegv1 sigsegv1.o ../src/libsigsegv.la
# /bin/sh ../libtool --tag=CC --mode=link gcc -o sigsegv2 sigsegv2.o ../src/libsigsegv.la
# libtool: link: gcc -o .libs/sigsegv1 sigsegv1.o ../src/.libs/libsigsegv.so -lc
# libtool: link: gcc -o .libs/sigsegv2 sigsegv2.o ../src/.libs/libsigsegv.so -lc
# /bin/sh ../libtool --tag=CC --mode=link gcc -o sigsegv3 sigsegv3.o ../src/libsigsegv.la
# /bin/sh ../libtool --tag=CC --mode=link gcc -o stackoverflow1 stackoverflow1.o ../src/libsigsegv.la
# libtool: link: gcc -o .libs/sigsegv3 sigsegv3.o ../src/.libs/libsigsegv.so -lc
# libtool: link: gcc -o .libs/stackoverflow1 stackoverflow1.o ../src/.libs/libsigsegv.so -lc
# /bin/sh ../libtool --tag=CC --mode=link gcc -o stackoverflow2 stackoverflow2.o ../src/libsigsegv.la
# libtool: link: gcc -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/sbin/mkdir -p "/tmp/libsigsegv/pkg/libsigsegv/usr/lib"
# /bin/sh /tmp/libsigsegv/src/libsigsegv-2.10/build-aux/install-sh -d /tmp/libsigsegv/pkg/libsigsegv/usr/include
# /bin/sh ../libtool --mode=install /usr/bin/install -c libsigsegv.la '/tmp/libsigsegv/pkg/libsigsegv/usr/lib'
# /usr/bin/install -c -m 644 sigsegv.h /tmp/libsigsegv/pkg/libsigsegv/usr/include/sigsegv.h
# 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'
# 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 (Wed Aug 24 14:05:25 UTC 2016)

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 = 9c4ef2b88497
# uname -m = x86_64
# uname -r = 4.7.1-1-ARCH
# uname -s = Linux
# uname -v = #1 SMP PREEMPT Wed Aug 17 08:13:35 CEST 2016
#
# /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/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/sbin/strip
# configure:2580: result: strip
# configure:2605: checking for a thread-safe mkdir -p
# configure:2644: result: /usr/sbin/mkdir -p
# configure:2657: checking for gawk
# configure:2673: found /usr/sbin/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:2840: result: no
# configure:2850: checking for gcc
# configure:2866: found /usr/sbin/gcc
# configure:2877: result: gcc
# configure:3106: checking for C compiler version
# configure:3115: gcc --version >&5
# gcc (GCC) 6.1.1 20160602
# Copyright (C) 2016 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# configure:3126: $? = 0
# configure:3115: gcc -v >&5
# Using built-in specs.
# COLLECT_GCC=gcc
# COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/lto-wrapper
# Target: x86_64-pc-linux-gnu
# Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release
# Thread model: posix
# gcc version 6.1.1 20160602 (GCC)
# configure:3126: $? = 0
# configure:3115: gcc -V >&5
# gcc: error: unrecognized command line option '-V'
# gcc: fatal error: no input files
# compilation terminated.
# configure:3126: $? = 1
# configure:3115: gcc -qversion >&5
# gcc: error: unrecognized command line option '-qversion'; did you mean '--version'?
# gcc: fatal error: no input files
# compilation terminated.
# configure:3126: $? = 1
# configure:3146: checking whether the C compiler works
# configure:3168: gcc 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: gcc -o conftest conftest.c >&5
# configure:3242: $? = 0
# configure:3264: result:
# configure:3286: checking whether we are cross compiling
# configure:3294: gcc -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: gcc -c conftest.c >&5
# configure:3355: $? = 0
# configure:3376: result: o
# configure:3380: checking whether we are using the GNU C compiler
# configure:3399: gcc -c conftest.c >&5
# configure:3399: $? = 0
# configure:3408: result: yes
# configure:3417: checking whether gcc accepts -g
# configure:3437: gcc -c -g conftest.c >&5
# configure:3437: $? = 0
# configure:3478: result: yes
# configure:3495: checking for gcc option to accept ISO C89
# configure:3559: gcc -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 gcc
# configure:3766: result: none
# configure:3786: checking how to run the C preprocessor
# configure:3817: gcc -E conftest.c
# configure:3817: $? = 0
# configure:3831: gcc -E conftest.c
# conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
# #include
# ^
# compilation terminated.
# 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: gcc -E
# configure:3876: gcc -E conftest.c
# configure:3876: $? = 0
# configure:3890: gcc -E conftest.c
# conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
# #include
# ^
# compilation terminated.
# 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.7.1-gnu
# 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/sbin/sed
# configure:4197: checking for grep that handles long lines and -e
# configure:4255: result: /usr/sbin/grep
# configure:4260: checking for egrep
# configure:4322: result: /usr/sbin/grep -E
# configure:4327: checking for fgrep
# configure:4389: result: /usr/sbin/grep -F
# configure:4424: checking for ld used by gcc
# configure:4491: result: /usr/sbin/ld
# configure:4498: checking if the linker (/usr/sbin/ld) is GNU ld
# configure:4513: result: yes
# configure:4525: checking for BSD- or MS-compatible name lister (nm)
# configure:4574: result: /usr/sbin/nm -B
# configure:4704: checking the name lister (/usr/sbin/nm -B) interface
# configure:4711: gcc -c conftest.c >&5
# configure:4714: /usr/sbin/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/sbin/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/sbin/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/sbin/ar
# configure:5612: result: ar
# configure:5649: checking for archiver @FILE support
# configure:5666: gcc -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/sbin/ranlib
# configure:5876: result: ranlib
# configure:5978: checking command to parse /usr/sbin/nm -B output from gcc object
# configure:6097: gcc -c conftest.c >&5
# configure:6100: $? = 0
# configure:6104: /usr/sbin/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: gcc -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: gcc -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: gcc -c conftest.c >&5
# configure:7236: $? = 0
# configure:7309: gcc -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: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for sys/stat.h
# configure:7333: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for stdlib.h
# configure:7333: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for string.h
# configure:7333: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for memory.h
# configure:7333: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for strings.h
# configure:7333: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for inttypes.h
# configure:7333: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for stdint.h
# configure:7333: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7333: checking for unistd.h
# configure:7333: gcc -c conftest.c >&5
# configure:7333: $? = 0
# configure:7333: result: yes
# configure:7347: checking for dlfcn.h
# configure:7347: gcc -c conftest.c >&5
# configure:7347: $? = 0
# configure:7347: result: yes
# configure:7533: checking for objdir
# configure:7548: result: .libs
# configure:7819: checking if gcc supports -fno-rtti -fno-exceptions
# configure:7837: gcc -c -fno-rtti -fno-exceptions conftest.c >&5
# cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C
# configure:7841: $? = 0
# configure:7854: result: no
# configure:8164: checking for gcc option to produce PIC
# configure:8171: result: -fPIC -DPIC
# configure:8179: checking if gcc PIC flag -fPIC -DPIC works
# configure:8197: gcc -c -fPIC -DPIC -DPIC conftest.c >&5
# configure:8201: $? = 0
# configure:8214: result: yes
# configure:8243: checking if gcc static flag -static works
# configure:8271: result: yes
# configure:8286: checking if gcc supports -c -o file.o
# configure:8307: gcc -c -o out/conftest2.o conftest.c >&5
# configure:8311: $? = 0
# configure:8333: result: yes
# configure:8341: checking if gcc supports -c -o file.o
# configure:8388: result: yes
# configure:8421: checking whether the gcc linker (/usr/sbin/ld -m elf_x86_64) supports shared libraries
# configure:9579: result: yes
# configure:9616: checking whether -lc should be explicitly linked in
# configure:9624: gcc -c conftest.c >&5
# configure:9627: $? = 0
# configure:9642: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/sbin/grep -lc \>/dev/null 2\>\&1
# configure:9645: $? = 0
# configure:9659: result: no
# configure:9824: checking dynamic linker characteristics
# configure:10338: gcc -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: gcc -c conftest.c >&5
# configure:11348: $? = 0
# configure:11348: result: yes
# configure:11348: checking sys/signal.h presence
# configure:11348: gcc -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: gcc -o conftest conftest.c >&5
# configure:11422: $? = 0
# configure:11430: result: yes
# configure:11439: checking for sysconf(_SC_PAGESIZE)
# configure:11462: gcc -o conftest conftest.c >&5
# configure:11462: $? = 0
# configure:11470: result: yes
# configure:11479: checking for PAGESIZE in limits.h
# configure:11497: gcc -o conftest conftest.c >&5
# conftest.c: In function 'main':
# conftest.c:33:12: error: 'PAGESIZE' undeclared (first use in this function)
# int pgsz = PAGESIZE;
# ^~~~~~~~
# conftest.c:33:12: note: each undeclared identifier is reported only once for each function it appears in
# 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: gcc -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: gcc -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: gcc -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: gcc -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: gcc -o conftest conftest.c >&5
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:39:8: error: redefinition of 'struct _fpx_sw_bytes'
# struct _fpx_sw_bytes {
# ^~~~~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:29:8: note: originally defined here
# struct _fpx_sw_bytes
# ^~~~~~~~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:84:8: error: redefinition of 'struct _fpreg'
# struct _fpreg {
# ^~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:38:8: note: originally defined here
# struct _fpreg
# ^~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:90:8: error: redefinition of 'struct _fpxreg'
# struct _fpxreg {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:44:8: note: originally defined here
# struct _fpxreg
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:97:8: error: redefinition of 'struct _xmmreg'
# struct _xmmreg {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:51:8: note: originally defined here
# struct _xmmreg
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:179:8: error: redefinition of 'struct _ymmh_state'
# struct _ymmh_state {
# ^~~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:182:8: note: originally defined here
# struct _ymmh_state
# ^~~~~~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:191:8: error: redefinition of 'struct _xstate'
# struct _xstate {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:187:8: note: originally defined here
# struct _xstate
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:316:8: error: redefinition of 'struct sigcontext'
# struct sigcontext {
# ^~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:137:8: note: originally defined here
# struct sigcontext
# ^~~~~~~~~~
# 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: gcc -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: gcc -o conftest conftest.c >&5
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:39:8: error: redefinition of 'struct _fpx_sw_bytes'
# struct _fpx_sw_bytes {
# ^~~~~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:29:8: note: originally defined here
# struct _fpx_sw_bytes
# ^~~~~~~~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:84:8: error: redefinition of 'struct _fpreg'
# struct _fpreg {
# ^~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:38:8: note: originally defined here
# struct _fpreg
# ^~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:90:8: error: redefinition of 'struct _fpxreg'
# struct _fpxreg {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:44:8: note: originally defined here
# struct _fpxreg
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:97:8: error: redefinition of 'struct _xmmreg'
# struct _xmmreg {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:51:8: note: originally defined here
# struct _xmmreg
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:179:8: error: redefinition of 'struct _ymmh_state'
# struct _ymmh_state {
# ^~~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:182:8: note: originally defined here
# struct _ymmh_state
# ^~~~~~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:191:8: error: redefinition of 'struct _xstate'
# struct _xstate {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:187:8: note: originally defined here
# struct _xstate
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:316:8: error: redefinition of 'struct sigcontext'
# struct sigcontext {
# ^~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:137:8: note: originally defined here
# struct sigcontext
# ^~~~~~~~~~
# In file included from conftest.c:39:0:
# ./src/fault-linux-m68k-old.c: In function 'get_fault_addr':
# ./src/fault-linux-m68k-old.c:22:20: error: 'struct sigcontext' has no member named 'sc_formatvec'
# int format = (scp->sc_formatvec >> 12) & 0xf;
# ^~
# 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: gcc -o conftest conftest.c >&5
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:39:8: error: redefinition of 'struct _fpx_sw_bytes'
# struct _fpx_sw_bytes {
# ^~~~~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:29:8: note: originally defined here
# struct _fpx_sw_bytes
# ^~~~~~~~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:84:8: error: redefinition of 'struct _fpreg'
# struct _fpreg {
# ^~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:38:8: note: originally defined here
# struct _fpreg
# ^~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:90:8: error: redefinition of 'struct _fpxreg'
# struct _fpxreg {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:44:8: note: originally defined here
# struct _fpxreg
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:97:8: error: redefinition of 'struct _xmmreg'
# struct _xmmreg {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:51:8: note: originally defined here
# struct _xmmreg
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:179:8: error: redefinition of 'struct _ymmh_state'
# struct _ymmh_state {
# ^~~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:182:8: note: originally defined here
# struct _ymmh_state
# ^~~~~~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:191:8: error: redefinition of 'struct _xstate'
# struct _xstate {
# ^~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:187:8: note: originally defined here
# struct _xstate
# ^~~~~~~
# In file included from conftest.c:38:0:
# /usr/include/asm/sigcontext.h:316:8: error: redefinition of 'struct sigcontext'
# struct sigcontext {
# ^~~~~~~~~~
# In file included from /usr/include/signal.h:306:0,
# from conftest.c:34:
# /usr/include/bits/sigcontext.h:137:8: note: originally defined here
# struct sigcontext
# ^~~~~~~~~~
# conftest.c: In function 'sigsegv_handler':
# conftest.c:69:38: error: 'struct sigcontext' has no member named 'regs'; did you mean 'gs'?
# void *fault_address = (void *) (scp->regs->dar);
# ^~
# 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: gcc -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: gcc -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: gcc -o conftest conftest.c >&5
# conftest.c: In function 'sigsegv_handler':
# conftest.c:69:54: error: 'struct sigcontext' has no member named 'sc_badvaddr'
# void *fault_address = (void *) ((unsigned long) scp->sc_badvaddr);
# ^~
# 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: gcc -o conftest conftest.c >&5
# conftest.c: In function 'sigsegv_handler':
# conftest.c:72:48: error: 'struct sigcontext' has no member named 'sc_sl'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^
# conftest.c:39:33: note: in definition of macro 'USE_64BIT_REGS'
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^~
# conftest.c:72:35: note: in expansion of macro 'GET_CR21'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^~~~~~~~
# conftest.c:39:48: error: 'SS_WIDEREGS' undeclared (first use in this function)
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^
# conftest.c:40:25: note: in expansion of macro 'USE_64BIT_REGS'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^~~~~~~~~~~~~~
# conftest.c:72:35: note: in expansion of macro 'GET_CR21'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^~~~~~~~
# conftest.c:39:48: note: each undeclared identifier is reported only once for each function it appears in
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^
# conftest.c:40:25: note: in expansion of macro 'USE_64BIT_REGS'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^~~~~~~~~~~~~~
# conftest.c:72:35: note: in expansion of macro 'GET_CR21'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^~~~~~~~
# conftest.c:72:48: error: 'struct sigcontext' has no member named 'sc_sl'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^
# conftest.c:39:66: note: in definition of macro 'USE_64BIT_REGS'
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^~
# conftest.c:72:35: note: in expansion of macro 'GET_CR21'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^~~~~~~~
# conftest.c:39:81: error: 'SS_NARROWISINVALID' undeclared (first use in this function)
# #define USE_64BIT_REGS(mc) (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID))
# ^
# conftest.c:40:25: note: in expansion of macro 'USE_64BIT_REGS'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^~~~~~~~~~~~~~
# conftest.c:72:35: note: in expansion of macro 'GET_CR21'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^~~~~~~~
# conftest.c:72:48: error: 'struct sigcontext' has no member named 'sc_sl'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^
# conftest.c:40:47: note: in definition of 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:48: error: 'struct sigcontext' has no member named 'sc_sl'
# void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss));
# ^
# conftest.c:40:76: note: in definition of macro 'GET_CR21'
# #define GET_CR21(mc) (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21)
# ^~
# 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: gcc -o conftest conftest.c >&5
# conftest.c: In function 'sigsegv_handler':
# conftest.c:69:38: error: 'struct sigcontext' has no member named 'sc_traparg_a0'
# void *fault_address = (void *) (scp->sc_traparg_a0);
# ^~
# 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: gcc -o conftest conftest.c >&5
# In file included from conftest.c:38:0:
# ./src/fault-netbsd-alpha.c: In function 'get_fault_addr':
# ./src/fault-netbsd-alpha.c:25:46: error: 'struct sigcontext' has no member named 'sc_pc'
# unsigned int instr = *((unsigned int *)(scp->sc_pc));
# ^~
# ./src/fault-netbsd-alpha.c:36:18: error: 'struct sigcontext' has no member named 'sc_regs'
# faultaddr = scp->sc_regs[(instr >> 16) & 0x1f];
# ^~
# 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: gcc -o conftest conftest.c >&5
# conftest.c: In function 'sigsegv_handler':
# conftest.c:69:38: error: 'struct sigcontext' has no member named 'sc_jmpbuf'
# void *fault_address = (void *) (scp->sc_jmpbuf.jmp_context.o_vaddr);
# ^~
# 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: gcc -o conftest conftest.c >&5
# In file included from conftest.c:38:0:
# ./src/fault-macosdarwin7-powerpc.c: In function 'get_fault_addr':
# ./src/fault-macosdarwin7-powerpc.c:43:22: error: invalid type argument of '->' (have 'mcontext_t {aka struct }')
# &ucp->uc_mcontext->ss.r0; /* r0..r31 */
# ^~
# ./src/fault-macosdarwin7-powerpc.c:130:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
# return (void *) addr;
# ^
# conftest.c: In function 'main':
# conftest.c:107:21: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
# action.sa_sigaction = &sigsegv_handler;
# ^
# 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: gcc -o conftest conftest.c >&5
# In file included from conftest.c:38:0:
# ./src/fault-macosdarwin5-powerpc.c: In function 'get_fault_addr':
# ./src/fault-macosdarwin5-powerpc.c:36:46: error: 'struct sigcontext' has no member named 'sc_ir'
# unsigned int instr = *((unsigned int *) scp->sc_ir);
# ^~
# ./src/fault-macosdarwin5-powerpc.c:37:46: error: 'struct sigcontext' has no member named 'sc_regs'
# unsigned int *regs = &((unsigned int *) scp->sc_regs)[2];
# ^~
# ./src/fault-macosdarwin5-powerpc.c:123:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
# return (void *) addr;
# ^
# 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: gcc -o conftest conftest.c >&5
# conftest.c: In function 'sigsegv_handler':
# conftest.c:69:25: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
# void *fault_address = (void *) (code);
# ^
# 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: gcc -c conftest.c >&5
# configure:14207: $? = 0
# configure:14207: result: yes
# configure:14207: checking ucontext.h presence
# configure:14207: gcc -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: gcc -o conftest conftest.c >&5
# conftest.c: In function 'main':
# conftest.c:39:9: error: 'PIOCNMAP' undeclared (first use in this function)
# int x = PIOCNMAP + PIOCMAP; prmap_t y;
# ^~~~~~~~
# conftest.c:39:9: note: each undeclared identifier is reported only once for each function it appears in
# conftest.c:39:20: error: 'PIOCMAP' undeclared (first use in this function)
# int x = PIOCNMAP + PIOCMAP; prmap_t y;
# ^~~~~~~
# conftest.c:39:29: error: unknown type name 'prmap_t'
# int x = PIOCNMAP + PIOCMAP; prmap_t y;
# ^~~~~~~
# 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: gcc -o conftest conftest.c >&5
# /tmp/ccteZSjv.o: In function `main':
# conftest.c:(.text+0xa): undefined reference to `mquery'
# collect2: error: ld returned 1 exit status
# 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: gcc -o conftest conftest.c >&5
# configure:14635: $? = 0
# configure:14635: result: yes
# configure:14681: checking for getrlimit
# configure:14681: gcc -o conftest conftest.c >&5
# configure:14681: $? = 0
# configure:14681: result: yes
# configure:14681: checking for setrlimit
# configure:14681: gcc -o conftest conftest.c >&5
# configure:14681: $? = 0
# configure:14681: result: yes
# configure:14697: checking for sigaltstack
# configure:14697: gcc -o conftest conftest.c >&5
# configure:14697: $? = 0
# configure:14697: result: yes
# configure:14708: checking for stack_t
# configure:14708: gcc -c conftest.c >&5
# configure:14708: $? = 0
# configure:14708: gcc -c conftest.c >&5
# conftest.c: In function 'main':
# conftest.c:51:22: error: expected expression before ')' token
# if (sizeof ((stack_t)))
# ^
# 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: gcc -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: gcc -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: gcc -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: gcc -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: gcc -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: gcc -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: gcc -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: gcc -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: gcc -c conftest.c >&5
# configure:15932: $? = 0
# configure:15932: gcc -c conftest.c >&5
# conftest.c: In function 'main':
# conftest.c:80:24: error: expected expression before ')' token
# if (sizeof ((uintptr_t)))
# ^
# 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 9c4ef2b88497
#
# 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=
# ac_cv_env_CC_value=
# 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/sbin/grep -E'
# ac_cv_path_FGREP='/usr/sbin/grep -F'
# ac_cv_path_GREP=/usr/sbin/grep
# ac_cv_path_SED=/usr/sbin/sed
# ac_cv_path_install='/usr/bin/install -c'
# ac_cv_path_mkdir=/usr/sbin/mkdir
# ac_cv_prog_AWK=gawk
# ac_cv_prog_CPP='gcc -E'
# ac_cv_prog_STRIP=strip
# ac_cv_prog_ac_ct_AR=ar
# ac_cv_prog_ac_ct_CC=gcc
# 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/sbin/ld
# lt_cv_path_NM='/usr/sbin/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=no
# 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.7.1-gnu
# 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='gcc'
# CCDEPMODE='depmode=none'
# CFG_HANDLER='handler-unix.c'
# CFG_LEAVE='leave-nop.c'
# CFG_STACKVMA='stackvma-linux.c'
# CFLAGS=''
# CPP='gcc -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/sbin/grep -E'
# ENABLE_EFAULT_FALSE=''
# ENABLE_EFAULT_TRUE='#'
# EXEEXT=''
# FAULT_CONTEXT='ucontext_t'
# FAULT_CONTEXT_INCLUDE='#include '
# FGREP='/usr/sbin/grep -F'
# GREP='/usr/sbin/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/sbin/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/sbin/mkdir -p'
# NM='/usr/sbin/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.7.1-gnu'
# RANLIB='ranlib'
# RELOCATABLE='no'
# SED='/usr/sbin/sed'
# SET_MAKE=''
# SHELL='/bin/sh'
# STRIP='strip'
# VERSION='2.10'
# ac_ct_AR='ar'
# ac_ct_CC='gcc'
# 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/sbin/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