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