# GNAT toolchain now broken after OS upgrade to MacOS 26 (Tahoe), arm64

**URL:** https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843
**Category:** General
**Created:** [September 19, 2025, 1:03am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843 "2025-09-19T01:03:36Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 19, 2025, 1:03am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/1 "2025-09-19T01:03:37Z")

</div>

Hi;

I think that there is a problem with the current GNAT tool chain for MacOS arm64:

```ada

```

gnatmake -v ./shift\_left.adb

GNATMAKE 15.0.1 20250418 (prerelease)  
Copyright (C) 1992-2025, Free Software Foundation, Inc.  
“shift\_left.ali” being checked …  
→ “shift\_left.ali” missing.  
gcc -c -I./ -I- ./shift\_left.adb  
clang: warning: overriding deployment version from ‘16.0’ to ‘26.0’ [-Woverriding-deployment-version]  
End of compilation  
gnatbind -x shift\_left.ali  
gnatlink shift\_left.ali  
clang: warning: overriding deployment version from ‘16.0’ to ‘26.0’ [-Woverriding-deployment-version]  
ld: library not found for -lSystem  
collect2: error: ld returned 1 exit status  
gnatlink: error when calling /opt/gnat-aarch64-darwin-15.1.0-2/bin/gcc  
gnatmake: \*\*\* link failed.

```ada

```

The Ada code is from Rosetta Code:

> **[Shift list elements to left by 3 - Rosetta Code](https://rosettacode.org/wiki/Shift_list_elements_to_left_by_3#Ada)**
>
> Task Shift list elements to left by 3. shift = \[1,2,3,4,5,6,7,8,9\] result = \[4, 5, 6, 7, 8, 9, 1, 2, 3\]

Thanks,

RBE

---

<div class="post-metadata">

### Author: ![system](https://forum.ada-lang.io/uploads/default/original/1X/e625e7957e269cbf6d3128dab48a9e54fe3a9bdc.png) [@system](https://forum.ada-lang.io/u/system)
#### Post date: [September 19, 2025, 1:03am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/2 "2025-09-19T01:03:37Z")

</div>



---

<div class="post-metadata">

### Author: ![system](https://forum.ada-lang.io/uploads/default/original/1X/e625e7957e269cbf6d3128dab48a9e54fe3a9bdc.png) [@system](https://forum.ada-lang.io/u/system)
#### Post date: [September 19, 2025, 5:51am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/3 "2025-09-19T05:51:18Z")

</div>



---

<div class="post-metadata">

### Author: ![Darce](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/d/f14d63/32.png) [@Darce](https://forum.ada-lang.io/u/Darce)
#### Post date: [September 20, 2025, 2:20am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/4 "2025-09-20T02:20:56Z")

</div>

Same here. I haven’t even upgraded Mac OS to 26 - I’ve just updated to 15.7 (from 15.6.1) and this has caused the Alr (2.1.0) build to fail with similar message. To keep it brief, this appears to be the key content:

ld: library not found for -lSystem  
collect2: error: ld returned 1 exit status

Thanks for any help

Darce

And, I should have mentioned - I’m on an Intel Mac

---

<div class="post-metadata">

### Author: ![Darce](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/d/f14d63/32.png) [@Darce](https://forum.ada-lang.io/u/Darce)
#### Post date: [September 21, 2025, 1:43am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/5 "2025-09-21T01:43:32Z")

</div>

Success.

I uninstalled the Xcode Command Line tools and reinstalled them and the alr build and alr run worked fine.

The instructions for this are on the Alire page under Getting Started / MacOS / Alire and, in summary:

‘If you suspect your copy of the Command Line Tools is old, you can delete it by

```ada
sudo rm -rf /Library/Developer/CommandLineTools

```

and re-install.”

This worked for my Intel Mac. I hope it works for your Apple silicon Mac.

Darce

---

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 21, 2025, 2:14am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/6 "2025-09-21T02:14:56Z")

</div>

Not successful for me, but thanks for the tip.

RBE

---

<div class="post-metadata">

### Author: ![Irvise](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/i/7ba0ec/32.png) [@Irvise](https://forum.ada-lang.io/u/Irvise)
#### Post date: [September 21, 2025, 3:58pm UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/7 "2025-09-21T15:58:20Z")

</div>

This was posted as a solution in the Alire Matrix chat channel:

* * *

Adding …

```ada
package Linker is
for Leading_Switches ("Ada") use ("-Wl,-syslibroot," & external ("SDKROOT", ""));
end Linker;

```

… to the .gpr file and then setting the appropriate SDKROOT via …

`export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"`

… seemed to do the trick.

* * *

By Rebecca.

I hope this helps,  
Fer

---

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 21, 2025, 4:32pm UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/8 "2025-09-21T16:32:14Z")

