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