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