Skip to content

Commit

Permalink
Darwin: Future-proof and homogeneize detection of darwin versions
Browse files Browse the repository at this point in the history
The current GCC branch will become 12.1.0, which will be the stable
version of GCC when the next macOS version is released. There are some
places in GCC that don’t handle darwin22 as a version, so we need to
future-proof it (gcc/config.gcc and gcc/config/darwin-driver.c). We
align that code with what Apple clang does, i.e. accept all potential
major macOS versions until 99.

This patch also homogenises the handling of darwin version numbers,
where the majority of places use darwin2*, but some used darwin2[0-9]*.
Since there never was a darwin2.x version, the two are equivalent, and
we prefer the simpler darwin2*

gcc/ChangeLog:

	* config/darwin-driver.c: Make version code more future-proof.
	* config.gcc: Homogeneize darwin versions.
	* configure.ac: Homogeneize darwin versions.
	* configure: Regenerate.

gcc/testsuite/ChangeLog:

	* gcc.dg/darwin-minversion-link.c: Test darwin21.
	* obj-c++.dg/cxx-ivars-3.mm: Homogeneize darwin versions.
	* obj-c++.dg/objc-gc-3.mm: Homogeneize darwin versions.
	* objc.dg/objc-gc-4.m: Homogeneize darwin versions.
  • Loading branch information
fxcoudert committed Dec 18, 2021
1 parent 2554e2d commit f18cbc1
Show file tree
Hide file tree
Showing 8 changed files with 12 additions and 11 deletions.
4 changes: 2 additions & 2 deletions gcc/config.gcc
Original file line number Diff line number Diff line change
Expand Up @@ -1847,7 +1847,7 @@ hppa[12]*-*-hpux11*)
dwarf2=no
fi
;;
i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2[0-9]*)
i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
echo "Error: 32bit target is not supported after Darwin17" 1>&2
;;
i[34567]86-*-darwin*)
Expand All @@ -1857,7 +1857,7 @@ i[34567]86-*-darwin*)
tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
;;
x86_64-*-darwin1[89]* | x86_64-*-darwin2[01]*)
x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
# Only 64b from now
tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
tm_defines="${tm_defines} TARGET_BI_ARCH=0"
Expand Down
6 changes: 3 additions & 3 deletions gcc/config/darwin-driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ validate_macosx_version_min (const char *version_str)

major = strtoul (version_str, &end, 10);

if (major < 10 || major > 12 ) /* macOS 10, 11, and 12 are known. */
/* macOS 10, 11, and 12 are known. clang accepts up to 99. */
if (major < 10 || major > 99)
return NULL;

/* Skip a separating period, if there's one. */
Expand Down Expand Up @@ -160,8 +161,7 @@ darwin_find_version_from_kernel (void)

/* Darwin20 sees a transition to macOS 11. In this, it seems that the
mapping to macOS minor version is now shifted to the kernel minor
version - 1 (at least for the initial releases). At this stage, we
don't know what macOS version will correspond to Darwin21. */
version - 1 (at least for the initial releases). */
if (major_vers >= 20)
{
int minor_vers = *version_p++ - '0';
Expand Down
2 changes: 1 addition & 1 deletion gcc/configure
Original file line number Diff line number Diff line change
Expand Up @@ -26947,7 +26947,7 @@ $as_echo "$as_me: WARNING: LTO for $target requires binutils >= 2.20.1, but vers
;;
esac
case $target_os in
darwin2[0-9]* | darwin19*)
darwin2* | darwin19*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for llvm assembler x86-pad-for-align option" >&5
$as_echo_n "checking assembler for llvm assembler x86-pad-for-align option... " >&6; }
if ${gcc_cv_as_mllvm_x86_pad_for_align+:} false; then :
Expand Down
2 changes: 1 addition & 1 deletion gcc/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -4692,7 +4692,7 @@ foo: nop
;;
esac
case $target_os in
darwin2[[0-9]]* | darwin19*)
darwin2* | darwin19*)
gcc_GAS_CHECK_FEATURE([llvm assembler x86-pad-for-align option],
gcc_cv_as_mllvm_x86_pad_for_align,
[-mllvm -x86-pad-for-align=false], [.text],,
Expand Down
3 changes: 2 additions & 1 deletion gcc/testsuite/gcc.dg/darwin-minversion-link.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
/* { dg-additional-options "-mmacosx-version-min=010.013.06 -DCHECK=101306" { target *-*-darwin17* } } */
/* { dg-additional-options "-mmacosx-version-min=010.014.05 -DCHECK=101405" { target *-*-darwin18* } } */
/* { dg-additional-options "-mmacosx-version-min=010.015.06 -DCHECK=101506" { target *-*-darwin19* } } */
/* { dg-additional-options "-mmacosx-version-min=011.000.00 -DCHECK=110000" { target *-*-darwin20 } } */
/* { dg-additional-options "-mmacosx-version-min=011.000.00 -DCHECK=110000" { target *-*-darwin20* } } */
/* { dg-additional-options "-mmacosx-version-min=012.000.00 -DCHECK=120000" { target *-*-darwin21* } } */

int
main ()
Expand Down
2 changes: 1 addition & 1 deletion gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

// { dg-do run { target *-*-darwin* } }
// { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } }
// { dg-skip-if "Headers incompatible with 10.4 APIs" { *-*-darwin1[1-9]* *-*-darwin2[0-9]* } { "-fnext-runtime" } { "" } }
// { dg-skip-if "Headers incompatible with 10.4 APIs" { *-*-darwin1[1-9]* *-*-darwin2* } { "-fnext-runtime" } { "" } }
// { dg-additional-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4 -framework Foundation" }
// This test has no equivalent or meaning for m64/ABI V2
// { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } }
Expand Down
2 changes: 1 addition & 1 deletion gcc/testsuite/obj-c++.dg/objc-gc-3.mm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com> */

/* { dg-do compile } */
/* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-9]* *-*-darwin2[0-9]* } { "-fnext-runtime" } { "" } } */
/* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-9]* *-*-darwin2* } { "-fnext-runtime" } { "" } } */
/* { dg-options "-fobjc-gc" } */
/* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */

Expand Down
2 changes: 1 addition & 1 deletion gcc/testsuite/objc.dg/objc-gc-4.m
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com> */

/* { dg-do compile } */
/* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-9]* *-*-darwin2[0-9]* } { "-fnext-runtime" } { "" } } */
/* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-9]* *-*-darwin2* } { "-fnext-runtime" } { "" } } */
/* { dg-options "-fobjc-gc" } */
/* { dg-prune-output "cc1obj: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */

Expand Down

0 comments on commit f18cbc1

Please sign in to comment.