2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-03-20 17:40:46 +08:00

install.texi (Specific, [...]): Reflect working IRIX 5 port.

* doc/install.texi (Specific, mips-sgi-irix5): Reflect working
	IRIX 5 port.
	Remove -save-temps workaround, handled automatically.
	Require GNU binutils 2.15 for debugging.
	Remove SGI make warnings since GNU make is now required.
	(Specific, mips-sgi-irix6): Some markup fixes.
	Describe MIPSpro C problems and workarounds.
	Mention working O32 ABI support.
	Recommend GNU as 2.15 for O32 with debugging.
	Remove description of fixed structure pass/return bug.

From-SVN: r80772
This commit is contained in:
Rainer Orth 2004-04-16 22:32:38 +00:00 committed by Rainer Orth
parent 1db673ca87
commit 7e270317cf
2 changed files with 41 additions and 71 deletions

@ -1,3 +1,16 @@
2004-04-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi (Specific, mips-sgi-irix5): Reflect working
IRIX 5 port.
Remove -save-temps workaround, handled automatically.
Require GNU binutils 2.15 for debugging.
Remove SGI make warnings since GNU make is now required.
(Specific, mips-sgi-irix6): Some markup fixes.
Describe MIPSpro C problems and workarounds.
Mention working O32 ABI support.
Recommend GNU as 2.15 for O32 with debugging.
Remove description of fixed structure pass/return bug.
2004-04-16 DJ Delorie <dj@redhat.com>
* sdbout.c (sdbout_one_type): Use TYPE_VALUES for enums, not

