Successfully tested platforms
=============================

                                                          STACK
__PLATFORM_____________________________________SIGSEGV___OVERFLOW__VERSION__
                                              |         |         |
alpha-dec-osf4.0d                             |   yes   |   yes   | 2.1
alpha-dec-osf4.0f                             |   yes   |   yes   | 2.1
alphaev56-dec-osf4.0d                         |   yes   |   yes   | 2.6
alphaev56-dec-osf4.0f                         |   yes   |   yes   | 2.6
alpha-dec-osf4.0g                             |   yes   |   yes   | 2.1
alpha-dec-osf5.1                              |   yes   |   yes   | 2.1
alphaev67-dec-osf5.1                          |   yes   |   yes   | 2.2
alphaev67-dec-osf5.1a                         |   yes   |   yes   | 2.6
alphaev56-dec-osf5.1b                         |   yes   |   yes   | 2.6
alphaev6-dec-osf5.1b                          |   yes   |   yes   | 2.6
alphaev68-dec-osf5.1b                         |   yes   |   yes   | 2.7
alpha-unknown-freebsd4.8                      |   yes   |   yes   | 2.1
alpha-portbld-freebsd5.5                      |   yes   |   yes   | 2.3
alphaev67-unknown-linux2.4.17-gnu-glibc2.1    |   yes   |   yes   | 1.95
alphaev6-unknown-linux2.2.19-gnu-glibc2.2     |   yes   |   yes   | 2.1
alphaev67-unknown-linux2.2.20-gnu-glibc2.2    |   yes   |   yes   | 2.1
alphaev67-unknown-linux2.4.4-gnu-glibc2.2     |   yes   |   yes   | 2.1
alphaev6-unknown-linux2.4.9-gnu-glibc2.2      |   yes   |   yes   | 2.1
alphaev67-unknown-linux2.4.9-gnu-glibc2.2     |   yes   |   yes   | 2.1
alphaev6-unknown-linux2.4.18-gnu-glibc2.2     |   yes   |   yes   | 2.1
alphaev67-unknown-linux2.4.18-gnu-glibc2.2    |   yes   |   yes   | 2.1
alpha-unknown-linux2.4.19-gnu-glibc2.3        |   yes   |   yes   | 2.6
alphaev68-unknown-linux2.6.11-gnu-glibc2.3    |   yes   |   yes   | 2.2
alpha-unknown-openbsd3.7                      |   yes   |   yes   | 2.2
alpha-unknown-openbsd4.5                      |   yes   |   yes   | 2.6
alpha-unknown-netbsd1.6                       |   yes   |   yes   | 2.1
armv4l-unknown-linux2.4.0-gnu-glibc2.2        |   no    |   yes   | 2.1
armv4l-unknown-linux2.4.3-gnu-glibc2.2        |   yes   |   yes   | 2.1
armv4l-unknown-linux2.4.9-gnu-glibc2.2        |   no    |   yes   | 2.0.1
armv5tel-unknown-linux2.4.20-gnu-glibc2.2     |   yes   |   yes   | 2.2
armv6l-unknown-linux2.6.18-gnu-glibc2.3       |   yes   |   yes   | 2.4
arm-angstrom-linux2.6.23-gnueabi-glibc2.4     |   yes   |   yes   | 2.5
hppa1.1-hp-hpux11.00                          |   yes   |   yes   | 2.1
hppa2.0-hp-hpux10.20                          |   yes   |   yes   | 2.2
hppa2.0w-hp-hpux11.00                         |   yes   |   yes   | 2.6
hppa2.0w-hp-hpux11.11                         |   yes   |   yes   | 2.6
hppa2.0w-hp-hpux11.31                         |   yes   |   yes   | 2.6
hppa-unknown-linux2.4.19-gnu-glibc2.2         |   yes   |   yes   | 2.0.1
hppa64-unknown-linux2.4.17-gnu-glibc2.2       |   yes   |   yes   | 2.1
hppa2.0-unknown-linux2.6.20.1-gnu-glibc2.3    |   yes   |   no    | 2.4
i370-ibm-openedition                          |   no    |   no    | 2.6
i586-pc-beos                                  |   no    |   yes   | 2.1
i686-pc-cygwin                                |   yes   |   yes   | 2.8
i386-apple-darwin8.6.1                        |   yes   |   yes   | 2.3
i686-apple-darwin8.6.1                        |   yes   |   yes   | 2.3
i386-apple-darwin8.8.1                        |   yes   |   yes   | 2.4
i386-apple-darwin8.8.2                        |   yes   |   yes   | 2.4
i386-apple-darwin8.8.3                        |   yes   |   yes   | 2.4
i386-apple-darwin8.9.1                        |   yes   |   yes   | 2.4
i386-apple-darwin8.10.1                       |   yes   |   yes   | 2.4
i386-apple-darwin8.11.1                       |   yes   |   yes   | 2.6
i386-apple-darwin9.0.0                        |   yes   |   yes   | 2.5
i386-apple-darwin9.1.0                        |   yes   |   yes   | 2.5
i386-apple-darwin9.2.2                        |   yes   |   yes   | 2.5
i386-apple-darwin9.3.0                        |   yes   |   yes   | 2.6
i386-apple-darwin9.4.0                        |   yes   |   yes   | 2.5
i386-apple-darwin9.5.0                        |   yes   |   yes   | 2.6
i386-apple-darwin9.6.0                        |   yes   |   yes   | 2.6
i386-apple-darwin9.7.0                        |   yes   |   yes   | 2.6
i386-apple-darwin9.8.0                        |   yes   |   yes   | 2.7
i386-apple-darwin10.2.0                       |   yes   |   yes   | 2.6
i586-pc-linux2.2.14-gnu-glibc2.1              |   yes   |   yes   | 2.1
i686-pc-linux2.2.14-gnu-glibc2.1              |   yes   |   yes   | 2.0
i686-pc-linux2.2.19-gnu-glibc2.1              |   yes   |   yes   | 1.95
i486-pc-linux2.2.21-gnu-glibc2.1              |   yes   |   yes   | 2.0
i586-pc-linux2.4.18-gnu-glibc2.1              |   yes   |   yes   | 2.0
i686-pc-linux2.4.19-gnu-glibc2.1              |   yes   |   yes   | 2.2
i686-pc-linux2.2.16-gnu-glibc2.2              |   yes   |   yes   | 2.0
i686-pc-linux2.2.19-gnu-glibc2.2              |   yes   |   yes   | 2.0
i686-pc-linux2.4.7-gnu-glibc2.2               |   yes   |   yes   | 2.1
i586-pc-linux2.4.9-gnu-glibc2.2               |   yes   |   yes   | 2.0
i686-pc-linux2.4.9-gnu-glibc2.2               |   yes   |   yes   | 2.0
i386-pc-linux2.4.18-gnu-glibc2.2              |   yes   |   yes   | 2.0
i686-pc-linux2.4.18-gnu-glibc2.2              |   yes   |   yes   | 2.0
i586-pc-linux2.4.19-gnu-glibc2.2              |   yes   |   yes   | 2.0
i686-pc-linux2.4.19-gnu-glibc2.2              |   yes   |   yes   | 2.0
i686-pc-linux2.4.20-gnu-glibc2.2              |   yes   |   yes   | 2.0
i586-pc-linux2.2.19-gnu-glibc2.3              |   yes   |   yes   | 2.1
i686-pc-linux2.4.18-gnu-glibc2.3              |   yes   |   yes   | 1.97
i486-pc-linux2.4.20-gnu-glibc2.3              |   yes   |   yes   | 2.0
i586-pc-linux2.4.20-gnu-glibc2.3              |   yes   |   yes   | 2.0
i686-pc-linux2.4.20-gnu-glibc2.3              |   yes   |   yes   | 2.0
i686-pc-linux2.4.21-gnu-glibc2.3              |   yes   |   yes   | 2.6
i586-pc-linux2.4.22-gnu-glibc2.3              |   yes   |   yes   | 2.0
i386-pc-mingw32                               |   yes   |   yes   | 2.4
i586-pc-mingw32                               |   yes   |   yes   | 2.1
i686-pc-mingw32                               |   yes   |   yes   | 2.6
i386-unknown-mirbsd10                         |   yes   |   yes   | 2.7
i386-pc-os2-emx                               |   no    |   no    | 2.5
i386-pc-nto-qnx6.3.2                          |   yes   |   no    | 2.6
i386-pc-solaris2.8                            |   yes   |   yes   | 2.7
i386-pc-solaris2.9                            |   yes   |   yes   | 2.2
i386-pc-solaris2.10                           |   yes   |   yes   | 2.7
i386-pc-solaris2.11                           |   yes   |   yes   | 2.2
i686-pc-win32-msvc6                           |   yes   |   yes   | 1.96
i386-unknown-freebsd4.0                       |   yes   |   yes   | 2.1
i386-unknown-freebsd4.0-gnu-glibc2.3          |   yes   |   yes   | 2.1
i386-unknown-freebsd4.6                       |   yes   |   yes   | 1.95
i386-unknown-freebsd4.7                       |   yes   |   yes   | 2.1
i386-unknown-freebsd4.8                       |   yes   |   yes   | 2.1
i386-unknown-freebsd4.9                       |   yes   |   yes   | 2.2
i386-unknown-freebsd4.10                      |   yes   |   yes   | 2.2
i386-unknown-freebsd5.0                       |   yes   |   yes   | 2.6
i386-portbld-freebsd6.0                       |   yes   |   yes   | 2.3
i386-unknown-freebsd6.2                       |   yes   |   yes   | 2.6
i386-unknown-freebsd6.4                       |   yes   |   yes   | 2.6
i686-unknown-kfreebsd6.2-gnu-glibc2.6         |   yes   |   yes   | 2.5+
i386-unknown-netbsdelf1.6                     |   no    |   no    | 2.6
i386-unknown-netbsdelf2.0.2                   |   yes   |   yes   | 2.4
i386-unknown-netbsdelf3.0                     |   yes   |   yes   | 2.4
i386-unknown-netbsd                           |   yes   |   no    | 2.2
i386-unknown-openbsd3.2                       |   yes   |   yes   | 2.3
i386-unknown-openbsd3.3                       |   yes   |   yes   | 2.1
i386-unknown-openbsd3.4                       |   yes   |   yes   | 2.2
i386-unknown-openbsd3.6                       |   yes   |   yes   | 2.1
i386-unknown-openbsd3.8                       |   yes   |   yes   | 2.4
i386-unknown-openbsd3.9                       |   yes   |   yes   | 2.6
i386-unknown-openbsd4.0                       |   yes   |   yes   | 2.6
ia64-portbld-freebsd7.0                       |   yes   |   no    | 2.3
ia64-hp-hpux11.22                             |   yes   |   no    | 2.1
ia64-hp-hpux11.23                             |   yes   |   no    | 2.2
ia64-hp-hpux11.31                             |   yes   |   no    | 2.6
ia64-unknown-linux2.4.18-gnu-glibc2.2         |   yes   |   yes   | 2.4
ia64-unknown-linux2.4.21-gnu-glibc2.3         |   yes   |   yes   | 2.6
ia64-unknown-linux2.6.9-gnu-glibc2.3          |   yes   |   yes   | 2.6
ia64-unknown-linux2.6.16.27-gnu-glibc2.4      |   yes   |   yes   | 2.6
ia64-unknown-linux2.6.18-gnu-glibc2.3         |   yes   |   yes   | 2.6
mips-sgi-irix5.3                              |   yes   |   yes   | 2.6+
mips-sgi-irix6.2                              |   yes   |   yes   | 2.6+
mips-sgi-irix6.5                              |   yes   |   yes   | 2.6+
mips-unknown-linux2.4.27-gnu-glibc2.3         |   yes   |   yes   | 2.6
nsr-tandem-nsk                                |   no    |   no    | 2.1
rs6000-ibm-aix3.2.5                           |   yes   |   no    | 2.2
rs6000-ibm-aix4.2.0.0                         |   yes   |   yes   | 2.2
rs6000-ibm-aix4.2.1.0                         |   yes   |   yes   | 2.1
powerpc-ibm-aix4.3.2.0                        |   yes   |   yes   | 2.6
powerpc-ibm-aix4.3.3.0                        |   yes   |   yes   | 1.95
powerpc-ibm-aix5.1.0.0                        |   yes   |   yes   | 2.7
powerpc-ibm-aix5.2.0.0                        |   yes   |   yes   | 2.5
powerpc-ibm-aix5.3.0.0                        |   yes   |   yes   | 2.7
powerpc-ibm-aix6.1.0.0                        |   yes   |   yes   | 2.6
powerpc-apple-darwin5.5                       |   yes   |   yes   | 2.2
powerpc-apple-darwin6.0                       |   yes   |   yes   | 2.4
powerpc-apple-darwin6.8                       |   yes   |   yes   | 2.2
powerpc-apple-darwin7.7.0                     |   yes   |   yes   | 2.2
powerpc-apple-darwin7.8.0                     |   yes   |   yes   | 2.2
powerpc-apple-darwin7.9.0                     |   yes   |   yes   | 2.6
powerpc-apple-darwin8.1.0                     |   yes   |   yes   | 2.2
powerpc-apple-darwin8.3.0                     |   yes   |   yes   | 2.2
powerpc-apple-darwin8.4.0                     |   yes   |   yes   | 2.2
powerpc-apple-darwin8.7.0                     |   yes   |   yes   | 2.4
powerpc-apple-darwin8.8.0                     |   yes   |   yes   | 2.4
powerpc-apple-darwin8.9.0                     |   yes   |   yes   | 2.4
powerpc-apple-darwin8.10.0                    |   yes   |   yes   | 2.5
powerpc-apple-darwin8.11.0                    |   yes   |   yes   | 2.6
powerpc-apple-darwin8.11.1                    |   yes   |   yes   | 2.5
powerpc-apple-darwin9.2.0                     |   yes   |   yes   | 2.5
powerpc-apple-darwin9.6.0                     |   yes   |   yes   | 2.6
powerpc-unknown-linux2.2.17-gnu-glibc2.1      |   no    |   yes   | 1.95
powerpc-unknown-linux2.2.17-gnu-glibc2.2      |   yes   |   yes   | 2.0.1
powerpc-unknown-linux2.4.12-gnu-glibc2.2      |   yes   |   yes   | 2.6
powerpc-unknown-linux2.4.19-gnu-glibc2.2      |   yes   |   yes   | 2.4
powerpc-unknown-linux2.4.28-gnu-glibc2.2      |   yes   |   yes   | 2.1
powerpc-unknown-linux2.4.26-gnu-glibc2.3      |   yes   |   yes   | 2.1
powerpc-unknown-linux2.6.10-gnu-glibc2.3      |   yes   |   yes   | 2.2
powerpc-unknown-linux2.6.12-gnu-glibc2.3      |   yes   |   yes   | 2.7
powerpc-unknown-linux2.6.16-gnu-glibc2.3      |   yes   |   yes   | 2.4
powerpc-unknown-linux2.6.16-gnu-glibc2.4      |   yes   |   yes   | 2.6
powerpc-unknown-netbsd2.0                     |   yes   |   no    | 2.1
powerpc-unknown-netbsd3.99.23                 |   yes   |   yes   | 2.4
powerpc-unknown-openbsd4.0                    |   yes   |   yes   | 2.4
powerpc-unknown-openbsd4.1                    |   yes   |   yes   | 2.4
powerpc64-unknown-linux2.6.5-gnu-glibc2.3     |   yes   |   yes   | 2.4
powerpc64-unknown-linux2.6.16.27-gnu-glibc2.4 |   yes   |   yes   | 2.4
s390x-ibm-linux2.6.16.46-gnu-glibc2.4         |   no    |   yes   | 2.5
sparc-unknown-linux2.4.32-gnu-glibc2.3        |   yes   |   no    | 2.1
sparc-unknown-openbsd3.9                      |   yes   |   no    | 2.4
sparc-sun-solaris2.5.1                        |   yes   |   yes   | 2.2
sparc-sun-solaris2.6                          |   yes   |   yes   | 2.7
sparc-sun-solaris2.7                          |   yes   |   yes   | 2.6
sparc-sun-solaris2.8                          |   yes   |   yes   | 2.7
sparc-sun-solaris2.9                          |   yes   |   yes   | 2.6
sparc-sun-solaris2.10                         |   yes   |   yes   | 2.7
sparc-sun-solaris2.11                         |   yes   |   yes   | 2.4
sparc64-unknown-linux2.2.18-gnu-glibc2.1      |   no    |   no    | 1.95
sparc64-unknown-linux2.4.28-gnu-glibc2.3      |   yes   |   no    | 2.6
sparc64-unknown-openbsd3.6                    |   no    |   no    | 2.2
x86_64-unknown-kfreebsd6.2-gnu-glibc2.6       |   yes   |   yes   | 2.5+
x86_64-unknown-linux2.4.21-gnu-glibc2.2       |   yes   |   yes   | 2.1
x86_64-unknown-linux2.4.21-gnu-glibc2.3       |   yes   |   yes   | 2.1
x86_64-unknown-linux2.6.3-gnu-glibc2.3        |   yes   |   yes   | 2.1
x86_64-unknown-linux2.6.9-gnu-glibc2.3        |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.11.4-gnu-glibc2.3     |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.13-gnu-glibc2.3       |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.16-gnu-glibc2.4       |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.16.13-gnu-glibc2.4    |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.16.21-gnu-glibc2.4    |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.16.27-gnu-glibc2.4    |   yes   |   yes   | 2.6
x86_64-unknown-linux2.6.17-gnu-glibc2.4       |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.20-gnu-glibc2.4       |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.20-gnu-glibc2.5       |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.20.1-gnu-glibc2.5     |   yes   |   yes   | 2.4
x86_64-unknown-linux2.6.21-gnu-glibc2.6       |   yes   |   yes   | 2.4
x86_64-unknown-netbsd3.0                      |   yes   |   yes   | 2.4
x86_64-unknown-netbsd4.99.72                  |   yes   |   yes   | 2.5
x86_64-pc-solaris2.11                         |   yes   |   yes   | 2.5
amd64-portbld-freebsd5.4                      |   yes   |   yes   | 2.2
amd64-portbld-freebsd6.0                      |   yes   |   yes   | 2.3
amd64-portbld-freebsd7.0                      |   yes   |   yes   | 2.3


