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