summaryrefslogtreecommitdiffstats
path: root/upstream/debian-unstable/man1/perlirix.1
blob: e293fd578d52166fa681f7602300e501374c516c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
.\" -*- mode: troff; coding: utf-8 -*-
.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
.ie n \{\
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds C`
.    ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
.    if \nF \{\
.        de IX
.        tm Index:\\$1\t\\n%\t"\\$2"
..
.        if !\nF==2 \{\
.            nr % 0
.            nr F 2
.        \}
.    \}
.\}
.rr rF
.\" ========================================================================
.\"
.IX Title "PERLIRIX 1"
.TH PERLIRIX 1 2024-01-12 "perl v5.38.2" "Perl Programmers Reference Guide"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH NAME
perlirix \- Perl version 5 on Irix systems
.SH DESCRIPTION
.IX Header "DESCRIPTION"
This document describes various features of Irix that will affect how Perl
version 5 (hereafter just Perl) is compiled and/or runs.
.SS "Building 32\-bit Perl in Irix"
.IX Subsection "Building 32-bit Perl in Irix"
Use
.PP
.Vb 1
\&        sh Configure \-Dcc=\*(Aqcc \-n32\*(Aq
.Ve
.PP
to compile Perl 32\-bit.  Don't bother with \-n32 unless you have 7.1
or later compilers (use cc \-version to check).
.PP
(Building 'cc \-n32' is the default.)
.SS "Building 64\-bit Perl in Irix"
.IX Subsection "Building 64-bit Perl in Irix"
Use
.PP
.Vb 1
\&        sh Configure \-Dcc=\*(Aqcc \-64\*(Aq \-Duse64bitint
.Ve
.PP
This requires require a 64\-bit MIPS CPU (R8000, R10000, ...)
.PP
You can also use
.PP
.Vb 1
\&        sh Configure \-Dcc=\*(Aqcc \-64\*(Aq \-Duse64bitall
.Ve
.PP
but that makes no difference compared with the \-Duse64bitint because
of the \f(CW\*(C`cc \-64\*(C'\fR.
.PP
You can also do
.PP
.Vb 1
\&        sh Configure \-Dcc=\*(Aqcc \-n32\*(Aq \-Duse64bitint
.Ve
.PP
to use long longs for the 64\-bit integer type, in case you don't
have a 64\-bit CPU.
.PP
If you are using gcc, just
.PP
.Vb 1
\&        sh Configure \-Dcc=gcc \-Duse64bitint
.Ve
.PP
should be enough, the Configure should automatically probe for the
correct 64\-bit settings.
.SS "About Compiler Versions of Irix"
.IX Subsection "About Compiler Versions of Irix"
Some Irix cc versions, e.g. 7.3.1.1m (try cc \-version) have been known
to have issues (coredumps) when compiling perl.c.  If you've used
\&\-OPT:fast_io=ON and this happens, try removing it.  If that fails, or
you didn't use that, then try adjusting other optimization options
(\-LNO, \-INLINE, \-O3 to \-O2, et cetera).  The compiler bug has been
reported to SGI.  (Allen Smith <easmith@beatrice.rutgers.edu>)
.SS "Linker Problems in Irix"
.IX Subsection "Linker Problems in Irix"
If you get complaints about so_locations then search in the file
hints/irix_6.sh for "lddflags" and do the suggested adjustments.
(David Billinghurst <David.Billinghurst@riotinto.com.au>)
.SS "Malloc in Irix"
.IX Subsection "Malloc in Irix"
Do not try to use Perl's malloc, this will lead into very mysterious
errors (especially with \-Duse64bitall).
.SS "Building with threads in Irix"
.IX Subsection "Building with threads in Irix"
Run Configure with \-Duseithreads which will configure Perl with
the Perl 5.8.0 "interpreter threads", see threads.
.PP
For Irix 6.2 with perl threads, you have to have the following
patches installed:
.PP
.Vb 5
\&        1404 Irix 6.2 Posix 1003.1b man pages
\&        1645 Irix 6.2 & 6.3 POSIX header file updates
\&        2000 Irix 6.2 Posix 1003.1b support modules
\&        2254 Pthread library fixes
\&        2401 6.2 all platform kernel rollup
.Ve
.PP
\&\fBIMPORTANT\fR: Without patch 2401, a kernel bug in Irix 6.2 will cause
your machine to panic and crash when running threaded perl.  Irix 6.3
and later are okay.
.PP
.Vb 2
\&    Thanks to Hannu Napari <Hannu.Napari@hut.fi> for the IRIX
\&    pthreads patches information.
.Ve
.SS "Irix 5.3"
.IX Subsection "Irix 5.3"
While running Configure and when building, you are likely to get
quite a few of these warnings:
.PP
.Vb 3
\&  ld:
\&  The shared object /usr/lib/libm.so did not resolve any symbols.
\&        You may want to remove it from your link line.
.Ve
.PP
Ignore them: in IRIX 5.3 there is no way to quieten ld about this.
.PP
During compilation you will see this warning from toke.c:
.PP
.Vb 3
\&  uopt: Warning: Perl_yylex: this procedure not optimized because it
\&        exceeds size threshold; to optimize this procedure, use \-Olimit
\&        option with value >= 4252.
.Ve
.PP
Ignore the warning.
.PP
In IRIX 5.3 and with Perl 5.8.1 (Perl 5.8.0 didn't compile in IRIX 5.3)
the following failures are known.
.PP
.Vb 8
\& Failed Test                  Stat Wstat Total Fail  Failed|Failing List
\& \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
\& ../ext/List/Util/t/shuffle.t    0   139    ??   ??       %  ??
\& ../lib/Math/Trig.t            255 65280    29   12  41.38%  24\-29
\& ../lib/sort.t                   0   138   119   72  60.50%  48\-119
\& 56 tests and 474 subtests skipped.
\& Failed 3/811 test scripts, 99.63% okay. 78/75813 subtests failed,
\&    99.90% okay.
.Ve
.PP
They are suspected to be compiler errors (at least the shuffle.t
failure is known from some IRIX 6 setups) and math library errors
(the Trig.t failure), but since IRIX 5 is long since end-of-lifed,
further fixes for the IRIX are unlikely.  If you can get gcc for 5.3,
you could try that, too, since gcc in IRIX 6 is a known workaround for
at least the shuffle.t and sort.t failures.
.SH AUTHOR
.IX Header "AUTHOR"
Jarkko Hietaniemi <jhi@iki.fi>
.PP
Please report any errors, updates, or suggestions to
<https://github.com/Perl/perl5/issues>.