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:
parent
1db673ca87
commit
7e270317cf
gcc
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user