diff --git a/gcc/config.gcc b/gcc/config.gcc
index 7af8e028104..1377f1efc21 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -647,7 +647,7 @@ x86_cpus="generic intel"
# Common parts for widely ported systems.
case ${target} in
*-*-darwin*)
- tmake_file="t-darwin ${cpu_type}/t-darwin"
+ tmake_file="t-darwin "
tm_file="${tm_file} darwin.h"
case ${target} in
*-*-darwin9*)
@@ -1479,16 +1479,25 @@ hppa[12]*-*-hpux11*)
dwarf2=no
fi
;;
+i[34567]86-*-darwin1[89]*)
+ echo "Error: 32bit target is not supported after Darwin17" 1>&2
+ ;;
i[34567]86-*-darwin*)
need_64bit_isa=yes
# Baseline choice for a machine that allows m64 support.
with_cpu=${with_cpu:-core2}
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
+ tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
+ ;;
+x86_64-*-darwin1[89]* | x86_64-*-darwin2[01]*)
+ # Only 64b from now
+ with_cpu=${with_cpu:-core2}
tmake_file="${tmake_file} t-slibgcc"
;;
x86_64-*-darwin*)
with_cpu=${with_cpu:-core2}
- tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
- tm_file="${tm_file} ${cpu_type}/darwin64.h"
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
+ tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
;;
i[34567]86-*-elfiamcu)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h"
@@ -2386,16 +2395,23 @@ pdp11-*-*)
# extra_headers=
# ;;
powerpc-*-darwin*)
- extra_options="${extra_options} rs6000/darwin.opt"
+ extra_options="${extra_options} ${cpu_type}/darwin.opt"
case ${target} in
- *-darwin1[0-9]* | *-darwin[8-9]*)
- tmake_file="${tmake_file} rs6000/t-darwin8"
- tm_file="${tm_file} rs6000/darwin8.h"
+ *-darwin1[0-9]* | *-darwin9*)
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
+ tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
+ ;;
+ *-darwin8*)
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
+ tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
+ tm_file="${tm_file} ${cpu_type}/darwin8.h"
;;
*-darwin7*)
- tm_file="${tm_file} rs6000/darwin7.h"
+ tm_file="${tm_file} ${cpu_type}/darwin7.h"
;;
- *-darwin[0-6]*)
+ *-darwin[456]*)
+ # Earlier - ingle arch, with 32b only
+ # OS X 10.0, the first edition is Darwin4
;;
esac
tmake_file="${tmake_file} t-slibgcc"
@@ -2403,8 +2419,8 @@ powerpc-*-darwin*)
;;
powerpc64-*-darwin*)
extra_options="${extra_options} ${cpu_type}/darwin.opt"
- tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
- tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h"
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
+ tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
extra_headers=altivec.h
;;
powerpc*-*-freebsd*)
diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h
index 66c05572460..00fac1afc5b 100644
--- a/gcc/config/i386/darwin.h
+++ b/gcc/config/i386/darwin.h
@@ -112,9 +112,6 @@ extern int darwin_emit_branch_islands;
" ASM_OPTIONS " -force_cpusubtype_ALL \
%{static}" ASM_MMACOSX_VERSION_MIN_SPEC
-#define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}"
-#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
-
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
@@ -122,12 +119,15 @@ extern int darwin_emit_branch_islands;
%{mpc64:crtprec64.o%s} \
%{mpc80:crtprec80.o%s}" TM_DESTRUCTOR
+#define DARWIN_ARCH_SPEC "x86_64"
+
+/* We default to x86_64 for single-arch builds, bi-arch overrides. */
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
DARWIN_EXTRA_SPECS \
- { "darwin_arch", DARWIN_ARCH_SPEC }, \
+ { "darwin_arch", DARWIN_ARCH_SPEC }, \
{ "darwin_crt2", "" }, \
- { "darwin_subarch", DARWIN_SUBARCH_SPEC },
+ { "darwin_subarch", DARWIN_ARCH_SPEC },
/* The Darwin assembler mostly follows AT&T syntax. */
#undef ASSEMBLER_DIALECT
diff --git a/gcc/config/i386/darwin32-biarch.h b/gcc/config/i386/darwin32-biarch.h
new file mode 100644
index 00000000000..b7f53bf2c82
--- /dev/null
+++ b/gcc/config/i386/darwin32-biarch.h
@@ -0,0 +1,32 @@
+/* Target definitions for i386 running Darwin.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ Contributed by Apple Computer Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+. */
+
+#undef DARWIN_ARCH_SPEC
+#define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}"
+
+#undef DARWIN_SUBARCH_SPEC
+#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
+
+#undef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS \
+ DARWIN_EXTRA_SPECS \
+ { "darwin_arch", DARWIN_ARCH_SPEC }, \
+ { "darwin_crt2", "" }, \
+ { "darwin_subarch", DARWIN_SUBARCH_SPEC },
diff --git a/gcc/config/i386/darwin64.h b/gcc/config/i386/darwin64-biarch.h
similarity index 100%
rename from gcc/config/i386/darwin64.h
rename to gcc/config/i386/darwin64-biarch.h
diff --git a/gcc/config/i386/t-darwin b/gcc/config/i386/t-darwin32-biarch
similarity index 100%
rename from gcc/config/i386/t-darwin
rename to gcc/config/i386/t-darwin32-biarch
diff --git a/gcc/config/i386/t-darwin64 b/gcc/config/i386/t-darwin64-biarch
similarity index 100%
rename from gcc/config/i386/t-darwin64
rename to gcc/config/i386/t-darwin64-biarch
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index 2b5628cac56..f2283de2ead 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -84,6 +84,23 @@ extern int darwin_emit_branch_islands;
#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
+/* Machine dependent libraries. Include libmx when compiling on
+ Darwin 7.0 and above, but before libSystem, since the functions are
+ actually in libSystem but for 7.x compatibility we want them to be
+ looked for in libmx first---but only do this if 7.x compatibility
+ is a concern, which it's not in 64-bit mode. Include
+ libSystemStubs when compiling on (not necessarily for) 8.0 and
+ above and not 64-bit long double. */
+
+#undef LIB_SPEC
+#define LIB_SPEC \
+"%{!static: \
+ %{!mlong-double-64: \
+ %{pg:%:version-compare(!> 10.5 mmacosx-version-min= -lSystemStubs_profile)} \
+ %{!pg:%:version-compare(!> 10.5 mmacosx-version-min= -lSystemStubs)}}\
+ %{!m64:%:version-compare(>< 10.3 10.4 mmacosx-version-min= -lmx)} \
+ -lSystem \
+}"
/* We want -fPIC by default, unless we're using -static to compile for
the kernel or some such. The "-faltivec" option should have been
@@ -98,11 +115,10 @@ extern int darwin_emit_branch_islands;
%. */
+
+#undef DARWIN_ARCH_SPEC
+#define DARWIN_ARCH_SPEC "%{m64:ppc64;:ppc}"
+
+#undef DARWIN_SUBARCH_SPEC
+#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_EXTRA_SPECS \
+ { "darwin_arch", DARWIN_ARCH_SPEC }, \
+ { "darwin_crt2", DARWIN_CRT2_SPEC }, \
+ { "darwin_subarch", DARWIN_SUBARCH_SPEC },
diff --git a/gcc/config/rs6000/darwin64.h b/gcc/config/rs6000/darwin64-biarch.h
similarity index 69%
rename from gcc/config/rs6000/darwin64.h
rename to gcc/config/rs6000/darwin64-biarch.h
index 11c77b8dfee..9f72524c7e5 100644
--- a/gcc/config/rs6000/darwin64.h
+++ b/gcc/config/rs6000/darwin64-biarch.h
@@ -1,5 +1,5 @@
-/* Target definitions for PowerPC running Darwin (Mac OS X).
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+/* Target definitions for PowerPC64 running Darwin (Mac OS X).
+ Copyright (C) 2006-2019 Free Software Foundation, Inc.
Contributed by Apple Computer Inc.
This file is part of GCC.
@@ -25,8 +25,13 @@
#undef DARWIN_ARCH_SPEC
#define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}"
+/* Actually, there's really only 970 as an active option. */
#undef DARWIN_SUBARCH_SPEC
#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
-#undef DARWIN_CRT2_SPEC
-#define DARWIN_CRT2_SPEC ""
+#undef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS \
+ DARWIN_EXTRA_SPECS \
+ { "darwin_arch", DARWIN_ARCH_SPEC }, \
+ { "darwin_crt2", "" }, \
+ { "darwin_subarch", DARWIN_SUBARCH_SPEC },
diff --git a/gcc/config/rs6000/darwin7.h b/gcc/config/rs6000/darwin7.h
index 85ea18e53e0..8a7a6425e78 100644
--- a/gcc/config/rs6000/darwin7.h
+++ b/gcc/config/rs6000/darwin7.h
@@ -17,21 +17,11 @@ You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
. */
-/* Machine dependent libraries. Include libmx when compiling for
- Darwin 7.0 and above, but before libSystem, since the functions are
- actually in libSystem but for 7.x compatibility we want them to be
- looked for in libmx first. Include libmx by default because otherwise
- libstdc++ isn't usable. */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{!static:\
- %:version-compare(!< 10.3 mmacosx-version-min= -lmx)\
- -lSystem}"
-
/* This generation of tools (specifically the archive tool) did not
export weak symbols from the TOC. */
#undef TARGET_WEAK_NOT_IN_ARCHIVE_TOC
#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 1
+/* Default to the last version, with most support for C++. */
#undef DEF_MIN_OSX_VERSION
#define DEF_MIN_OSX_VERSION "10.3.9"
diff --git a/gcc/config/rs6000/darwin8.h b/gcc/config/rs6000/darwin8.h
index 76c910321f6..79e0169d796 100644
--- a/gcc/config/rs6000/darwin8.h
+++ b/gcc/config/rs6000/darwin8.h
@@ -17,15 +17,5 @@ You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
. */
-/* Machine dependent libraries. Include libmx when compiling on
- Darwin 7.0 and above, but before libSystem, since the functions are
- actually in libSystem but for 7.x compatibility we want them to be
- looked for in libmx first---but only do this if 7.x compatibility
- is a concern, which it's not in 64-bit mode. Include
- libSystemStubs when compiling on (not necessarily for) 8.0 and
- above and not 64-bit long double. */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{!static:\
- %{!mlong-double-64:%{pg:-lSystemStubs_profile;:-lSystemStubs}} \
- %{!m64:%:version-compare(>< 10.3 10.4 mmacosx-version-min= -lmx)} -lSystem}"
+#undef DEF_MIN_OSX_VERSION
+#define DEF_MIN_OSX_VERSION "10.4"
diff --git a/gcc/config/rs6000/t-darwin8 b/gcc/config/rs6000/t-darwin32-biarch
similarity index 100%
rename from gcc/config/rs6000/t-darwin8
rename to gcc/config/rs6000/t-darwin32-biarch
diff --git a/gcc/config/rs6000/t-darwin64 b/gcc/config/rs6000/t-darwin64-biarch
similarity index 100%
rename from gcc/config/rs6000/t-darwin64
rename to gcc/config/rs6000/t-darwin64-biarch