2 | _ \| |_| |__ ``A good magician never reveals
3 | |_) | __| '_ \ his secret; the unbelievable trick
4 | __/| |_| | | | becomes simple and obvious once it is
5 |_| \__|_| |_| explained. So too with UNIX.''
7 GNU Pth - The GNU Portable Threads
12 SUCCESSFULLY TESTED PLATFORMS
14 The Pth package was successfully tested on the following platforms
15 (and should automatically adjust to other platforms, of course):
17 __PLATFORM_ID_________________________ __MACHINE_CONTEXT__ _STACK_ _VERSION_
18 i386-unknown-freebsd6.1 | mcsc/sc/mc | down | 2.0.6
19 i386-unknown-freebsd5.3 | mcsc/sc/mc | down | 2.0.3
20 i386-unknown-freebsd4.10 | sjlj/ssjlj/sas | down | 2.0.1
21 i386-unknown-freebsd4.7 | sjlj/ssjlj/sas | down | 2.0b0
22 i386-pc-solaris2.8 | mcsc/sc/mc | down | 1.4.1
23 i686-gnu-linux-gnu2.2glibc2.2 | sjlj/ssjlj/sas | down | 1.4.1
24 i386-pc-sysv4.2uw2.1.2 | mcsc/sc/mc | down | 1.4.1
25 alpha-portbld-freebsd4.6.2 | sjlj/ssjlj/sas | down | 1.4.1
26 i586-pc-freebsd4.6 | sjlj/ssjlj/sas | down | 1.4.1
27 m68k--netbsdelf | sjlj/ssjlj/sas | down | 1.4.1
28 alpha-unknown-freebsd4.6 | sjlj/ssjlj/sas | down | 1.4.1
29 powerpc-apple-darwin6.1 | sjlj/ssjlj/sas | down | 1.4.1
30 powerpc-apple-netbsd1.5.2 | sjlj/ssjlj/sas | down | 1.4.1
31 i386-pclocal-interix | sjlj/sjljisc/none | down | 1.4.1
32 powerpc-ibm-aix4.3.1.0 | mcsc/sc/mc | down | 1.4.1
33 alpha-unknown-netbsd1.5.3. | sjlj/ssjlj/sas | down | 1.4.1
34 alphaev56-dec-osf4.0a | mcsc/sc/mc | down | 1.4.1
35 i686-redhat-linux-gnu2.2glibc1 | sjlj/ssjlj/sas | down | 1.4.1
36 i386-portbld-freebsd4.4 | sjlj/ssjlj/sas | down | 1.4.1
37 i686-pc-sco3.2v5.0.6 | sjlj/ssjlj/sas | down | 1.4.1
38 i386-portbld-freebsd4.5 | sjlj/ssjlj/sas | down | 1.4.1
39 i386-portbld-freebsd4.6 | sjlj/ssjlj/sas | down | 1.4.1
40 i686-pc-freebsd4.6 | sjlj/ssjlj/sas | down | 1.4.1
41 i686-pc-freebsd4.5 | sjlj/ssjlj/sas | down | 1.4.1
42 i386-portbld-freebsd4.7 | sjlj/ssjlj/sas | down | 1.4.1
43 rs6000-ibm-aix5.1.0.0 | mcsc/sc/mc | down | 1.4.1
44 i386-unknown-gnu0.2 | sjlj/sjljlx/none | down | 1.4.1
45 sparc--netbsdelf | sjlj/ssjlj/sas | down | 1.4.1
46 sparc-sun-solaris2.9 | mcsc/sc/mc | down | 1.4.1
47 sparc-unknown-netbsd1.5.2 | sjlj/ssjlj/sas | down | 1.4.1
48 sparc-unknown-netbsd1.6 | sjlj/ssjlj/sas | down | 1.4.1
49 i586-pc-freebsd4.5 | sjlj/ssjlj/sas | down | 1.4.1
50 vax--netbsdelf | sjlj/ssjlj/sas | down | 1.4.1
51 i386-unknown-netbsd1.5.2 | sjlj/ssjlj/sas | down | 1.4.1
52 i386-unknown-netbsd1.5ZA | sjlj/ssjlj/sas | down | 1.4.1
53 i386-unknown-netbsd1.6 | sjlj/ssjlj/sas | down | 1.4.1
54 i386-unknown-netbsd1.6. | sjlj/ssjlj/sas | down | 1.4.1
55 i386--netbsdelf | sjlj/ssjlj/sas | down | 1.4.1
56 i686-debian-linux-gnu2.4glibc2.1 | sjlj/ssjlj/sas | down | 1.4.1
57 i586-debian-linux-gnu2.2glibs2.2 | mcsc/sc/mc | down | 1.4.1
58 i586-gnu-linux-gnu2.4glibc2.2 | mcsc/sc/mc | down | 1.4.1
59 i586-sco-sysv5 | mcsc/sc/mc | down | 1.4.1
60 i586-redhat-linux-gnu2.4glibc2.3 | mcsc/sc/mc | down | 1.4.1
61 i386-pc-freebsd4.0-gnu | mcsc/sc/mc | down | 1.4.1
62 i386-pc-freebsd4.3 | sjlj/ssjlj/sas | down | 1.4.1
63 i386-pc-freebsd4.5 | sjlj/ssjlj/sas | down | 1.4.1
64 i686-suse-linux-gnu2.4glibc2.2 | mcsc/sc/mc | down | 1.4.1
65 m68k--netbsd | sjlj/ssjlj/sas | down | 1.4.1
66 i686-gnu-linux-gnu2.4glibc2.2 | mcsc/sc/mc | down | 1.4.1
67 i386-pc-sco3.2v5.0.6 | sjlj/ssjlj/sas | down | 1.4.1
68 i386--freebsd4.4 | sjlj/ssjlj/sas | down | 1.4.0
69 i386--freebsd4.5 | sjlj/ssjlj/sas | down | 1.4.0
70 powerpc-yellowdog-linux-gnu2.4glibc2. | sjlj/ssjlj/sas | down | 1.4.0
71 i586-pc-cygwin | sjlj/sjljw32/none | down | 1.4.0
72 i586-redhat-linux-gnu2.4glibc2.2 | mcsc/sc/mc | down | 1.4.0
73 mips-debian-linux-gnu2.4glibc2.2 | sjlj/ssjlj/sas | down | 1.4.0
74 i386-portbld-freebsd4.3 | sjlj/ssjlj/sas | down | 1.4.0
75 powerpc-yellowdog-linux-gnu2.4glibc2. | sjlj/ssjlj/sas | down | 1.4.0
76 powerpc-apple-darwin6.0 | sjlj/ssjlj/sas | down | 1.4.0
77 i686-debian-linux-gnu2.2glibc2.2 | mcsc/sc/mc | down | 1.4.0
78 i386-unknown-openbsd3.0 | sjlj/ssjlj/sas | down | 1.4.0
79 sparc-unknown-openbsd2.9 | sjlj/ssjlj/sas | down | 1.4.0
80 arm-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.4.0
81 i686-debian-linux-gnu2.4glibc2.2 | mcsc/sc/mc | down | 1.4.0
82 i586-debian-linux-gnu2.2glibc2.2 | sjlj/ssjlj/sas | down | 1.4.0
83 i686-pc-freebsd4.3 | sjlj/ssjlj/sas | down | 1.4a4
84 i686-pc-freebsd4.1 | sjlj/ssjlj/sas | down | 1.4a3
85 i386-unknown-netbsd1.4.2 | sjlj/ssjlj/sas | down | 1.4a2
86 i686-pc-freebsd3.5 | sjlj/ssjlj/sas | down | 1.4a2
87 alpha-unknown-netbsd1.5.1 | sjlj/ssjlj/sas | down | 1.4a2
88 hppa2.0w-hp-hpux11.00 | mcsc/sc/mc | up | 1.4a1
89 i586-redhat-linux-gnu2.2glibc1 | sjlj/ssjlj/sas | down | 1.3.7
90 i686-redhat-linux-gnu2.4glibc2.2 | sjlj/ssjlj/sas | down | 1.3.7
91 i686-redhat-linux-gnu2.2glibc2.2 | sjlj/ssjlj/sas | down | 1.3.7
92 i586-gnu-linux-gnu2.4glibc2.1 | sjlj/ssjlj/sas | down | 1.3.7
93 i386-unknown-openbsd2.7 | sjlj/ssjlj/sas | down | 1.3.7
94 i586-suse-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3.7
95 i386-unknown-openbsd2.8 | sjlj/ssjlj/sas | down | 1.3.7
96 i486-gnu-linux-gnu2.0glibc1 | sjlj/sjljlx/none | down | 1.3.7
97 m68k-apple-netbsd1.3.3 | sjlj/ssjlj/sas | down | 1.3.7
98 mips-compaq-nonstopux | sjlj/ssjlj/sas | down | 1.3.7
99 mips-dec-netbsd1.5 | sjlj/ssjlj/sas | down | 1.3.7
100 hppa1.1-hp-hpux10.10 | sjlj/ssjlj/sas | up | 1.3.7
101 i586-pc-freebsd4.1 | sjlj/ssjlj/sas | down | 1.3.7
102 i686-pc-freebsd4.2 | sjlj/ssjlj/sas | down | 1.3.7
103 mips-sgi-irix6.3 | mcsc/sc/mc | down | 1.3.7
104 i686-pc-freebsd4.1.1 | sjlj/ssjlj/sas | down | 1.3.7
105 powerpc-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.7
106 i386-pc-bsdi4.1 | sjlj/ssjlj/sas | down | 1.3.7
107 i386-pc-freebsd3.2 | sjlj/ssjlj/sas | down | 1.3.7
108 rs6000-ibm-aix4.2.0.0 | mcsc/sc/mc | down | 1.3.7
109 sparc--netbsd | sjlj/ssjlj/sas | down | 1.3.7
110 i586-redhat-linux-gnu2.2glibc2.2 | sjlj/ssjlj/sas | down | 1.3.7
111 i686-pc-cygwin | sjlj/sjljw32/none | down | 1.3.6
112 i586-debian-linux-gnu2.4glibc2.1 | sjlj/ssjlj/sas | down | 1.3.6
113 powerpc-apple-netbsd1.4.2 | sjlj/ssjlj/sas | down | 1.3.5
114 alpha-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
115 alpha-unknown-freebsd5.0 | sjlj/ssjlj/sas | down | 1.3.5
116 i486-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
117 powerpc-debian-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
118 powerpc-ibm-aix4.3.3.0 | mcsc/sc/mc | down | 1.3.5
119 i686-pc-sco3.2v5.0.4 | sjlj/ssjlj/sas | down | 1.3.5
120 alphaev6-dec-osf4.0f | mcsc/sc/mc | down | 1.3.5
121 i686-gnu-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
122 rs6000-ibm-aix4.1.5.0 | sjlj/ssjlj/ss | down | 1.3.5
123 rs6000-ibm-aix4.3.3.0 | mcsc/sc/mc | down | 1.3.5
124 i686-pc-freebsd3.2 | sjlj/ssjlj/sas | down | 1.3.5
125 i386-pc-interix | sjlj/sjljisc/none | down | 1.3.5
126 i386-unknown-netbsd1.4T | sjlj/ssjlj/sas | down | 1.3.5
127 i386-pc-sysv5uw7.1.0 | mcsc/sc/mc | down | 1.3.5
128 m68k-cbm-amigaos | sjlj/ssjlj/ss | down | 1.3.5
129 i686-gnu-linux-gnu2.0glibc1 | sjlj/sjljlx/none | down | 1.3.5
130 sparc64-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
131 mipsel-unknown-netbsd1.4.2 | sjlj/ssjlj/sas | down | 1.3.5
132 i686-gnu-linux-gnu2.2glibc1 | sjlj/sjljlx/none | down | 1.3.5
133 i686-debian-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
134 alphaev56-dec-osf4.0e | mcsc/sc/mc | down | 1.3.4
135 i586-pc-freebsd5.0 | sjlj/ssjlj/sas | down | 1.3.4
136 i686-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.3
137 i686-va-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.3
138 hppa1.1-hp-hpux10.01 | sjlj/ssjlj/ss | up | 1.3.3
139 sparc-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.3
140 i386-pc-bsdi4.0 | sjlj/ssjlj/sas | down | 1.3.3
141 i586-pc-freebsd3.1 | sjlj/ssjlj/sas | down | 1.3.3
142 i586-gnu-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3.3
143 alpha-dec-osf4.0e | mcsc/sc/mc | down | 1.3.3
144 i386-pc-sysv5uw7.1.1 | mcsc/sc/mc | down | 1.3.3
145 i586-debian-linux-gnu2.3glibc2.1 | sjlj/ssjlj/sas | down | 1.3.3
146 powerpc-ibm-aix4.1.3.0 | sjlj/ssjlj/ss | down | 1.3.3
147 powerpc-apple-macosX | sjlj/ssjlj/sas | down | 1.3.2
148 i586-suse-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.2
149 powerpc-unknown-netbsd | sjlj/ssjlj/sas | down | 1.3.2
150 sparc-sun-solaris2.8 | mcsc/sc/mc | down | 1.3.2
151 alpha-unknown-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.3.2
152 i686-suse-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.2
153 i586-pc-sco3.2v5.0.2 | sjlj/ssjlj/sas | down | 1.3.2
154 i586-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.1
155 i586-gnu-linux-gnu2.0glibc1 | sjlj/sjljlx/none | down | 1.3.1
156 i686-suse-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3.1
157 hppa1.1-stratus-sysv4 | mcsc/sc/mc | up | 1.3.1
158 i586-gnu-linux-gnu2.2glibc1 | sjlj/sjljlx/none | down | 1.3.1
159 i686-pc-freebsd4.0 | sjlj/ssjlj/sas | down | 1.3.0
160 i686-slackware-linux-gnu | sjlj/ssjlj/sas | down | 1.3.0
161 alpha-unknown-freebsd4.0 | sjlj/ssjlj/sas | down | 1.3.0
162 hppa1.1-hp-hpux10.20 | sjlj/ssjlj/sas | up | 1.3.0
163 hppa2.0-hp-hpux10.20 | sjlj/ssjlj/sas | up | 1.3.0
164 i386-pc-sysv4.2uw2.1.3 | mcsc/sc/mc | down | 1.3.0
165 i386-pc-sysv5uw7 | mcsc/sc/mc | down | 1.3.0
166 sparc-sun-solaris2.6 | mcsc/sc/mc | down | 1.3.0
167 i386-unknown-netbsd1.4 | sjlj/ssjlj/sas | down | 1.3.0
168 i386-unknown-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.3.0
169 i586-debian-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3.0
170 i586-gnu-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.0
171 i586-redhat-linux-gnu2.0glibc2.0 | sjlj/sjljlx/none | down | 1.3.0
172 i686-pc-freebsd3.1 | sjlj/ssjlj/sas | down | 1.3.0
173 i686-pc-freebsd3.4 | sjlj/ssjlj/sas | down | 1.3.0
174 i586-pc-freebsd4.0 | sjlj/ssjlj/sas | down | 1.3b2
175 i586-pc-freebsd3.3 | sjlj/ssjlj/sas | down | 1.3a5
176 m68k-cbm-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.3a5
177 i686-redhat-linux-gnu2.3glibc2.0 | sjlj/sjljlx/none | down | 1.3a4
178 i386--netbsd | sjlj/ssjlj/sas | down | 1.3a2
179 i386-pc-freebsd3.4 | sjlj/ssjlj/sas | down | 1.3a2
180 i586-redhat-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3a2
181 i686-redhat-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3a1
182 i386-redhat-linux-gnu | sjlj/sjljlx/none | down | 1.3a1
183 sparc-unknown-linux-gnu | sjlj/ssjlj/sas | down | 1.2.3
184 hppa1.1-hp-hpux11.00 | mcsc/sc/mc | up | 1.2.3
185 mips-sni-sysv4 | mcsc/sc/mc | down | 1.2.3
186 i586-pc-freebsd3.4 | sjlj/ssjlj/sas | down | 1.2.2
187 mips-sgi-irix5.3 | sjlj/ssjlj/sas | down | 1.2.2
188 i386-pc-sco3.2v5.0.5 | sjlj/ssjlj/sas | down | 1.2.2
189 powerpc-apple-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.2.1
190 i586-ncr-sysv4.3.03 | mcsc/sc/mc | down | 1.2.1
191 i486-pc-linux-gnulibc1 | sjlj/sjljlx/none | down | 1.2.1
192 i486-pc-linux-gnu | sjlj/sjljlx/none | down | 1.2.1
193 i386-pc-freebsd3.3 | sjlj/ssjlj/sas | down | 1.2.1
194 i486-pc-freebsd3.3 | sjlj/ssjlj/sas | down | 1.2.1
195 powerpc-ibm-aix4.3.2.0 | mcsc/sc/mc | down | 1.2.1
196 m68k-unknown-amigaos | sjlj/ssjlj/ss | down | 1.2.1
197 i386-unknown-openbsd2.6 | sjlj/ssjlj/sas | down | 1.2.1
198 hppa2.0n-hp-hpux11.00 | mcsc/sc/mc | up | 1.2.1
199 i686-pc-sco3.2v5.0.5 | sjlj/ssjlj/sas | down | 1.2.1
200 alpha-dec-osf5.0 | mcsc/sc/mc | down | 1.2.1
201 alpha-dec-osf4.0f | mcsc/sc/mc | down | 1.2.1
202 i586-pc-linux-gnu | sjlj/sjljlx/none | down | 1.2.1
203 i586-pc-freebsd3.2 | sjlj/ssjlj/sas | down | 1.2.0
204 i586-pc-linux-gnulibc1 | sjlj/sjljlx/none | down | 1.2.0
205 m68k-hp-hpux9.10 | sjlj/ssjlj/ss | down | 1.2.0
206 alphaev56-dec-osf4.0f | mcsc/sc/mc | down | 1.2.0
207 sparc-sun-solaris2.5.1 | mcsc/sc/mc | down | 1.2.0
208 sparc-sun-solaris2.7 | mcsc/sc/mc | down | 1.2.0
209 powerpc-unknown-linux-gnu | sjls/ssjlj/sas | down | 1.2.0
210 sparc-unknown-openbsd2.6 | sjlj/ssjlj/sas | down | 1.2.0
211 alphaev6-unknown-linux-gnu | sjlj/ssjlj/sas | down | 1.2.0
212 alphaev6-dec-osf5.0 | mcsc/sc/mc | down | 1.2.0
213 i686-pc-linux-gnu | sjlj/sjljlx/none | down | 1.2.0
214 i686-pc-freebsd3.3 | sjlj/ssjlj/sas | down | 1.2.0
215 i586-pc-sco3.2v5.0.4 | sjlj/ssjlj/sas | down | 1.2.0
216 i686-pc-linux-gnulibc1 | sjlj/sjljlx/none | down | 1.2.0
217 alphaev56-unknown-linux-gnu | sjlj/ssjlj/sas | down | 1.2.0
218 armv4l-unknown-linux-gnu | sjlj/ssjlj/sas | down | 1.2b8
219 sparc-unknown-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.2b8
220 alphaev56-dec-osf4.0d | mcsc/sc/mc | down | 1.2b6
221 m68k-apple-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.2b5
222 i386-unknown-openbsd2.5 | sjlj/ssjlj/sas | down | 1.2b5
223 powerpc-apple-rhapsody5.5 | sjlj/ssjlj/sas | down | 1.2b3
224 i386-pc-isc4.0 | sjlj/sjljisc/none | down | 1.2b2
225 mips-sgi-irix6.5 | mcsc/sc/mc | down | 1.2b1
226 i386-pc-sysv4.2uw2.1 | mcsc/sc/mc | down | 1.1.6
227 sparc-sun-sunos4.1.4 | sjlj/ssjlj/ss | down | 1.1.6
228 powerpc-ibm-aix4.1.4.0 | mcsc/sc/mc | down | 1.1.6
229 powerpc-ibm-aix4.2.1.0 | mcsc/sc/mc | down | 1.1.6
230 rs6000-ibm-aix4.3.2.0 | mcsc/sc/mc | down | 1.1.5
231 rs6000-ibm-aix4.2.1.0 | mcsc/sc/mc | down | 1.1.5
232 i386-unknown-netbsd1.3.3 | sjlj/ssjlj/sas | down | 1.1.5
233 powerpc-ibm-aix4.1.5.0 | mcsc/sc/mc | down | 1.1.5
234 sparc-sun-sunos4.1.3_U1 | sjlj/ssjlj/ss | down | 1.1.4
235 sparc-sun-solaris2.5 | mcsc/sc/mc | down | 1.1.4
236 alpha-unknown-netbsd1.3.3 | sjlj/ssjlj/sas | down | 1.1.4
238 HINTS FOR PORTING TO NEW PLATFORMS
240 In case you're not able to use Pth on a new and esoteric platform,
241 here are a few hints.
243 Pth has only one part which perhaps has to be ported to new platforms: the
244 machine context initialization, i.e. the function pth_mctx_set() in
245 pth_mctx.c. The exercise is to write a pth_mctx_set() function which
246 initializes a `jmp_buf' (see setjmp(3)) with a given function and stack, so
247 when the next longjmp(3) is done on this `jmp_buf', the function starts
248 executing on the given stack.
250 By default, Pth uses a very tricky sigstack/sigaltstack() based approach for
251 establishing this `jmp_buf' which is mostly portable to all major Unix
252 platforms which support the involved POSIX functions (see rse-pmt.ps for a
253 detailed description of the trick). So the chance is very high that this
254 approach also works for forthcoming platforms and no real porting is
257 When this approach should not work (for instance brain-dead achient
258 GNU/Linux versions have a dummy sigstack/sigaltstack(), so we've no chance
259 this way), then you've to provide an alternative implementation. This
260 usually is done be fiddling around with the ingredients of a `jmp_buf'
261 structure. For this look inside your /usr/include/setjmp.h (plus files it
262 includes) and there especially for things like _pc or JB_PC (the program
263 counter) and _sp or JB_SP (the stack pointer). Then write an alternative
264 pth_mctx_set() function in pth_mctx.c.
266 Currently, as mentioned, Pth requires such an alternative only under
267 GNU/Linux where sigstack/sigaltstack() are dummy functions. Look at the
268 GNU/Linux pth_mctx_set() variant in pth_mctx.c to get an impression what
269 type of `jmp_buf' fiddling you perhaps have to do for esoteric platforms.
270 Don't be confused by the fact that such specialized pth_mctx_set() functions
271 are just a few lines long while the standard function is very large. That's
272 all just needed for maximum portability. The goal nevertheless only is to
273 initialize a `jmp_buf' with PC and SP. That's all...
275 Additionally see the INSTALL document for the --enable-mctx-XXX options.
276 These can be used to easily try out mctx combinations on a platform, too.