aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2003-01-19 13:04:24 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2003-01-19 13:04:24 +0000
commit3bd6d4c458a197683ce3f82b884ad1546b7d67de (patch)
tree1c9527057e11cd9aeab8e1192678a236184395a6 /gcc/doc
parente9f13564bb2cd1147517bcee06e2de0aefeb4af1 (diff)
downloadgcc-3bd6d4c458a197683ce3f82b884ad1546b7d67de.zip
gcc-3bd6d4c458a197683ce3f82b884ad1546b7d67de.tar.gz
gcc-3bd6d4c458a197683ce3f82b884ad1546b7d67de.tar.bz2
config.gcc (mips64*-*-linux*): Added.
* config.gcc (mips64*-*-linux*): Added. * config/mips/linux64.h, config/mips/t-linux64: New file. * config/mips/iris6.h (MIPS_TFMODE_FORMAT): Define. * config/mips/mips.c (override_options): Use it. * config/mips/mips.h (TARGET_SWITCHES): Added... (SUBTARGET_TARGET_SWITCHES): New, empty by default. * Makefile.in (SPECS): New. (STAGESTUFF, specs, mostlyclean, install-common): Use it. * gcc.c (process_command): Move self-spec processing past spec file loading. * doc/tm.texi (DRIVER_SELF_SPECS): Document the change. * doc/fragments.texi (MULTILIB_EXTRA_OPTS): Document need for CRTSTUFF_T_CFLAGS. (SPECS): Document. * doc/invoke.texi (-mabi-fake-default): Document. From-SVN: r61481
Diffstat (limited to 'gcc/doc')
-rw-r--r--gcc/doc/fragments.texi21
-rw-r--r--gcc/doc/invoke.texi33
-rw-r--r--gcc/doc/tm.texi11
3 files changed, 57 insertions, 8 deletions
diff --git a/gcc/doc/fragments.texi b/gcc/doc/fragments.texi
index f9ef3d2..7987455 100644
--- a/gcc/doc/fragments.texi
+++ b/gcc/doc/fragments.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -147,7 +147,24 @@ at the same time. Therefore @code{MULTILIB_EXCEPTIONS} is set to
Sometimes it is desirable that when building multiple versions of
@file{libgcc.a} certain options should always be passed on to the
compiler. In that case, set @code{MULTILIB_EXTRA_OPTS} to be the list
-of options to be used for all builds.
+of options to be used for all builds. If you set this, you should
+probably set @code{CRTSTUFF_T_CFLAGS} to a dash followed by it.
+
+@findex SPECS
+@item SPECS
+Unfortunately, setting @code{MULTILIB_EXTRA_OPTS} is not enough, since
+it does not affect the build of target libraries, at least not the
+build of the default multilib. One possible work-around is to use
+@code{DRIVER_SELF_SPECS} to bring options from the @file{specs} file
+as if they had been passed in the compiler driver command line.
+However, you don't want to be adding these options after the toolchain
+is installed, so you can instead tweak the @file{specs} file that will
+be used during the toolchain build, while you still install the
+original, built-in @file{specs}. The trick is to set @code{SPECS} to
+some other filename (say @file{specs.install}), that will then be
+created out of the built-in specs, and introduce a @file{Makefile}
+rule to generate the @file{specs} file that's going to be used at
+build time out of your @file{specs.install}.
@end table
@node Host Fragment
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 34b597a..ebf3407 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -491,7 +491,7 @@ in the following sections.
-mrnames -msoft-float @gol
-m4650 -msingle-float -mmad @gol
-mstats -EL -EB -G @var{num} -nocpp @gol
--mabi=32 -mabi=n32 -mabi=64 -mabi=eabi @gol
+-mabi=32 -mabi=n32 -mabi=64 -mabi=eabi -mabi-fake-default @gol
-mfix7000 -mno-crt0 -mflush-func=@var{func} -mno-flush-func @gol
-mbranch-likely -mno-branch-likely}
@@ -7465,6 +7465,37 @@ selects the one defined by MIPS@. Both these ABIs have
64-bit code when you select a 64-bit architecture, but you
can use @option{-mgp32} to get 32-bit code instead.
+@item -mabi-fake-default
+@opindex mabi-fake-default
+You don't want to know what this option does. No, really. I mean
+it. Move on to the next option.
+
+What? You're still here? Oh, well@enddots{} Ok, here's the deal. GCC
+wants the default set of options to get the root of the multilib tree,
+and the shared library SONAMEs without any multilib-indicating
+suffixes. This is not convenience for @samp{mips64-linux-gnu}, since
+we want to default to the N32 ABI, while still being binary-compatible
+with @samp{mips-linux-gnu} if you stick to the O32 ABI@. Being
+binary-compatible means shared libraries should have the same SONAMEs,
+and libraries should live in the same location. Having O32 libraries
+in a sub-directory named say @file{o32} is not acceptable.
+
+So we trick GCC into believing that O32 is the default ABI, except
+that we override the default with some internal command-line
+processing magic. Problem is, if we stopped at that, and you then
+created a multilib-aware package that used the output of @command{gcc
+-print-multi-lib} to decide which multilibs to build, and how, and
+you'd find yourself in an awkward situation when you found out that
+some of the options listed ended up mapping to the same multilib, and
+none of your libraries was actually built for the multilib that
+@option{-print-multi-lib} claims to be the default. So we added this
+option that disables the default switcher, falling back to GCC's
+original notion of the default library. Confused yet?
+
+For short: don't ever use this option, unless you find it in the list
+of additional options to be used when building for multilibs, in the
+output of @option{gcc -print-multi-lib}.
+
@item -mmips-as
@opindex mmips-as
Generate code for the MIPS assembler, and invoke @file{mips-tfile} to
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 45f38f0..bc88333 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -168,11 +168,12 @@ multilibs. Example nonsensical definition, where @code{-malt-abi},
A list of specs for the driver itself. It should be a suitable
initializer for an array of strings, with no surrounding braces.
-The driver applies these specs to its own command line before choosing
-the multilib directory or running any subcommands. It applies them in
-the order given, so each spec can depend on the options added by
-earlier ones. It is also possible to remove options using
-@samp{%<@var{option}} in the usual way.
+The driver applies these specs to its own command line between loading
+default @file{specs} files (but not command-line specified ones) and
+choosing the multilib directory or running any subcommands. It
+applies them in the order given, so each spec can depend on the
+options added by earlier ones. It is also possible to remove options
+using @samp{%<@var{option}} in the usual way.
This macro can be useful when a port has several interdependent target
options. It provides a way of standardizing the command line so