1 Successfully tested platforms
2 =============================
4 __PLATFORM__________________________________SIGSEGV__STACK_OVERFLOW__VERSION___
6 alpha-dec-osf4.0d | yes | yes | 2.1
7 alpha-dec-osf4.0f | yes | yes | 2.1
8 alpha-dec-osf4.0g | yes | yes | 2.1
9 alpha-dec-osf5.1 | yes | yes | 2.1
10 alphaev67-dec-osf5.1 | yes | yes | 2.2
11 alpha-unknown-freebsd4.8 | yes | yes | 2.1
12 alphaev67-unknown-linux2.4.17-gnu-glibc2.1 | yes | yes | 1.95
13 alphaev6-unknown-linux2.2.19-gnu-glibc2.2 | yes | yes | 2.1
14 alphaev67-unknown-linux2.2.20-gnu-glibc2.2 | yes | yes | 2.1
15 alphaev67-unknown-linux2.4.4-gnu-glibc2.2 | yes | yes | 2.1
16 alphaev6-unknown-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.1
17 alphaev67-unknown-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.1
18 alphaev6-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.1
19 alphaev67-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.1
20 alphaev68-unknown-linux2.6.11-gnu-glibc2.3 | yes | yes | 2.2
21 alpha-unknown-openbsd3.7 | yes | yes | 2.2
22 alpha-unknown-netbsd1.6 | yes | yes | 2.1
23 armv4l-unknown-linux2.4.0-gnu-glibc2.2 | no | yes | 2.1
24 armv4l-unknown-linux2.4.3-gnu-glibc2.2 | yes | yes | 2.1
25 armv4l-unknown-linux2.4.9-gnu-glibc2.2 | no | yes | 2.0.1
26 armv5tel-unknown-linux2.4.20-gnu-glibc2.2 | yes | yes | 2.2
27 hppa1.1-hp-hpux11.00 | yes | yes | 2.1
28 hppa2.0-hp-hpux10.20 | yes | yes | 2.2
29 hppa2.0w-hp-hpux11.00 | yes | yes | 2.2
30 hppa2.0w-hp-hpux11.11 | yes | yes | 2.2
31 hppa-unknown-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0.1
32 hppa64-unknown-linux2.4.17-gnu-glibc2.2 | yes | yes | 2.1
33 i586-pc-beos | no | yes | 2.1
34 i686-pc-cygwin | yes | yes | 2.02
35 i686-pc-cygwin | yes | yes | 2.2
36 i686-apple-darwin8.6.1 | yes | yes | 2.3
37 i586-pc-linux2.2.14-gnu-glibc2.1 | yes | yes | 2.1
38 i686-pc-linux2.2.14-gnu-glibc2.1 | yes | yes | 2.0
39 i686-pc-linux2.2.19-gnu-glibc2.1 | yes | yes | 1.95
40 i486-pc-linux2.2.21-gnu-glibc2.1 | yes | yes | 2.0
41 i586-pc-linux2.4.18-gnu-glibc2.1 | yes | yes | 2.0
42 i686-pc-linux2.4.19-gnu-glibc2.1 | yes | yes | 2.2
43 i686-pc-linux2.2.16-gnu-glibc2.2 | yes | yes | 2.0
44 i686-pc-linux2.2.19-gnu-glibc2.2 | yes | yes | 2.0
45 i686-pc-linux2.4.7-gnu-glibc2.2 | yes | yes | 2.1
46 i586-pc-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.0
47 i686-pc-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.0
48 i386-pc-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.0
49 i686-pc-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.0
50 i586-pc-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0
51 i686-pc-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0
52 i686-pc-linux2.4.20-gnu-glibc2.2 | yes | yes | 2.0
53 i586-pc-linux2.2.19-gnu-glibc2.3 | yes | yes | 2.1
54 i686-pc-linux2.4.18-gnu-glibc2.3 | yes | yes | 1.97
55 i486-pc-linux2.4.20-gnu-glibc2.3 | yes | yes | 2.0
56 i586-pc-linux2.4.20-gnu-glibc2.3 | yes | yes | 2.0
57 i686-pc-linux2.4.20-gnu-glibc2.3 | yes | yes | 2.0
58 i686-pc-linux2.4.21-gnu-glibc2.3 | yes | yes | 2.0
59 i586-pc-linux2.4.22-gnu-glibc2.3 | yes | yes | 2.0
60 i386-pc-mingw32 | yes | yes | 2.2
61 i586-pc-mingw32 | yes | yes | 2.1
62 i686-pc-mingw32 | yes | yes | 1.96
63 i386-pc-solaris2.9 | yes | yes | 2.2
64 i386-pc-solaris2.11 | yes | yes | 2.2
65 i686-pc-win32-msvc6 | yes | yes | 1.96
66 i386-unknown-freebsd4.0 | yes | yes | 2.1
67 i386-unknown-freebsd4.0-gnu-glibc2.3 | yes | yes | 2.1
68 i386-unknown-freebsd4.6 | yes | yes | 1.95
69 i386-unknown-freebsd4.7 | yes | yes | 2.1
70 i386-unknown-freebsd4.8 | yes | yes | 2.1
71 i386-unknown-freebsd4.9 | yes | yes | 2.2
72 i386-unknown-freebsd4.10 | yes | yes | 2.2
73 i386-unknown-netbsdelf1.6 | no | no | 2.1
74 i386-unknown-netbsd | yes | no | 2.2
75 i386-unknown-openbsd3.2 | yes | yes | 2.1
76 i386-unknown-openbsd3.3 | yes | yes | 2.1
77 i386-unknown-openbsd3.4 | yes | yes | 2.2
78 i386-unknown-openbsd3.6 | yes | yes | 2.1
79 ia64-hp-hpux11.22 | yes | no | 2.1
80 ia64-hp-hpux11.23 | yes | no | 2.2
81 ia64-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.1
82 mips-sgi-irix6.5 | yes | yes | 2.2
83 nsr-tandem-nsk | no | no | 2.1
84 rs6000-ibm-aix3.2.5 | yes | no | 2.2
85 rs6000-ibm-aix4.2.0.0 | yes | yes | 2.2
86 rs6000-ibm-aix4.2.1.0 | yes | yes | 2.1
87 powerpc-ibm-aix4.3.2.0 | yes | yes | 2.2
88 powerpc-ibm-aix4.3.3.0 | yes | yes | 1.95
89 powerpc-ibm-aix5.1.0.0 | yes | yes | 2.2
90 powerpc-ibm-aix5.2.0.0 | yes | no | 2.1
91 powerpc-apple-darwin5.5 | yes | yes | 2.2
92 powerpc-apple-darwin6.8 | yes | yes | 2.2
93 powerpc-apple-darwin7.7.0 | yes | yes | 2.2
94 powerpc-apple-darwin7.8.0 | yes | yes | 2.2
95 powerpc-apple-darwin7.9.0 | yes | yes | 2.2
96 powerpc-apple-darwin8.1.0 | yes | yes | 2.2
97 powerpc-apple-darwin8.3.0 | yes | yes | 2.2
98 powerpc-apple-darwin8.4.0 | yes | yes | 2.2
99 powerpc-unknown-linux2.2.17-gnu-glibc2.1 | no | yes | 1.95
100 powerpc-unknown-linux2.2.17-gnu-glibc2.2 | yes | yes | 2.0.1
101 powerpc-unknown-linux2.4.28-gnu-glibc2.2 | yes | yes | 2.1
102 powerpc-unknown-linux2.4.26-gnu-glibc2.3 | yes | yes | 2.1
103 powerpc-unknown-linux2.6.10-gnu-glibc2.3 | yes | yes | 2.2
104 powerpc-unknown-netbsd2.0 | yes | no | 2.1
105 sparc-sun-solaris2.5.1 | yes | yes | 2.2
106 sparc-sun-solaris2.6 | yes | yes | 2.2
107 sparc-sun-solaris2.7 | yes | yes | 2.2
108 sparc-sun-solaris2.8 | yes | yes | 2.1
109 sparc-sun-solaris2.9 | yes | yes | 2.2
110 sparc64-unknown-linux2.2.18-gnu-glibc2.1 | no | no | 1.95
111 sparc64-unknown-openbsd3.6 | no | no | 2.2
112 x86_64-unknown-linux2.4.21-gnu-glibc2.2 | yes | yes | 2.1
113 x86_64-unknown-linux2.4.21-gnu-glibc2.3 | yes | yes | 2.1
114 x86_64-unknown-linux2.6.3-gnu-glibc2.3 | yes | yes | 2.1
115 x86_64-unknown-linux2.6.9-gnu-glibc2.3 | yes | yes | 2.2
116 amd64-portbld-freebsd5.4 | yes | yes | 2.2
117 amd64-portbld-freebsd6.0 | yes | yes | 2.2
120 On FreeBSD 5.2, libsigsegv works best if the /proc filesystem is mounted.
121 (It is not mounted by default.)
124 Porting to new platforms
125 ========================
127 On Unix systems, where faults are notified to the program through a signal
128 handler, the core routines in handler-unix.c can be used without
129 modifications. But they need the following bits of information. Each of
130 them is stored in a platform dependent file; the file is chosen in configure.
132 * List of signals that are sent when an invalid virtual memory address
133 is accessed, or when the stack overflows.
134 This is a file among signals-*.h.
135 configure chooses and sets the variable CFG_SIGNALS.
137 * What arguments are passed to a fault handler.
138 This is a file among fault-*.h.
139 configure chooses and sets the variable CFG_FAULT.
141 * How to determine the stack's virtual memory area.
142 This is a file among stackvma-*.c.
143 configure chooses and sets the variable CFG_STACKVMA.
145 * How to leave a signal handler that is executing on the alternate
147 This is a file among leave-*.c.
148 configure chooses and sets the variable CFG_LEAVE.
150 For each of these, the approach should be:
152 - Find a way to implement the needed functionality. This might involve
153 study of the system include files (in particular <signal.h> and
154 <ucontext.h>) and of the kernel sources.
155 For CFG_FAULT, the best starting point is to run the tests/sigsegv1
156 program with a breakpoint set at 'sigsegv_handler'.
158 - Add to configure.in a test whether your new code works. This will
159 help portability to platforms similar to yours.
160 Then regenerate the configure script (run "autoconf") and verify
161 that the test says "yes" on your platform.
163 - Create a platform dependent file (e.g. fault-<os>-<cpu>.h) and change
164 configure.in to choose this particular file when your test says "yes".
165 Then regenerate the configure script (run "autoconf").
167 - Verify that "make" and "make check" pass.
169 For non-Unix systems, a separate handler-<os>.c is likely to be needed.