aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2025-03-09 09:24:34 +0000
committerIain Sandoe <iain@sandoe.co.uk>2025-03-16 14:23:19 +0000
commit952e17223d3a9809a32be23f86f77166b5860b36 (patch)
treef1c16b1b194880171989710bd82cc082f531ef06
parent348d41e1d105bef6eeb423e915ab8508988149c1 (diff)
downloadgcc-952e17223d3a9809a32be23f86f77166b5860b36.zip
gcc-952e17223d3a9809a32be23f86f77166b5860b36.tar.gz
gcc-952e17223d3a9809a32be23f86f77166b5860b36.tar.bz2
Darwin: Pass -macos_version_min to the linker [PR119172].
For binaries to be notarised, the SDK version must be available. Since we do not, at present, parse this information we have been passing "0.0" to ld64. This now results in a warning and a fail to notarise. As a quick-fix, we can fall back to letting ld64 figure out the SDK version (which it does for -macos_version_min). TODO: Parse the SDKSetting.plist at some point. PR target/119172 gcc/ChangeLog: * config.in: Regenerate. * config/darwin.h (DARWIN_PLATFORM_ID): Add the option to use -macos_version_min where available. * configure: Regenerate. * configure.ac: Check for ld64 support of -macos_version_min. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> (cherry picked from commit 36f5ea5806d246d78555e65273a057718833e3cd)
-rw-r--r--gcc/config.in6
-rw-r--r--gcc/config/darwin.h13
-rwxr-xr-xgcc/configure17
-rw-r--r--gcc/configure.ac12
4 files changed, 44 insertions, 4 deletions
diff --git a/gcc/config.in b/gcc/config.in
index 2e7e0fe..0b46faa 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -2332,6 +2332,12 @@
#endif
+/* Define to 1 if ld64 supports '-macos_version_min'. */
+#ifndef USED_FOR_TARGET
+#undef LD64_HAS_MACOS_VERSION_MIN
+#endif
+
+
/* Define to 1 if ld64 supports '-platform_version'. */
#ifndef USED_FOR_TARGET
#undef LD64_HAS_PLATFORM_VERSION
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 328d878..3d2ced5 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -284,12 +284,17 @@ extern GTY(()) int darwin_ms_struct;
#define DARWIN_RDYNAMIC "%{rdynamic:%nrdynamic is not supported}"
#endif
-#if LD64_HAS_PLATFORM_VERSION
-#define DARWIN_PLATFORM_ID \
- "%{mmacosx-version-min=*: -platform_version macos %* 0.0} "
+#if LD64_HAS_MACOS_VERSION_MIN
+# define DARWIN_PLATFORM_ID \
+ "%{mmacosx-version-min=*:-macos_version_min %*} "
#else
-#define DARWIN_PLATFORM_ID \
+# if LD64_HAS_PLATFORM_VERSION
+# define DARWIN_PLATFORM_ID \
+ "%{mmacosx-version-min=*: -platform_version macos %* 0.0} "
+# else
+# define DARWIN_PLATFORM_ID \
"%{mmacosx-version-min=*:-macosx_version_min %*} "
+# endif
#endif
/* Code built with mdynamic-no-pic does not support PIE/PIC, so we disallow
diff --git a/gcc/configure b/gcc/configure
index a34ae58..57640f9 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -32650,6 +32650,7 @@ if test x"$ld64_flag" = x"yes"; then
# Set defaults for possibly untestable items.
gcc_cv_ld64_export_dynamic=0
gcc_cv_ld64_platform_version=0
+ gcc_cv_ld64_macos_version_min=0
gcc_cv_ld64_demangle=0
if test "$build" = "$host"; then
@@ -32682,6 +32683,7 @@ $as_echo "$gcc_cv_ld64_major" >&6; }
fi
if test "$gcc_cv_ld64_major" -ge 512; then
gcc_cv_ld64_platform_version=1
+ gcc_cv_ld64_macos_version_min=1
fi
elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
# If the version was not specified, try to find it.
@@ -32720,6 +32722,15 @@ $as_echo_n "checking linker for -platform_version support... " >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld64_platform_version" >&5
$as_echo "$gcc_cv_ld64_platform_version" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker for -macos_version_min" >&5
+$as_echo_n "checking linker for -macos_version_min... " >&6; }
+ gcc_cv_ld64_macosx_version_min=1
+ if $gcc_cv_ld -macos_version_min 10.5 < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
+ gcc_cv_ld64_macosx_version_min=0
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld64_macosx_version_min" >&5
+$as_echo "$gcc_cv_ld64_macosx_version_min" >&6; }
fi
if test x"${gcc_cv_ld64_version}" != x; then
@@ -32747,6 +32758,12 @@ cat >>confdefs.h <<_ACEOF
#define LD64_HAS_PLATFORM_VERSION $gcc_cv_ld64_platform_version
_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define LD64_HAS_MACOS_VERSION_MIN $gcc_cv_ld64_macosx_version_min
+_ACEOF
+
fi
if test x"$dsymutil_flag" = x"yes"; then
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 7e78ed6..be77c18 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -6358,6 +6358,7 @@ if test x"$ld64_flag" = x"yes"; then
# Set defaults for possibly untestable items.
gcc_cv_ld64_export_dynamic=0
gcc_cv_ld64_platform_version=0
+ gcc_cv_ld64_macos_version_min=0
gcc_cv_ld64_demangle=0
if test "$build" = "$host"; then
@@ -6388,6 +6389,7 @@ if test x"$ld64_flag" = x"yes"; then
fi
if test "$gcc_cv_ld64_major" -ge 512; then
gcc_cv_ld64_platform_version=1
+ gcc_cv_ld64_macos_version_min=1
fi
elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
# If the version was not specified, try to find it.
@@ -6418,6 +6420,13 @@ if test x"$ld64_flag" = x"yes"; then
gcc_cv_ld64_platform_version=0
fi
AC_MSG_RESULT($gcc_cv_ld64_platform_version)
+
+ AC_MSG_CHECKING(linker for -macos_version_min)
+ gcc_cv_ld64_macosx_version_min=1
+ if $gcc_cv_ld -macos_version_min 10.5 < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
+ gcc_cv_ld64_macosx_version_min=0
+ fi
+ AC_MSG_RESULT($gcc_cv_ld64_macosx_version_min)
fi
if test x"${gcc_cv_ld64_version}" != x; then
@@ -6433,6 +6442,9 @@ if test x"$ld64_flag" = x"yes"; then
AC_DEFINE_UNQUOTED(LD64_HAS_PLATFORM_VERSION, $gcc_cv_ld64_platform_version,
[Define to 1 if ld64 supports '-platform_version'.])
+
+ AC_DEFINE_UNQUOTED(LD64_HAS_MACOS_VERSION_MIN, $gcc_cv_ld64_macosx_version_min,
+ [Define to 1 if ld64 supports '-macos_version_min'.])
fi
if test x"$dsymutil_flag" = x"yes"; then