Up Prev Next
From: "W dot Phillip Moore" <wpm at ms dot com>
Date: Dec 18 1997 8:36PM
>>>>> "Michael" == Michael Peppler writes:
Michael> Basically you can't mix -32 and -n32 code.
This is true, and the reason that you can't convert perl5 to build
with -n32 until you have -n32 version of *all* the external libraries
you depend on.
Of course, SGI gives you n32 versions of all the system libraries, but
you will need them for everything else as well (eg. libgdbm.a, etc).
The only vendor libraries this was an issue with are the Sybase
libraries; everything else we just compiled ourselves.
Michael> So you must either succeed in building perl with the -32
Michael> switch, or bug Sybase until they send you a version of
Michael> OpenCLient that was built with -n32.
A version of the Sybase Open Client 11.x libraries compiled -n32 is in
fact available from Sybase, but I don't know if its a 'supported'
production product. The code we have came from Sybase Engineering, I
beleive. Contact your Sybase sales rep to request these. You do at
least know they exist.
We currently run perl5.00404 on IRIX 6.2 and IRIX 6.4 compiled with
'cc -n32 -mips4 -O3'. Compiling with 'cc -32', we found that perl
would frequently core dump in _lmalloc(), and that problem went away
with the -n32 compile, plus rumor has it that this version performs
More importantly, SGI is abandoning the -32 format going forward, so
you'll get better supportfrom them if you use -n32, plus the
performance is better.
As for -mips4, we have no hardware with CPUs which require mips2 or
mips3 instructions, so we made the decision to use -mips4, and reap
the benefits of avoiding the older, slower binaries produced which run
on 6 year old machines.
For those of you confused by this (I sure was when I first took this
on), the MIPS CPU instruction sets have changed over time, with mips4
being the latest. By default, the compiles produce code for either
mips2 or mips3 (depends on other command line options, and also what
CPU you happen to be compiling on, which is annoying), and the newer
CPUs can interpret the older instruction set, but at a performance
In a large environment, where you have lots of different kinds of SGI
hardware, building one binary to run on all platforms means compiling
for the lowest common denominator, which is why the default is -mips2.