* -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).