</div>

Hi Fer;

Thanks for sharing this info.

Could someone assist me in translating this to what I should use when calling gnatmake directly, no Alire, no gpr…?

Thanks,

RBE

---

<div class="post-metadata">

### Author: ![Irvise](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/i/7ba0ec/32.png) [@Irvise](https://forum.ada-lang.io/u/Irvise)
#### Post date: [September 21, 2025, 6:07pm UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/9 "2025-09-21T18:07:20Z")

</div>

Probably something like

`gnatmake XXX.adb -something -something -something -largs -Wl,-syslibroot,$(xcrun --sdk macosx --show-sdk-path)`

Notice the part `-largs ...` that is how you pass linker arguments in `gnatmake`. Maybe you need to quote the shell invocation `$(...)` but lets see.

I hope this helps,  
Fer

---

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 22, 2025, 3:12am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/10 "2025-09-22T03:12:33Z")

</div>

Ok, thanks, I’ll work on that idea.

Thanks,

RBE

---

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 23, 2025, 4:29am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/11 "2025-09-23T04:29:48Z")

</div>

Hi All;

Please provide more details on how to translate this to a form that I can use with gnatmake. I’ve not had much sucess with my attempts. Later, I’ll be gratefully using this in the form originally presented, but not yet.

```ada
SDKROOT="$(xcrun --sdk macosx --show-sdk-path)" gnatmake -v ./shift_left.adb -largs -Wl,-syslibroot,${SDKROOT}

GNATMAKE 15.0.1 20250418 (prerelease)
Copyright (C) 1992-2025, Free Software Foundation, Inc.
  "shift_left.ali" being checked ...
  -> "shift_left.ali" missing.
gcc -c -I./ -I- ./shift_left.adb
clang: warning: overriding deployment version from '16.0' to '26.0' [-Woverriding-deployment-version]
End of compilation
gnatbind -x shift_left.ali
gnatlink shift_left.ali -Wl,-syslibroot,
clang: warning: overriding deployment version from '16.0' to '26.0' [-Woverriding-deployment-version]
ld: -syslibroot missing argument
collect2: error: ld returned 1 exit status
gnatlink: error when calling /opt/gnat-aarch64-darwin-15.1.0-2/bin/gcc
gnatmake: *** link failed.

```

Thanks,

RBE

---

<div class="post-metadata">

### Author: ![Irvise](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/i/7ba0ec/32.png) [@Irvise](https://forum.ada-lang.io/u/Irvise)
#### Post date: [September 23, 2025, 7:00pm UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/12 "2025-09-23T19:00:17Z")

</div>

The `SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"` line is returning an empty variable. Do you have Xcode or the Apple developer tools installed (I am no Apple user, so I do not know the correct terminology or setups to get a toolchain running). The command `xcrun` has to return the requested value, not an empty string.

Also, this line `GNATMAKE 15.0.1 20250418 (prerelease)` indicates that you are running a beta version of the compiler. Please, update your Ada toolchain to the latest GCC, which is currently v15.2. That may also help.

Best regards,  
Fer

---

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 23, 2025, 11:15pm UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/13 "2025-09-23T23:15:37Z")

</div>

Hi Fer;

Thanks for the tip about upgrading the GNAT compiler.

I visit