On FreeBSD 5.2, libsigsegv works best if the /proc filesystem is mounted.
(It is not mounted by default.)


Porting to new platforms
========================

On Unix systems, where faults are notified to the program through a signal
handler, the core routines in handler-unix.c can be used without
modifications. But they need the following bits of information. Each of
them is stored in a platform dependent file; the file is chosen in configure.

  * List of signals that are sent when an invalid virtual memory address
    is accessed, or when the stack overflows.
    This is a file among signals-*.h.
    configure chooses and sets the variable CFG_SIGNALS.

  * What arguments are passed to a fault handler.
    This is a file among fault-*.h.
    configure chooses and sets the variable CFG_FAULT.

  * How to determine the stack's virtual memory area.
    This is a file among stackvma-*.c.
    configure chooses and sets the variable CFG_STACKVMA.

  * How to leave a signal handler that is executing on the alternate
    signal stack.
    This is a file among leave-*.c.
    configure chooses and sets the variable CFG_LEAVE.

For each of these, the approach should be:

  - Find a way to implement the needed functionality.  This might involve
    study of the system include files (in particular <signal.h> and
    <ucontext.h>) and of the kernel sources.
    For CFG_FAULT, the best starting point is to run the tests/sigsegv1
    program with a breakpoint set at 'sigsegv_handler'.

  - Add to configure.in a test whether your new code works.  This will
    help portability to platforms similar to yours.
    Then regenerate the configure script (run "autoconf") and verify
    that the test says "yes" on your platform.

  - Create a platform dependent file (e.g. fault-<os>-<cpu>.h) and change
    configure.in to choose this particular file when your test says "yes".
    Then regenerate the configure script (run "autoconf").

  - Verify that "make" and "make check" pass.

For non-Unix systems, a separate handler-<os>.c is likely to be needed.
