From 46bfe5e30e858fe285762859370a6a90bd1c18ba Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Sat, 30 Oct 2004 20:22:54 +0000 Subject: [PATCH] invoke.texi (Darwin Options): Improve description of how the subtype is chosen. * doc/invoke.texi (Darwin Options): Improve description of how the subtype is chosen. From-SVN: r89897 --- gcc/ChangeLog | 5 +++++ gcc/doc/invoke.texi | 21 +++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be8f9e01252..ce4847610e3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-10-30 Geoffrey Keating + + * doc/invoke.texi (Darwin Options): Improve description of + how the subtype is chosen. + 2004-10-30 Roger Sayle PR middle-end/18096 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index a43fd7f270b..15e7316276d 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -7190,13 +7190,26 @@ system. FSF GCC on Darwin does not create ``fat'' object files; it will create an object file for the single architecture that it was built to target. Apple's GCC on Darwin does create ``fat'' files if multiple -@option{-arch} options are used. +@option{-arch} options are used; it does so by running the compiler or +linker multiple times and joining the results together with +@file{lipo}. -The subtype of the file created (@var{ppc7400} or @var{ppc970} or -@var{i686}) is determined by the flag that specifies the ISA -that GCC is targetting, @option{-mcpu} or @option{-march}. The +The subtype of the file created (like @samp{ppc7400} or @samp{ppc970} or +@samp{i686}) is determined by the flags that specify the ISA +that GCC is targetting, like @option{-mcpu} or @option{-march}. The @option{-force_cpusubtype_ALL} option can be used to override this. +The Darwin tools vary in their behaviour when presented with an ISA +mismatch. The assembler, @file{as}, will only permit instructions to +be used that are valid for the subtype of the file it is generating, +so you cannot put 64-bit instructions in an @samp{ppc750} object file. +The linker for shared libraries, @file{/usr/bin/libtool}, will fail +and print an error if asked to create a shared library with a less +restrictive subtype than its input files (for instance, trying to put +a @samp{ppc970} object file in a @samp{ppc7400} library). The linker +for executables, @file{ld}, will quietly give the executable the most +restrictive subtype of any of its input files. + @table @gcctabopt @item -F@var{dir} @opindex F