> **[Releases · alire-project/GNAT-FSF-builds](https://github.com/alire-project/GNAT-FSF-builds/releases)**
>
> Builds of the GNAT Ada compiler from FSF GCC releases - alire-project/GNAT-FSF-builds

I do not see anything for arm64 MacOS; perhaps I’m blind ☹

Thanks,

RBE

EDIT: Perhaps the MacOS asset is a universal (contains both x86-64 and arm64 platforms) asset; I haven’t confirmed; but that makes sense.

---

<div class="post-metadata">

### Author: ![Irvise](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/i/7ba0ec/32.png) [@Irvise](https://forum.ada-lang.io/u/Irvise)
#### Post date: [September 24, 2025, 5:59pm UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/14 "2025-09-24T17:59:15Z")

</div>

Oh, strange, there is no v15.2 build for Apple, but there is a 15.1 build… [Release gnat-15.1.0-2 · alire-project/GNAT-FSF-builds · GitHub](https://github.com/alire-project/GNAT-FSF-builds/releases/tag/gnat-15.1.0-2)

Try with the v15.1

---

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 25, 2025, 2:55am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/15 "2025-09-25T02:55:24Z")

</div>

Hi Fer;

I have not tried the most recent version that has an arm64 MacOS entry.

However, I received the same complaint from MacOS when trying to link a compiled C program on MacOS Tahoe. So, I used Gemini AI (if I had not received useful answers, I would have used ChatGPT) and the clue was a clang option that forces version 26: “-mmacosx-version-min=26.0“. This solved the exact same complaint I was getting when trying to link the Ada object code. So now I just have to figure out how to get gnatmake to force this option through. I hope that I don’t have to do gpr things (yet) to get this to work.

Thanks,

RBE

---

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 25, 2025, 3:08am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/16 "2025-09-25T03:08:50Z")

</div>

I tried using “gnat compile” and “gnat link” separately and with verbose and I am still having the same problem. I do not think that updating my gnat tool chain will solve the problem since this is something that came up with the Tahoe release of MacOS, which definitely happened after the most recent release of the gnat tool chain.

The hint from Gemini AI had zero effect on the linking problem from the Ada object code while it solved the linking problem from the C object code.

Thanks,

RBE

---

<div class="post-metadata">

### Author: ![ryandesign](https://forum.ada-lang.io/user_avatar/forum.ada-lang.io/ryandesign/32/800_2.png) [@ryandesign](https://forum.ada-lang.io/u/ryandesign)
#### Post date: [September 25, 2025, 11:47pm UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/17 "2025-09-25T23:47:31Z")

</div>

