public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* -dynamiclib documentation, etc., for Darwin
@ 2004-10-30  2:33 Geoffrey Keating
  2004-10-30  3:57 ` James A. Morrison
  0 siblings, 1 reply; 4+ messages in thread
From: Geoffrey Keating @ 2004-10-30  2:33 UTC (permalink / raw)
  To: gcc-patches


This patch explains what -dynamiclib does, and a few other options
that were previously documented as 'see man ld(1)', but aren't
actually linker-specific options.  It also makes the compiler actually
do what's documented in a consistent way.

Will commit when bootstrap & test on powerpc-darwin and a cross
build of i686-darwin finish successfully.

-- 
- Geoffrey Keating <geoffk@apple.com>

===File ~/patches/gcc-darwin-dynamiclib.patch===============
2004-10-29  Geoffrey Keating  <geoffk@apple.com>

	* config/i386/darwin.h (ASM_SPEC): Simplify.
	(SUBTARGET_EXTRA_SPECS): Add darwin_subarch spec.
	* config/rs6000/darwin.h (DARWIN_SUBARCH_SPEC): New.
	(SUBTARGET_EXTRA_SPECS): Add darwin_subarch spec.
	* config/darwin.h (LINK_COMMAND_SPEC): Don't pass -arch here.
	(LINK_SPEC): Do pass -arch here.  Handle -force_cpusubtype_ALL
	in all cases.  Pass the right -arch or -arch_only based on -mcpu.
	(ASM_SPEC): Handle -force_cpusubtype_ALL.
	* doc/invoke.texi (Darwin Options): Improve documentation for
	Darwin linker (and libtool) switches.

Index: config/darwin.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/darwin.h,v
retrieving revision 1.102
diff -u -p -u -p -r1.102 darwin.h
--- config/darwin.h	27 Oct 2004 23:01:56 -0000	1.102
+++ config/darwin.h	30 Oct 2004 01:13:35 -0000
@@ -219,8 +219,6 @@ extern const char *darwin_fix_and_contin
 #define LINK_COMMAND_SPEC "\
 %{!fdump=*:%{!fsyntax-only:%{!precomp:%{!c:%{!M:%{!MM:%{!E:%{!S:\
     %{!Zdynamiclib:%(linker)}%{Zdynamiclib:/usr/bin/libtool} \
-    %{!Zdynamiclib:-arch %(darwin_arch)} \
-    %{Zdynamiclib:-arch_only %(darwin_arch)} \
     %l %X %{d} %{s} %{t} %{Z} \
     %{!Zdynamiclib:%{A} %{e*} %{m} %{N} %{n} %{r} %{u*} %{x} %{z}} \
     %{@:-o %f%u.out}%{!@:%{o*}%{!o:-o a.out}} \
@@ -240,13 +238,14 @@ extern const char *darwin_fix_and_contin
   "%{static}%{!static:-dynamic} \
    %{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)}\
    %{!Zdynamiclib: \
+     %{Zforce_cpusubtype_ALL:-arch %(darwin_arch) -force_cpusubtype_ALL} \
+     %{!Zforce_cpusubtype_ALL:-arch %(darwin_subarch)} \
      %{Zbundle:-bundle} \
      %{Zbundle_loader*:-bundle_loader %*} \
      %{client_name*} \
      %{compatibility_version*:%e-compatibility_version only allowed with -dynamiclib\
 } \
      %{current_version*:%e-current_version only allowed with -dynamiclib} \
-     %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \
      %{Zforce_flat_namespace:-force_flat_namespace} \
      %{Zinstall_name*:%e-install_name only allowed with -dynamiclib} \
      %{keep_private_externs} \
@@ -258,7 +257,8 @@ extern const char *darwin_fix_and_contin
      %{client_name*:%e-client_name not allowed with -dynamiclib} \
      %{compatibility_version*} \
      %{current_version*} \
-     %{Zforce_cpusubtype_ALL:%e-force_cpusubtype_ALL not allowed with -dynamiclib} \
+     %{Zforce_cpusubtype_ALL:-arch_only %(darwin_arch)} \
+     %{!Zforce_cpusubtype_ALL: -arch_only %(darwin_subarch)} \
      %{Zforce_flat_namespace:%e-force_flat_namespace not allowed with -dynamiclib} \
      %{Zinstall_name*:-install_name %*} \
      %{keep_private_externs:%e-keep_private_externs not allowed with -dynamiclib} \
@@ -332,7 +332,8 @@ extern const char *darwin_fix_and_contin
 /* #define ENDFILE_SPEC "" */
 
 /* Default Darwin ASM_SPEC, very simple.  */
-#define ASM_SPEC "-arch %(darwin_arch)"
+#define ASM_SPEC "-arch %(darwin_arch) \
+  %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL}"
 
 /* We use Dbx symbol format.  */
 
Index: config/i386/darwin.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/darwin.h,v
retrieving revision 1.21
diff -u -p -u -p -r1.21 darwin.h
--- config/i386/darwin.h	26 Oct 2004 07:30:06 -0000	1.21
+++ config/i386/darwin.h	30 Oct 2004 01:13:35 -0000
@@ -45,16 +45,13 @@ Boston, MA 02111-1307, USA.  */
   %{g: %{!gfull: -feliminate-unused-debug-symbols %<gfull }}"
 
 #undef ASM_SPEC
-#define ASM_SPEC "-arch i686 \
-  -force_cpusubtype_ALL \
-  %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \
-  %{!Zforce_cpusubtype_ALL:%{mmmx:-force_cpusubtype_ALL}\
-			   %{msse:-force_cpusubtype_ALL}\
-			   %{msse2:-force_cpusubtype_ALL}}"
+#define ASM_SPEC "-arch i686 -force_cpusubtype_ALL"
 
 #undef SUBTARGET_EXTRA_SPECS
-#define SUBTARGET_EXTRA_SPECS			\
-  { "darwin_arch", "i686" },
+#define SUBTARGET_EXTRA_SPECS					\
+  { "darwin_arch", "i686" },					\
+  { "darwin_subarch", "%{march=pentium3:pentIIm3;:i686}" },
+   
 
 /* Use the following macro for any Darwin/x86-specific command-line option
    translation.  */
Index: config/rs6000/darwin.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/darwin.h,v
retrieving revision 1.68
diff -u -p -u -p -r1.68 darwin.h
--- config/rs6000/darwin.h	29 Oct 2004 17:09:05 -0000	1.68
+++ config/rs6000/darwin.h	30 Oct 2004 01:13:36 -0000
@@ -132,9 +132,29 @@ do {									\
 %{static: %{Zdynamic: %e conflicting code gen style switches are used}}\
 %{!static:%{!mdynamic-no-pic:-fPIC}}"
 
+#define DARWIN_SUBARCH_SPEC "			\
+ %{m64: ppc64}					\
+ %{!m64:					\
+ %{mcpu=601:ppc601;				\
+   mcpu=603:ppc603;				\
+   mcpu=603e:ppc603;				\
+   mcpu=604:ppc604;				\
+   mcpu=604e:ppc604e;				\
+   mcpu=740:ppc750;				\
+   mcpu=750:ppc750;				\
+   mcpu=G3:ppc750;				\
+   mcpu=7400:ppc7400;				\
+   mcpu=G4:ppc7400;				\
+   mcpu=7450:ppc7450;				\
+   mcpu=970:ppc970;				\
+   mcpu=power4:ppc970;				\
+   mcpu=G5:ppc970;				\
+   :ppc}}"
+
 #undef SUBTARGET_EXTRA_SPECS
 #define SUBTARGET_EXTRA_SPECS			\
-  { "darwin_arch", "%{m64:ppc64} %{!m64:ppc}" },
+  { "darwin_arch", "%{m64:ppc64;:ppc}" },	\
+  { "darwin_subarch", DARWIN_SUBARCH_SPEC },
 
 /* Output a .machine directive.  */
 #undef TARGET_ASM_FILE_START
============================================================

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: -dynamiclib documentation, etc., for Darwin
  2004-10-30  2:33 -dynamiclib documentation, etc., for Darwin Geoffrey Keating
@ 2004-10-30  3:57 ` James A. Morrison
  2004-10-30  7:30   ` Geoffrey Keating
  0 siblings, 1 reply; 4+ messages in thread
From: James A. Morrison @ 2004-10-30  3:57 UTC (permalink / raw)
  To: Geoffrey Keating; +Cc: gcc-patches


gkeating@apple.com (Geoffrey Keating) writes:

> 	* doc/invoke.texi (Darwin Options): Improve documentation for
> 	Darwin linker (and libtool) switches.

 Where is this part of the patch?

-- 
Thanks,
Jim

http://www.student.cs.uwaterloo.ca/~ja2morri/
http://phython.blogspot.com
http://open.nit.ca/wiki/?page=jim

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: -dynamiclib documentation, etc., for Darwin
  2004-10-30  3:57 ` James A. Morrison
