[Darwin] Fix PR87030 and tidy config fragments.
This is about 32/64b host and multilib support across the range of Darwin systems. Prior to Darwin8 (OS X 10.4), the toolchains support only PowerPC and only 32b. On Darwin8 it is possible to target a 64b multilib, but with support limited to a few of the main libraries on the system (not a recommended configuration). From Darwin9 to Darwin17 (OSX 10.5 to 10.13) it is possible to have either 32 or 64b hosted toolchains, with support for a 64 or 32b multilib respectively. On Darwin9 the kernel is 32b, but with support for 64b executables, so it's conventional to build a 32b host toolchain supporting a 64b multilib. However this is not enforced (merely a convention). There is also some platform hardware supporting Darwin10/11 which is only 32b and for which the same situation applies. However, from Darwin10 to Darwin17, the majority of platform hardware supports a 64b kernel and it's conventional to build a 64b host toolchain with support for a 32b multilib. On/from Darwin18 (OS X 10.14), the development headers (in the SDK) no longer expose the interfaces for the 32b multilib support (although sufficient runtime support remains installed that the testsuite can be run for a 32b multilib). The PR is raised against this latter situation since the absence of exposed interfaces causes a 'default' bootstrap fail regardless of the availability of the runtimes. Given the number of permutations, I felt it warranted a general solution, especially since the current scheme of target headers and t-make fragments has become somewhat messy. The changes here enforce the single 32b PowerPC multilib for Darwin < 8 and the single X86 64b multilib for Darwin >= 18. This means that there is no longer any need to configure Darwin18+ '--disable-multilib', but also that if you want to use the ability to continue to test the compiler's 32b multilib there, you need to make a configuration targeting an earlier OS version (and using the SDK from that). gcc/ PR bootstrap/87030 * config.gcc (*-*-darwin*): Don't include CPU t-darwin here. (i[34567]86-*-darwin*): Adjust to use biarch files. Produce an error message if i686-darwin configuration is attempted for Darwin >= 18. (x86_64-*-darwin*): Switch to single multilib for Darwin >= 18. (powerpc-*-darwin*): Use biarch files where needed. (powerpc64-*-darwin*): Likewise. * config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file. (DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single arch case. * config/i386/darwin32-biarch.h: New. * config/i386/darwin64.h: Rename. * gcc/config/i386/darwin64-biarch.h: To this. * config/i386/t-darwin: Rename. * gcc/config/i386/t-darwin32-biarch: To this. * config/i386/t-darwin64: Rename. * gcc/config/i386/t-darwin64-biarch: To this. * config/rs6000/darwin32-biarch.h: New. * config/rs6000/darwin64.h: Rename. * config/rs6000/darwin64-biarch.h: To this. (DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single arch case. * config/rs6000/t-darwin8: Rename. * config/rs6000/t-darwin32-biarch: To this. * config/rs6000/t-darwin64 Rename. * config/rs6000/t-darwin64-biarch: To this. From-SVN: r273746
This commit is contained in:
parent
d8e54c6203
commit
000a002072
11 changed files with 127 additions and 12 deletions
|
@ -1,3 +1,33 @@
|
|||
2019-07-23 Iain Sandoe <iain@sandoe.co.uk>
|
||||
|
||||
PR bootstrap/87030
|
||||
* config.gcc (*-*-darwin*): Don't include CPU t-darwin here.
|
||||
(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
|
||||
an error message if i686-darwin configuration is attempted for
|
||||
Darwin >= 18.
|
||||
(x86_64-*-darwin*): Switch to single multilib for Darwin >= 18.
|
||||
(powerpc-*-darwin*): Use biarch files where needed.
|
||||
(powerpc64-*-darwin*): Likewise.
|
||||
* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file.
|
||||
(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
|
||||
arch case.
|
||||
* config/i386/darwin32-biarch.h: New.
|
||||
* config/i386/darwin64.h: Rename.
|
||||
* gcc/config/i386/darwin64-biarch.h: To this.
|
||||
* config/i386/t-darwin: Rename.
|
||||
* gcc/config/i386/t-darwin32-biarch: To this.
|
||||
* config/i386/t-darwin64: Rename.
|
||||
* gcc/config/i386/t-darwin64-biarch: To this.
|
||||
* config/rs6000/darwin32-biarch.h: New.
|
||||
* config/rs6000/darwin64.h: Rename.
|
||||
* config/rs6000/darwin64-biarch.h: To this.
|
||||
(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
|
||||
arch case.
|
||||
* config/rs6000/t-darwin8: Rename.
|
||||
* config/rs6000/t-darwin32-biarch: To this.
|
||||
* config/rs6000/t-darwin64 Rename.
|
||||
* config/rs6000/t-darwin64-biarch: To this.
|
||||
|
||||
2019-07-23 Martin Sebor <msebor@redhat.com>
|
||||
|
||||
* configure.ac (ACX_PROG_CXX_WARNING_OPTS): Revert r273311.
|
||||
|
|
|
@ -139,9 +139,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
" 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} \
|
||||
|
@ -149,12 +146,15 @@ along with GCC; see the file COPYING3. If not see
|
|||
%{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
|
||||
|
|
32
gcc/config/i386/darwin32-biarch.h
Normal file
32
gcc/config/i386/darwin32-biarch.h
Normal file
|
@ -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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#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 },
|
|
@ -117,11 +117,10 @@ extern int darwin_emit_picsym_stub;
|
|||
%<faltivec %<fno-altivec " \
|
||||
DARWIN_CC1_SPEC
|
||||
|
||||
#define DARWIN_ARCH_SPEC "%{m64:ppc64;:ppc}"
|
||||
/* Default to PPC for single arch builds. */
|
||||
#define DARWIN_ARCH_SPEC "ppc"
|
||||
|
||||
#define DARWIN_SUBARCH_SPEC " \
|
||||
%{m64: ppc64} \
|
||||
%{!m64: \
|
||||
%{mcpu=601:ppc601; \
|
||||
mcpu=603:ppc603; \
|
||||
mcpu=603e:ppc603; \
|
||||
|
@ -136,7 +135,7 @@ extern int darwin_emit_picsym_stub;
|
|||
mcpu=970:ppc970; \
|
||||
mcpu=power4:ppc970; \
|
||||
mcpu=G5:ppc970; \
|
||||
:ppc}}"
|
||||
:ppc}"
|
||||
|
||||
/* We need to jam the crt to 10.5 for 10.6 (Rosetta) use. */
|
||||
#undef DARWIN_CRT1_SPEC
|
||||
|
|
49
gcc/config/rs6000/darwin32-biarch.h
Normal file
49
gcc/config/rs6000/darwin32-biarch.h
Normal file
|
@ -0,0 +1,49 @@
|
|||
/* Target definitions for PowerPC running Darwin (Mac OS X).
|
||||
Copyright (C) 2006-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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#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 },
|
|
@ -1,4 +1,4 @@
|
|||
/* Target definitions for PowerPC running Darwin (Mac OS X).
|
||||
/* Target definitions for PowerPC64 running Darwin (Mac OS X).
|
||||
Copyright (C) 2006-2019 Free Software Foundation, Inc.
|
||||
Contributed by Apple Computer Inc.
|
||||
|
||||
|
@ -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 },
|
Loading…
Add table
Reference in a new issue