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 alphaev56-dec-osf4.0f | yes | yes | 2.4
9 alpha-dec-osf4.0g | yes | yes | 2.1
10 alpha-dec-osf5.1 | yes | yes | 2.1
11 alphaev67-dec-osf5.1 | yes | yes | 2.2
12 alpha-unknown-freebsd4.8 | yes | yes | 2.1
13 alpha-portbld-freebsd5.5 | yes | yes | 2.3
14 alphaev67-unknown-linux2.4.17-gnu-glibc2.1 | yes | yes | 1.95
15 alphaev6-unknown-linux2.2.19-gnu-glibc2.2 | yes | yes | 2.1
16 alphaev67-unknown-linux2.2.20-gnu-glibc2.2 | yes | yes | 2.1
17 alphaev67-unknown-linux2.4.4-gnu-glibc2.2 | yes | yes | 2.1
18 alphaev6-unknown-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.1
19 alphaev67-unknown-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.1
20 alphaev6-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.1
21 alphaev67-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.1
22 alpha-unknown-linux2.4.19-gnu-glibc2.3 | yes | yes | 2.4
23 alphaev68-unknown-linux2.6.11-gnu-glibc2.3 | yes | yes | 2.2
24 alpha-unknown-openbsd3.7 | yes | yes | 2.2
25 alpha-unknown-netbsd1.6 | yes | yes | 2.1
26 armv4l-unknown-linux2.4.0-gnu-glibc2.2 | no | yes | 2.1
27 armv4l-unknown-linux2.4.3-gnu-glibc2.2 | yes | yes | 2.1
28 armv4l-unknown-linux2.4.9-gnu-glibc2.2 | no | yes | 2.0.1
29 armv5tel-unknown-linux2.4.20-gnu-glibc2.2 | yes | yes | 2.2
30 armv6l-unknown-linux2.6.18-gnu-glibc2.3 | yes | yes | 2.4
31 arm-angstrom-linux2.6.23-gnueabi-glibc2.4 | yes | yes | 2.5
32 hppa1.1-hp-hpux11.00 | yes | yes | 2.1
33 hppa2.0-hp-hpux10.20 | yes | yes | 2.2
34 hppa2.0w-hp-hpux11.00 | yes | yes | 2.2
35 hppa2.0w-hp-hpux11.11 | yes | yes | 2.4
36 hppa-unknown-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0.1
37 hppa64-unknown-linux2.4.17-gnu-glibc2.2 | yes | yes | 2.1
38 hppa2.0-unknown-linux2.6.20.1-gnu-glibc2.3 | yes | no | 2.4
39 i586-pc-beos | no | yes | 2.1
40 i686-pc-cygwin | yes | yes | 2.02
41 i686-pc-cygwin | yes | yes | 2.4
42 i386-apple-darwin8.6.1 | yes | yes | 2.3
43 i686-apple-darwin8.6.1 | yes | yes | 2.3
44 i386-apple-darwin8.8.1 | yes | yes | 2.4
45 i386-apple-darwin8.8.2 | yes | yes | 2.4
46 i386-apple-darwin8.8.3 | yes | yes | 2.4
47 i386-apple-darwin8.9.1 | yes | yes | 2.4
48 i386-apple-darwin8.10.1 | yes | yes | 2.4
49 i386-apple-darwin8.11.1 | yes | yes | 2.5
50 i386-apple-darwin9.0.0 | yes | yes | 2.5
51 i386-apple-darwin9.1.0 | yes | yes | 2.5
52 i386-apple-darwin9.2.2 | yes | yes | 2.5
53 i386-apple-darwin9.4.0 | yes | yes | 2.5
54 i586-pc-linux2.2.14-gnu-glibc2.1 | yes | yes | 2.1
55 i686-pc-linux2.2.14-gnu-glibc2.1 | yes | yes | 2.0
56 i686-pc-linux2.2.19-gnu-glibc2.1 | yes | yes | 1.95
57 i486-pc-linux2.2.21-gnu-glibc2.1 | yes | yes | 2.0
58 i586-pc-linux2.4.18-gnu-glibc2.1 | yes | yes | 2.0
59 i686-pc-linux2.4.19-gnu-glibc2.1 | yes | yes | 2.2
60 i686-pc-linux2.2.16-gnu-glibc2.2 | yes | yes | 2.0
61 i686-pc-linux2.2.19-gnu-glibc2.2 | yes | yes | 2.0
62 i686-pc-linux2.4.7-gnu-glibc2.2 | yes | yes | 2.1
63 i586-pc-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.0
64 i686-pc-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.0
65 i386-pc-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.0
66 i686-pc-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.0
67 i586-pc-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0
68 i686-pc-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0
69 i686-pc-linux2.4.20-gnu-glibc2.2 | yes | yes | 2.0
70 i586-pc-linux2.2.19-gnu-glibc2.3 | yes | yes | 2.1
71 i686-pc-linux2.4.18-gnu-glibc2.3 | yes | yes | 1.97
72 i486-pc-linux2.4.20-gnu-glibc2.3 | yes | yes | 2.0
73 i586-pc-linux2.4.20-gnu-glibc2.3 | yes | yes | 2.0
74 i686-pc-linux2.4.20-gnu-glibc2.3 | yes | yes | 2.0
75 i686-pc-linux2.4.21-gnu-glibc2.3 | yes | yes | 2.0
76 i586-pc-linux2.4.22-gnu-glibc2.3 | yes | yes | 2.0
77 i386-pc-mingw32 | yes | yes | 2.4
78 i586-pc-mingw32 | yes | yes | 2.1
79 i686-pc-mingw32 | yes | yes | 2.5
80 i386-pc-os2-emx | no | no | 2.5
81 i386-pc-solaris2.9 | yes | yes | 2.2
82 i386-pc-solaris2.10 | yes | yes | 2.4
83 i386-pc-solaris2.11 | yes | yes | 2.2
84 i686-pc-win32-msvc6 | yes | yes | 1.96
85 i386-unknown-freebsd4.0 | yes | yes | 2.1
86 i386-unknown-freebsd4.0-gnu-glibc2.3 | yes | yes | 2.1
87 i386-unknown-freebsd4.6 | yes | yes | 1.95
88 i386-unknown-freebsd4.7 | yes | yes | 2.1
89 i386-unknown-freebsd4.8 | yes | yes | 2.1
90 i386-unknown-freebsd4.9 | yes | yes | 2.2
91 i386-unknown-freebsd4.10 | yes | yes | 2.2
92 i386-unknown-freebsd5.0 | yes | yes | 2.4
93 i386-portbld-freebsd6.0 | yes | yes | 2.3
94 i686-unknown-kfreebsd6.2-gnu-glibc2.6 | yes | yes | 2.5+
95 i386-unknown-netbsdelf1.6 | no | no | 2.4
96 i386-unknown-netbsdelf2.0.2 | yes | yes | 2.4
97 i386-unknown-netbsdelf3.0 | yes | yes | 2.4
98 i386-unknown-netbsd | yes | no | 2.2
99 i386-unknown-openbsd3.2 | yes | yes | 2.3
100 i386-unknown-openbsd3.3 | yes | yes | 2.1
101 i386-unknown-openbsd3.4 | yes | yes | 2.2
102 i386-unknown-openbsd3.6 | yes | yes | 2.1
103 i386-unknown-openbsd3.8 | yes | yes | 2.4
104 i386-unknown-openbsd3.9 | yes | yes | 2.4
105 i386-unknown-openbsd4.0 | yes | yes | 2.5
106 ia64-portbld-freebsd7.0 | yes | no | 2.3
107 ia64-hp-hpux11.22 | yes | no | 2.1
108 ia64-hp-hpux11.23 | yes | no | 2.2
109 ia64-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.4
110 ia64-unknown-linux2.6.9-gnu-glibc2.3 | yes | no | 2.4
111 ia64-unknown-linux2.6.16.27-gnu-glibc2.4 | yes | no | 2.4
112 mips-sgi-irix6.5 | yes | yes | 2.4
113 mips-unknown-linux2.4.27-gnu-glibc2.3 | yes | yes | 2.4
114 nsr-tandem-nsk | no | no | 2.1
115 rs6000-ibm-aix3.2.5 | yes | no | 2.2
116 rs6000-ibm-aix4.2.0.0 | yes | yes | 2.2
117 rs6000-ibm-aix4.2.1.0 | yes | yes | 2.1
118 powerpc-ibm-aix4.3.2.0 | yes | yes | 2.4
119 powerpc-ibm-aix4.3.3.0 | yes | yes | 1.95
120 powerpc-ibm-aix5.1.0.0 | yes | yes | 2.5
121 powerpc-ibm-aix5.2.0.0 | yes | yes | 2.5
122 powerpc-ibm-aix5.3.0.0 | yes | yes | 2.5
123 powerpc-apple-darwin5.5 | yes | yes | 2.2
124 powerpc-apple-darwin6.0 | yes | yes | 2.4
125 powerpc-apple-darwin6.8 | yes | yes | 2.2
126 powerpc-apple-darwin7.7.0 | yes | yes | 2.2
127 powerpc-apple-darwin7.8.0 | yes | yes | 2.2
128 powerpc-apple-darwin7.9.0 | yes | yes | 2.4
129 powerpc-apple-darwin8.1.0 | yes | yes | 2.2
130 powerpc-apple-darwin8.3.0 | yes | yes | 2.2
131 powerpc-apple-darwin8.4.0 | yes | yes | 2.2
132 powerpc-apple-darwin8.7.0 | yes | yes | 2.4
133 powerpc-apple-darwin8.8.0 | yes | yes | 2.4
134 powerpc-apple-darwin8.9.0 | yes | yes | 2.4
135 powerpc-apple-darwin8.10.0 | yes | yes | 2.5
136 powerpc-apple-darwin8.11.0 | yes | yes | 2.5
137 powerpc-apple-darwin8.11.1 | yes | yes | 2.5
138 powerpc-apple-darwin9.2.0 | yes | yes | 2.5
139 powerpc-unknown-linux2.2.17-gnu-glibc2.1 | no | yes | 1.95
140 powerpc-unknown-linux2.2.17-gnu-glibc2.2 | yes | yes | 2.0.1
141 powerpc-unknown-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.4
142 powerpc-unknown-linux2.4.28-gnu-glibc2.2 | yes | yes | 2.1
143 powerpc-unknown-linux2.4.26-gnu-glibc2.3 | yes | yes | 2.1
144 powerpc-unknown-linux2.6.10-gnu-glibc2.3 | yes | yes | 2.2
145 powerpc-unknown-linux2.6.16-gnu-glibc2.3 | yes | yes | 2.4
146 powerpc-unknown-netbsd2.0 | yes | no | 2.1
147 powerpc-unknown-netbsd3.99.23 | yes | yes | 2.4
148 powerpc-unknown-openbsd4.0 | yes | yes | 2.4
149 powerpc-unknown-openbsd4.1 | yes | yes | 2.4
150 powerpc64-unknown-linux2.6.5-gnu-glibc2.3 | yes | yes | 2.4
151 s390x-ibm-linux2.6.16.46-gnu-glibc2.4 | no | yes | 2.5
152 sparc-unknown-linux2.4.32-gnu-glibc2.3 | yes | no | 2.1
153 sparc-unknown-openbsd3.9 | yes | no | 2.4
154 sparc-sun-solaris2.5.1 | yes | yes | 2.2
155 sparc-sun-solaris2.6 | yes | yes | 2.2
156 sparc-sun-solaris2.7 | yes | yes | 2.4
157 sparc-sun-solaris2.8 | yes | yes | 2.5
158 sparc-sun-solaris2.9 | yes | yes | 2.4
159 sparc-sun-solaris2.10 | yes | yes | 2.5
160 sparc-sun-solaris2.11 | yes | yes | 2.4
161 sparc64-unknown-linux2.2.18-gnu-glibc2.1 | no | no | 1.95
162 sparc64-unknown-linux2.4.28-gnu-glibc2.3 | yes | no | 2.4
163 sparc64-unknown-openbsd3.6 | no | no | 2.2
164 x86_64-unknown-kfreebsd6.2-gnu-glibc2.6 | yes | yes | 2.5+
165 x86_64-unknown-linux2.4.21-gnu-glibc2.2 | yes | yes | 2.1
166 x86_64-unknown-linux2.4.21-gnu-glibc2.3 | yes | yes | 2.1
167 x86_64-unknown-linux2.6.3-gnu-glibc2.3 | yes | yes | 2.1
168 x86_64-unknown-linux2.6.9-gnu-glibc2.3 | yes | yes | 2.4
169 x86_64-unknown-linux2.6.11.4-gnu-glibc2.3 | yes | yes | 2.4
170 x86_64-unknown-linux2.6.13-gnu-glibc2.3 | yes | yes | 2.4
171 x86_64-unknown-linux2.6.16-gnu-glibc2.4 | yes | yes | 2.4
172 x86_64-unknown-linux2.6.16.13-gnu-glibc2.4 | yes | yes | 2.4
173 x86_64-unknown-linux2.6.16.21-gnu-glibc2.4 | yes | yes | 2.4
174 x86_64-unknown-linux2.6.17-gnu-glibc2.4 | yes | yes | 2.4
175 x86_64-unknown-linux2.6.20-gnu-glibc2.5 | yes | yes | 2.4
176 x86_64-unknown-linux2.6.20.1-gnu-glibc2.5 | yes | yes | 2.4
177 x86_64-unknown-linux2.6.21-gnu-glibc2.6 | yes | yes | 2.4
178 x86_64-unknown-netbsd3.0 | yes | yes | 2.4
179 x86_64-unknown-netbsd4.99.72 | yes | yes | 2.5
180 amd64-portbld-freebsd5.4 | yes | yes | 2.2
181 amd64-portbld-freebsd6.0 | yes | yes | 2.3
182 amd64-portbld-freebsd7.0 | yes | yes | 2.3
185 On FreeBSD 5.2, libsigsegv works best if the /proc filesystem is mounted.
186 (It is not mounted by default.)
189 Porting to new platforms
190 ========================
192 On Unix systems, where faults are notified to the program through a signal
193 handler, the core routines in handler-unix.c can be used without
194 modifications. But they need the following bits of information. Each of
195 them is stored in a platform dependent file; the file is chosen in configure.
197 * List of signals that are sent when an invalid virtual memory address
198 is accessed, or when the stack overflows.
199 This is a file among signals-*.h.
200 configure chooses and sets the variable CFG_SIGNALS.
202 * What arguments are passed to a fault handler.
203 This is a file among fault-*.h.
204 configure chooses and sets the variable CFG_FAULT.
206 * How to determine the stack's virtual memory area.
207 This is a file among stackvma-*.c.
208 configure chooses and sets the variable CFG_STACKVMA.
210 * How to leave a signal handler that is executing on the alternate
212 This is a file among leave-*.c.
213 configure chooses and sets the variable CFG_LEAVE.
215 For each of these, the approach should be:
217 - Find a way to implement the needed functionality. This might involve
218 study of the system include files (in particular <signal.h> and
219 <ucontext.h>) and of the kernel sources.
220 For CFG_FAULT, the best starting point is to run the tests/sigsegv1
221 program with a breakpoint set at 'sigsegv_handler'.
223 - Add to configure.in a test whether your new code works. This will
224 help portability to platforms similar to yours.
225 Then regenerate the configure script (run "autoconf") and verify
226 that the test says "yes" on your platform.
228 - Create a platform dependent file (e.g. fault-<os>-<cpu>.h) and change
229 configure.in to choose this particular file when your test says "yes".
230 Then regenerate the configure script (run "autoconf").
232 - Verify that "make" and "make check" pass.
234 For non-Unix systems, a separate handler-<os>.c is likely to be needed.