@ 2004-10-30  7:30   ` Geoffrey Keating
  2004-10-30 12:20     ` Joseph S. Myers
  0 siblings, 1 reply; 4+ messages in thread
From: Geoffrey Keating @ 2004-10-30  7:30 UTC (permalink / raw)
  To: James A. Morrison; +Cc: gcc-patches, Geoffrey Keating

[-- Attachment #1: Type: text/plain, Size: 3560 bytes --]


On 29/10/2004, at 6:53 PM, James A. Morrison wrote:

>
> gkeating@apple.com (Geoffrey Keating) writes:
>
>> 	* doc/invoke.texi (Darwin Options): Improve documentation for
>> 	Darwin linker (and libtool) switches.
>
>  Where is this part of the patch?

Missing, for some reason.  Here 'tis.

Index: invoke.texi
===================================================================
RCS file: /cvs/gcc/gcc/gcc/doc/invoke.texi,v
retrieving revision 1.552
retrieving revision 1.553
diff -u -p -r1.552 -r1.553
--- invoke.texi 28 Oct 2004 14:24:29 -0000      1.552
+++ invoke.texi 30 Oct 2004 02:48:49 -0000      1.553
@@ -7185,7 +7185,17 @@ Like @option{-sim}, but pass linker opti
  @cindex Darwin options

  These options are defined for all architectures running the Darwin 
operating
-system.  They are useful for compatibility with other Mac OS compilers.
+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.
+
+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
+@option{-force_cpusubtype_ALL} option can be used to override this.

  @table @gcctabopt
  @item -F@var{dir}
@@ -7272,12 +7282,20 @@ See man ld(1) for more information.

  @item -bundle_loader @var{executable}
  @opindex bundle_loader
-This specifies the @var{executable} that will be loading the build
+This option specifies the @var{executable} that will be loading the 
build
  output file being linked. See man ld(1) for more information.

-@item -allowable_client  @var{client_name}
-@itemx -arch_only
+@item -dynamiclib
+@opindex -dynamiclib
+When passed this option, GCC will produce a dynamic library instead of
+an executable when linking, using the Darwin @file{libtool} command.
+
+@item -force_cpusubtype_ALL
+@opindex -force_cpusubtype_ALL
+This causes GCC's output file to have the @var{ALL} subtype, instead of
+one controlled by the @option{-mcpu} or @option{-march} option.

+@item -allowable_client  @var{client_name}
  @itemx -client_name
  @itemx -compatibility_version
  @itemx -current_version
@@ -7286,11 +7304,9 @@ output file being linked. See man ld(1)
  @itemx -dylib_file
  @itemx -dylinker_install_name
  @itemx -dynamic
-@itemx -dynamiclib
  @itemx -exported_symbols_list
  @itemx -filelist
  @itemx -flat_namespace
-@itemx -force_cpusubtype_ALL
  @itemx -force_flat_namespace
  @itemx -headerpad_max_install_names
  @itemx -image_base
@@ -7339,7 +7355,6 @@ output file being linked. See man ld(1)
  @itemx -whatsloaded

  @opindex allowable_client
-@opindex arch_only
  @opindex client_name
  @opindex compatibility_version
  @opindex current_version
@@ -7348,11 +7363,9 @@ output file being linked. See man ld(1)
  @opindex dylib_file
  @opindex dylinker_install_name
  @opindex dynamic
-@opindex dynamiclib
  @opindex exported_symbols_list
  @opindex filelist
  @opindex flat_namespace
-@opindex force_cpusubtype_ALL
  @opindex force_flat_namespace
  @opindex headerpad_max_install_names
  @opindex image_base
@@ -7400,7 +7413,7 @@ output file being linked. See man ld(1)
  @opindex weak_reference_mismatches
  @opindex whatsloaded

-These options are available for Darwin linker. Darwin linker man page
+These options are passed to the Darwin linker.  The Darwin linker man 
page
  describes them in detail.
  @end table



[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 2408 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: -dynamiclib documentation, etc., for Darwin
  2004-10-30  7:30   ` Geoffrey Keating
@ 2004-10-30 12:20     ` Joseph S. Myers
  0 siblings, 0 replies; 4+ messages in thread
From: Joseph S. Myers @ 2004-10-30 12:20 UTC (permalink / raw)
  To: Geoffrey Keating; +Cc: James A. Morrison, gcc-patches, Geoffrey Keating

On Fri, 29 Oct 2004, Geoffrey Keating wrote:

> +The subtype of the file created (@var{ppc7400} or @var{ppc970} or
> +@var{i686}) is determined by the flag that specifies the ISA

I think you want @samp rather than @var here: ppc7400, ppc970, i686 don't 
look like they are being used as metasyntactic variables.

-- 
Joseph S. Myers               http://www.srcf.ucam.org/~jsm28/gcc/
    jsm@polyomino.org.uk (personal mail)
    joseph@codesourcery.com (CodeSourcery mail)
    jsm28@gcc.gnu.org (Bugzilla assignments and CCs)

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-10-30  8:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-30  2:33 -dynamiclib documentation, etc., for Darwin Geoffrey Keating
2004-10-30  3:57 ` James A. Morrison
2004-10-30  7:30   ` Geoffrey Keating
2004-10-30 12:20     ` Joseph S. Myers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).