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