aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2020-12-19 13:05:34 +0000
committerIain Sandoe <iain@sandoe.co.uk>2020-12-21 20:19:30 +0000
commit0e1d4b3bfe260667fb8e055ebff2b34d8a2ec253 (patch)
treee9b8b08be926055c68bc63bbbe14becd3423ae9e /gcc
parent6a31d47e271d066ea85b3716f7b77f18e6b55242 (diff)
downloadgcc-0e1d4b3bfe260667fb8e055ebff2b34d8a2ec253.zip
gcc-0e1d4b3bfe260667fb8e055ebff2b34d8a2ec253.tar.gz
gcc-0e1d4b3bfe260667fb8e055ebff2b34d8a2ec253.tar.bz2
Darwin : Update the kernel version to macOS version mapping.
With the change to macOS 11 and Darwin20, the algorithm for mapping kernel version to macOS version has changed. We now have darwin 20.X.Y => macOS 11.(X > 0 ? X - 1 : 0).??. It currently unclear if the Y will be mapped to macOS patch version and, if so, whether it will be one-based or 0-based. Likewise, it's unknown if Darwin 21 will map to macOS 12, so these entries are unchanged for the present. gcc/ChangeLog: * config/darwin-driver.c (darwin_find_version_from_kernel): Compute the minor OS version from the minor kernel version.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/darwin-driver.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/gcc/config/darwin-driver.c b/gcc/config/darwin-driver.c
index 8ae3000..4a9426e 100644
--- a/gcc/config/darwin-driver.c
+++ b/gcc/config/darwin-driver.c
@@ -149,9 +149,22 @@ darwin_find_version_from_kernel (void)
if (*version_p++ != '.')
goto parse_failed;
- /* Darwin20 sees a transition to macOS 11. */
+ /* 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. */
if (major_vers >= 20)
- asprintf (&new_flag, "11.%02d.00", major_vers - 20);
+ {
+ int minor_vers = *version_p++ - '0';
+ if (ISDIGIT (*version_p))
+ minor_vers = minor_vers * 10 + (*version_p++ - '0');
+ if (*version_p++ != '.')
+ goto parse_failed;
+ if (minor_vers > 0)
+ minor_vers -= 1; /* Kernel 20.3 => macOS 11.2. */
+ /* It's not yet clear whether patch level will be considered. */
+ asprintf (&new_flag, "11.%02d.00", minor_vers);
+ }
else if (major_vers - 4 <= 4)
/* On 10.4 and earlier, the old linker is used which does not
support three-component system versions.