> [@Ret\_Build\_Engineer](#):
>
> ```ada
> SDKROOT="$(xcrun --sdk macosx --show-sdk-path)" gnatmake -v ./shift_left.adb -largs -Wl,-syslibroot,${SDKROOT}
> 
> ```

> [@Irvise](#):
>
> The `SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"` line is returning an empty variable.

Actually it’s probably not empty, it’s just that the order of operations is wrong. `SDKROOT=…` is setting the variable after `${SDKROOT}` has already been expanded. Observe how a command like `FOO=hello echo $FOO` prints nothing.

You can separate it into two statements:

```bash
SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
gnatmake -v ./shift_left.adb -largs -Wl,-syslibroot,"$SDKROOT"

```

Or you can dispense with the variable and do it as a single command:

```bash
gnatmake -v ./shift_left.adb -largs -Wl,-syslibroot,"$(xcrun --sdk macosx --show-sdk-path)"

```

If you plan to type `gnatmake` commands a lot, you could make a wrapper script that adds the syslibroot stuff for you. For example, save the following as a new text file:

```bash
#!/bin/sh
exec gnatmake "$@" -largs -Wl,-syslibroot,"$(xcrun --sdk macosx --show-sdk-path)"

```

`chmod a+x` that file and run that file instead of `gnatmake`. The fact that `gnatmake` doesn’t seem to know to use the standard macOS SDK path automatically feels like a bug to me, but this should allow you to work around it.

> [@Ret\_Build\_Engineer](#):
>
> ```ada
> clang: warning: overriding deployment version from '16.0' to '26.0' [-Woverriding-deployment-version]
> 
> ```

This is [a gcc bug](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120645). It computes the default deployment target from the Darwin version. You’re on Darwin 25 and it erroneously thinks that’s macOS 16. The version of gcc you’re using was released before it was known that Apple would change the version numbering scheme and that Darwin 25 would actually be called macOS 26.

If I interpret the message correctly, clang (perhaps being invoked as the linker?) is letting you know it was asked to use the deployment target 16.0 and it has changed it to 26.0 for you. When you specify `-mmacosx-version-min=26.0` you’re overriding gcc’s erroneous default and specifying 26.0 directly, which eliminates the warning but otherwise changes nothing.

---

<div class="post-metadata">

### Author: ![Ret\_Build\_Engineer](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/r/ccd318/32.png) [@Ret\_Build\_Engineer](https://forum.ada-lang.io/u/Ret_Build_Engineer)
#### Post date: [September 26, 2025, 3:01am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/18 "2025-09-26T03:01:21Z")

</div>

Hi Ryan;

Thanks for posting here as a reply to my post.

Also, thanks for correcting my incorrect usage when trying to implement the advice given earlier in this thread. That’s useful general knowledge, thanks…

What is not clear to me but reading between the lines is that a new release of the GNAT tool chain will be required for me to be able to proceed with the linkage; is that a correct conclusion? If not, what is the action that I can take? I don’t have an executable created, so it’s more than a warning to me, it’s a failure. Turning off the warning(s) when the problem is not resolved is like driving in really bad weather, ignoring the travel advisories and putting on a blindfold, and hoping for the best.

Thanks,

RBE

---

<div class="post-metadata">

### Author: ![Blady](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/b/e9bcb4/32.png) [@Blady](https://forum.ada-lang.io/u/Blady)
#### Post date: [September 27, 2025, 8:34am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/19 "2025-09-27T08:34:18Z")

</div>

The OP showed up two issues:

> [@Ret\_Build\_Engineer](#):
>
> clang: warning: overriding deployment version from ‘16.0’ to ‘26.0’ [-Woverriding-deployment-version]

and:

> [@Ret\_Build\_Engineer](#):
>
> ld: library not found for -lSystem

They have separate causes, respectively:

1. Upgrade to macOS 26
2. Upgrade to GNAT FSF 15.1

As it was pointed out, for the first one:

> [@ryandesign](#):
>
> This is [a gcc bug](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120645). It computes the default deployment target from the Darwin version. You’re on Darwin 25 and it erroneously thinks that’s macOS 16.

For the second one, I had opened an [Alire issue](https://github.com/alire-project/GNAT-FSF-builds/issues/94) (still open). Workarounds were also been discussed here.

Has anyone tested GNAT FSF 15.2 from Alire?

---

<div class="post-metadata">

### Author: ![Irvise](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/i/7ba0ec/32.png) [@Irvise](https://forum.ada-lang.io/u/Irvise)
#### Post date: [September 28, 2025, 8:09am UTC](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843/20 "2025-09-28T08:09:26Z")

</div>

Alire/GNAT builds just published a prerelease of GCC 16 [Release gnat-16.0.0-snapshot · alire-project/GNAT-FSF-builds · GitHub](https://github.com/alire-project/GNAT-FSF-builds/releases/tag/gnat-16.0.0-snapshot)

You may want to try it out and see if that works. It does have the aarch64-darwin release 🙂

> [@Blady](#):
>
> Has anyone tested GNAT FSF 15.2 from Alire?

Alire, for whatever reason, does not seem to have created the 15.2 artifact… So the latest stable version is v15.1

I believe Simon used to base his macosx toolchain based on some repo like this one [GitHub - iains/gcc-darwin-arm64: GCC master branch for Darwin with experimental support for Arm64. Currently GCC-16.0.0 [September 2025]](https://github.com/iains/gcc-darwin-arm64) But I do not know if this could help you…

[Next page](https://forum.ada-lang.io/t/gnat-toolchain-now-broken-after-os-upgrade-to-macos-26-tahoe-arm64/3843.md?page=2)
