Commit | Line | Data |
---|---|---|
ffe25ee3 B |
1 | # vim: syntax=pod |
2 | ||
469e7be4 JH |
3 | If you read this file _as_is_, just ignore the funny characters you |
4 | see. It is written in the POD format (see pod/perlpod.pod) which is | |
5 | specifically designed to be readable as is. | |
6 | ||
7 | =head1 NAME | |
8 | ||
de2902a6 | 9 | perlirix - Perl version 5 on Irix systems |
469e7be4 JH |
10 | |
11 | =head1 DESCRIPTION | |
12 | ||
13 | This document describes various features of Irix that will affect how Perl | |
14 | version 5 (hereafter just Perl) is compiled and/or runs. | |
15 | ||
3df9be30 | 16 | =head2 Building 32-bit Perl in Irix |
469e7be4 JH |
17 | |
18 | Use | |
19 | ||
20 | sh Configure -Dcc='cc -n32' | |
21 | ||
22 | to compile Perl 32-bit. Don't bother with -n32 unless you have 7.1 | |
23 | or later compilers (use cc -version to check). | |
24 | ||
25 | (Building 'cc -n32' is the default.) | |
26 | ||
3df9be30 | 27 | =head2 Building 64-bit Perl in Irix |
469e7be4 JH |
28 | |
29 | Use | |
d6fd60d6 | 30 | |
538426ad | 31 | sh Configure -Dcc='cc -64' -Duse64bitint |
469e7be4 | 32 | |
538426ad JH |
33 | This requires require a 64-bit MIPS CPU (R8000, R10000, ...) |
34 | ||
35 | You can also use | |
36 | ||
37 | sh Configure -Dcc='cc -64' -Duse64bitall | |
38 | ||
39 | but that makes no difference compared with the -Duse64bitint because | |
40 | of the C<cc -64>. | |
41 | ||
42 | You can also do | |
43 | ||
44 | sh Configure -Dcc='cc -n32' -Duse64bitint | |
45 | ||
46 | to use long longs for the 64-bit integer type, in case you don't | |
47 | have a 64-bit CPU. | |
48 | ||
49 | If you are using gcc, just | |
50 | ||
51 | sh Configure -Dcc=gcc -Duse64bitint | |
52 | ||
53 | should be enough, the Configure should automatically probe for the | |
54 | correct 64-bit settings. | |
469e7be4 | 55 | |
3df9be30 | 56 | =head2 About Compiler Versions of Irix |
469e7be4 | 57 | |
3df9be30 | 58 | Some Irix cc versions, e.g. 7.3.1.1m (try cc -version) have been known |
469e7be4 JH |
59 | to have issues (coredumps) when compiling perl.c. If you've used |
60 | -OPT:fast_io=ON and this happens, try removing it. If that fails, or | |
61 | you didn't use that, then try adjusting other optimization options | |
f1460a66 | 62 | (-LNO, -INLINE, -O3 to -O2, et cetera). The compiler bug has been |
469e7be4 JH |
63 | reported to SGI. (Allen Smith <easmith@beatrice.rutgers.edu>) |
64 | ||
3df9be30 | 65 | =head2 Linker Problems in Irix |
469e7be4 JH |
66 | |
67 | If you get complaints about so_locations then search in the file | |
68 | hints/irix_6.sh for "lddflags" and do the suggested adjustments. | |
69 | (David Billinghurst <David.Billinghurst@riotinto.com.au>) | |
70 | ||
3df9be30 | 71 | =head2 Malloc in Irix |
469e7be4 JH |
72 | |
73 | Do not try to use Perl's malloc, this will lead into very mysterious | |
74 | errors (especially with -Duse64bitall). | |
75 | ||
538426ad | 76 | =head2 Building with threads in Irix |
469e7be4 | 77 | |
741e2d40 | 78 | Run Configure with -Duseithreads which will configure Perl with |
294f22c5 | 79 | the Perl 5.8.0 "interpreter threads", see L<threads>. |
741e2d40 | 80 | |
294f22c5 MB |
81 | For Irix 6.2 with perl threads, you have to have the following |
82 | patches installed: | |
469e7be4 JH |
83 | |
84 | 1404 Irix 6.2 Posix 1003.1b man pages | |
3df9be30 | 85 | 1645 Irix 6.2 & 6.3 POSIX header file updates |
469e7be4 JH |
86 | 2000 Irix 6.2 Posix 1003.1b support modules |
87 | 2254 Pthread library fixes | |
88 | 2401 6.2 all platform kernel rollup | |
89 | ||
538426ad | 90 | B<IMPORTANT>: Without patch 2401, a kernel bug in Irix 6.2 will cause |
3df9be30 | 91 | your machine to panic and crash when running threaded perl. Irix 6.3 |
469e7be4 JH |
92 | and later are okay. |
93 | ||
741e2d40 JH |
94 | Thanks to Hannu Napari <Hannu.Napari@hut.fi> for the IRIX |
95 | pthreads patches information. | |
96 | ||
271230c2 JH |
97 | =head2 Irix 5.3 |
98 | ||
641ea345 JH |
99 | While running Configure and when building, you are likely to get |
100 | quite a few of these warnings: | |
101 | ||
102 | ld: | |
103 | The shared object /usr/lib/libm.so did not resolve any symbols. | |
104 | You may want to remove it from your link line. | |
105 | ||
106 | Ignore them: in IRIX 5.3 there is no way to quieten ld about this. | |
107 | ||
108 | During compilation you will see this warning from toke.c: | |
109 | ||
110 | uopt: Warning: Perl_yylex: this procedure not optimized because it | |
e46aa1dd KW |
111 | exceeds size threshold; to optimize this procedure, use -Olimit |
112 | option with value >= 4252. | |
641ea345 JH |
113 | |
114 | Ignore the warning. | |
115 | ||
271230c2 JH |
116 | In IRIX 5.3 and with Perl 5.8.1 (Perl 5.8.0 didn't compile in IRIX 5.3) |
117 | the following failures are known. | |
118 | ||
5c80c583 | 119 | Failed Test Stat Wstat Total Fail Failed|Failing List |
e46aa1dd | 120 | ----------------------------------------------------------------------- |
271230c2 | 121 | ../ext/List/Util/t/shuffle.t 0 139 ?? ?? % ?? |
641ea345 | 122 | ../lib/Math/Trig.t 255 65280 29 12 41.38% 24-29 |
271230c2 | 123 | ../lib/sort.t 0 138 119 72 60.50% 48-119 |
641ea345 | 124 | 56 tests and 474 subtests skipped. |
e46aa1dd KW |
125 | Failed 3/811 test scripts, 99.63% okay. 78/75813 subtests failed, |
126 | 99.90% okay. | |
271230c2 | 127 | |
641ea345 JH |
128 | They are suspected to be compiler errors (at least the shuffle.t |
129 | failure is known from some IRIX 6 setups) and math library errors | |
130 | (the Trig.t failure), but since IRIX 5 is long since end-of-lifed, | |
131 | further fixes for the IRIX are unlikely. If you can get gcc for 5.3, | |
271230c2 | 132 | you could try that, too, since gcc in IRIX 6 is a known workaround for |
641ea345 | 133 | at least the shuffle.t and sort.t failures. |
271230c2 | 134 | |
469e7be4 JH |
135 | =head1 AUTHOR |
136 | ||
137 | Jarkko Hietaniemi <jhi@iki.fi> | |
138 | ||
8166b4e0 DB |
139 | Please report any errors, updates, or suggestions to |
140 | L<https://github.com/Perl/perl5/issues>. | |
469e7be4 | 141 |