From e06f05d23c7dfa5d5cb73d416e612dd02b337f7d Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Sun, 5 Nov 2023 13:58:26 -0500 Subject: [PATCH] gcc11: fix build on aarch64-darwin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The libgcc configure script was middetecting aarch64-darwin and trying to use a deployment target of 10.5, which is not valid for that platform. The build was failing because the linker was looking for stubs that don’t exist (neither as part of the source releases nor as part of the official SDK from Apple). Backporting the `config.host` check and `t-darwin-rpath` from GCC 12 allows GCC 11 to build again on aarch64-darwin. --- .../11/libgcc-aarch64-darwin-detection.patch | 21 +++++++++++++++++++ .../compilers/gcc/patches/default.nix | 3 +++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/development/compilers/gcc/patches/11/libgcc-aarch64-darwin-detection.patch diff --git a/pkgs/development/compilers/gcc/patches/11/libgcc-aarch64-darwin-detection.patch b/pkgs/development/compilers/gcc/patches/11/libgcc-aarch64-darwin-detection.patch new file mode 100644 index 000000000000..08dbfec6b249 --- /dev/null +++ b/pkgs/development/compilers/gcc/patches/11/libgcc-aarch64-darwin-detection.patch @@ -0,0 +1,21 @@ +diff -u a/libgcc/config.host b/libgcc/config.host +--- a/libgcc/config.host 2023-11-05 11:01:55.778638446 -0500 ++++ b/libgcc/config.host 2023-11-05 11:07:29.405103979 -0500 +@@ -227,7 +227,7 @@ + tmake_file="$tmake_file t-slibgcc-darwin" + # newer toolsets produce warnings when building for unsupported versions. + case ${host} in +- *-*-darwin1[89]* | *-*-darwin2* ) ++ *-*-darwin1[89]* | *-*-darwin2* | aarch64*-*-darwin*) + tmake_file="t-darwin-min-8 $tmake_file" + ;; + *-*-darwin9* | *-*-darwin1[0-7]*) +diff -ur a/libgcc/config/t-darwin-rpath b/libgcc/config/t-darwin-rpath +--- a/libgcc/config/t-darwin-rpath 2023-11-05 11:34:18.691150009 -0500 ++++ b/libgcc/config/t-darwin-rpath 2023-11-05 11:50:36.968920904 -0500 +@@ -2,4 +2,4 @@ + SHLIB_RPATH = @rpath + + # Which does not work for Darwin < 9 +-HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.5 ++SHLIB_LOADER_PATH = -Wl,-rpath,@loader_path diff --git a/pkgs/development/compilers/gcc/patches/default.nix b/pkgs/development/compilers/gcc/patches/default.nix index 0afc6586511a..2052d0f674f2 100644 --- a/pkgs/development/compilers/gcc/patches/default.nix +++ b/pkgs/development/compilers/gcc/patches/default.nix @@ -178,6 +178,9 @@ in # https://github.com/osx-cross/homebrew-avr/issues/280#issuecomment-1272381808 ++ optional (is11 && stdenv.isDarwin && targetPlatform.isAvr) ./avr-gcc-11.3-darwin.patch +# libgcc’s `configure` script misdetects aarch64-darwin, resulting in an invalid deployment target. +++ optional (is11 && stdenv.isDarwin && stdenv.isAarch64) ./11/libgcc-aarch64-darwin-detection.patch + # openjdk build fails without this on -march=opteron; is upstream in gcc12 ++ optionals (is11) [ ./11/gcc-issue-103910.patch ]