aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2004-10-30 02:48:49 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2004-10-30 02:48:49 +0000
commit965a7e9092ffbec64865a95b016f731782d4b965 (patch)
tree6ee8ec5a78d0a562957eb1e05126f0ed0dbebf70 /gcc/config
parentd2607dde2173bca67f29425a1a9a152167896a87 (diff)
downloadgcc-965a7e9092ffbec64865a95b016f731782d4b965.zip
gcc-965a7e9092ffbec64865a95b016f731782d4b965.tar.gz
gcc-965a7e9092ffbec64865a95b016f731782d4b965.tar.bz2
darwin.h (ASM_SPEC): Simplify.
* 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. From-SVN: r89877
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/darwin.h11
-rw-r--r--gcc/config/i386/darwin.h13
-rw-r--r--gcc/config/rs6000/darwin.h22
3 files changed, 32 insertions, 14 deletions
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 098caa2..83aa2dd 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -219,8 +219,6 @@ extern const char *darwin_fix_and_continue_switch;
#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_continue_switch;
"%{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_continue_switch;
%{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_continue_switch;
/* #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. */
diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h
index c7b583d..d36b511 100644
--- a/gcc/config/i386/darwin.h
+++ b/gcc/config/i386/darwin.h
@@ -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. */
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index ea4ef1a..50c7bd3 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -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