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