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