@ -3156,52 +3156,27 @@ if you use the GNU assembler and linker.
@end html
@heading @anchor{mips-sgi-irix5}mips-sgi-irix5
This configuration has considerable problems, which will be fixed in a
future release.
In order to compile GCC on an SGI running IRIX 5, the ``compiler_dev.hdr''
subsystem must be installed from the IDO CD-ROM supplied by Silicon
Graphics. It is also available for download from
@uref{http://www.sgi.com/developers/devtools/apis/ido.html,,http://www.sgi.com/developers/devtools/apis/ido.html}.
@samp{make compare} may fail on version 5 of IRIX unless you add
@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
assembler input file is stored in the object file, and that makes
comparison fail if it differs between the @code{stage1} and
@code{stage2} compilations. The option @option{-save-temps} forces a
fixed name to be used for the assembler input file, instead of a
randomly chosen name in @file{/tmp}. Do not add @option{-save-temps}
unless the comparisons fail without that option. If you do you
@option{-save-temps}, you will have to manually delete the @samp{.i} and
@samp{.s} files after each series of compilations.
In order to compile GCC on an SGI running IRIX 5, the @samp{compiler_dev.hdr}
subsystem must be installed from the IDO CD-ROM supplied by SGI@.
It is also available for download from
@uref{http://www.sgi.com/developers/devtools/apis/ido.html}.
If you use the MIPS C compiler to bootstrap, it may be necessary
to increase its table size for switch statements with the
@option{-Wf,-XNg1500} option. If you use the @option{-O2}
optimization option, you also need to use @option{-Olimit 3000}.
To enable debugging under IRIX 5, you must use GNU @command{as} 2.11.2
or later,
and use the @option{--with-gnu-as} configure option when configuring GCC.
GNU @command{as} is distributed as part of the binutils package.
When using release 2.11.2, you need to apply a patch
@uref{http://sources.redhat.com/ml/binutils/2001-07/msg00352.html,,http://sources.redhat.com/ml/binutils/2001-07/msg00352.html}
which will be included in the next release of binutils.
When building GCC, the build process loops rebuilding @command{cc1} over
and over again. This happens on @samp{mips-sgi-irix5.2}, and possibly
other platforms. It has been reported that this is a known bug in the
@command{make} shipped with IRIX 5.2. We recommend you use GNU
@command{make} instead of the vendor supplied @command{make} program;
however, you may have success with @command{smake} on IRIX 5.2 if you do
not have GNU @command{make} available.
To enable debugging under IRIX 5, you must use GNU binutils 2.15 or
later, and use the @option{--with-gnu-as} and @option{--with-gnu-ld}
@command{configure} options when configuring GCC@. You need to use GNU
@command{ar} and @command{nm}, also distributed with GNU binutils.
@html
<hr />
@end html
@heading @anchor{mips-sgi-irix6}mips-sgi-irix6
If you are using IRIX @command{cc} as your bootstrap compiler, you must
If you are using SGI's MIPSpro @command{cc} as your bootstrap compiler, you must
ensure that the N32 ABI is in use. To test this, compile a simple C
file with @command{cc} and then run @command{file} on the
resulting object file. The output should look like:
@ -3224,15 +3199,20 @@ test.o: ELF 64-bit MSB @dots{}
then your version of @command{cc} uses the O32 or N64 ABI by default. You
should set the environment variable @env{CC} to @samp{cc -n32}
before configuring GCC@.
before configuring GCC@. SGI's MIPSpro 7.2 assembler may misassemble
parts of the compiler, causing bootstrap failures. MIPSpro 7.3 is
known to work. MIPSpro C 7.4 may cause bootstrap failures, too, due
to a bug when inlining @code{memcmp}. Either add @code{-U__INLINE_INTRINSICS}
to the @env{CC} environment variable as a workaround or upgrade to
MIPSpro C 7.4.1m.
If you want the resulting @command{gcc} to run on old 32-bit systems
with the MIPS R4400 CPU, you need to ensure that only code for the mips3
with the MIPS R4400 CPU, you need to ensure that only code for the @samp{mips3}
instruction set architecture (ISA) is generated. While GCC 3.x does
this correctly, both GCC 2.95 and SGI's MIPSpro @command{cc} may change
the ISA depending on the machine where GCC is built. Using one of them
as the bootstrap compiler may result in mips4 code, which won't run at
all on mips3-only systems. For the test program above, you should see:
as the bootstrap compiler may result in @samp{mips4} code, which won't run at
all on @samp{mips3}-only systems. For the test program above, you should see:
@smallexample
test.o: ELF N32 MSB mips-3 @dots{}
@ -3247,52 +3227,29 @@ test.o: ELF N32 MSB mips-4 @dots{}
instead, you should set the environment variable @env{CC} to @samp{cc
-n32 -mips3} or @samp{gcc -mips3} respectively before configuring GCC@.
GCC on IRIX 6 is usually built to support both the N32 and N64 ABIs. If
you build GCC on a system that doesn't have the N64 libraries installed,
GCC on IRIX 6 is usually built to support the N32, O32 and N64 ABIs. If
you build GCC on a system that doesn't have the N64 libraries installed
or cannot run 64-bit binaries,
you need to configure with @option{--disable-multilib} so GCC doesn't
try to use them. Look for @file{/usr/lib64/libc.so.1} to see if you
try to use them. This will disable building the O32 libraries, too.
Look for @file{/usr/lib64/libc.so.1} to see if you
have the 64-bit libraries installed.
You must @emph{not} use GNU @command{as} (which isn't built anyway as of
binutils 2.11.2) on IRIX 6 platforms; doing so will only cause problems.
GCC does not currently support generating O32 ABI binaries in the
@samp{mips-sgi-irix6} configurations. It is possible to create a GCC
with O32 ABI only support by configuring it for the @samp{mips-sgi-irix5}
target and using a patched GNU @command{as} 2.11.2 as documented in the
@uref{#mips-sgi-irix5,,@samp{mips-sgi-irix5}} section above. Using the
native assembler requires patches to GCC which will be included in a
future release. It is
expected that O32 ABI support will be available again in a future release.
To enable debugging for the O32 ABI, you must use GNU @command{as} from
GNU binutils 2.15 or later. You may also use GNU @command{ld}, but
this is not required and currently causes some problems with Ada.
The @option{--enable-threads} option doesn't currently work, a patch is
in preparation for a future release. The @option{--enable-libgcj}
option is disabled by default: IRIX 6 uses a very low default limit
(20480) for the command line length. Although libtool contains a
(20480) for the command line length. Although @command{libtool} contains a
workaround for this problem, at least the N64 @samp{libgcj} is known not
to build despite this, running into an internal error of the native
@command{ld}. A sure fix is to increase this limit (@samp{ncargs}) to
its maximum of 262144 bytes. If you have root access, you can use the
@command{systune} command to do this.
GCC does not correctly pass/return structures which are
smaller than 16 bytes and which are not 8 bytes. The problem is very
involved and difficult to fix. It affects a number of other targets also,
but IRIX 6 is affected the most, because it is a 64-bit target, and 4 byte
structures are common. The exact problem is that structures are being padded
at the wrong end, e.g.@: a 4 byte structure is loaded into the lower 4 bytes
of the register when it should be loaded into the upper 4 bytes of the
register.
GCC is consistent with itself, but not consistent with the SGI C compiler
(and the SGI supplied runtime libraries), so the only failures that can
happen are when there are library functions that take/return such
structures. There are very few such library functions. Currently this
is known to affect @code{inet_ntoa}, @code{inet_lnaof},
@code{inet_netof}, @code{inet_makeaddr}, and @code{semctl}. Until the
bug is fixed, GCC contains workarounds for the known affected functions.
See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more
See @uref{http://freeware.sgi.com/} for more
information about using GCC on IRIX platforms.
@html