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.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
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.