gcc11: fix build on aarch64-darwin
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.
This commit is contained in:
committed by
Adam Joseph
parent
e556bb0b67
commit
e06f05d23c
@@ -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
|
||||
@@ -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 ]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user