commit:     fbcb941fc6fe8c31ceb219dc56127e62906ae520
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 13 14:22:50 2024 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Jan 13 14:22:50 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=fbcb941f

sys-devel/binutils-config: make ld arguments depending on OS release

This is somewhat shady, because we'd need the target ld's version, but
it's better to use the current platform version rather than the
requested platform version since the latter has nothing to do with which
linker is being used.

Not bumping the version, since existing installs don't have this issue,
and only new installs on Sanoma suffer from this, which never managed to
succeed, so basically don't exist yet.

Bug: https://bugs.gentoo.org/916291
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 sys-devel/binutils-config/files/ldwrapper.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/sys-devel/binutils-config/files/ldwrapper.c 
b/sys-devel/binutils-config/files/ldwrapper.c
index a1639ca5aa..df29b04c96 100644
--- a/sys-devel/binutils-config/files/ldwrapper.c
+++ b/sys-devel/binutils-config/files/ldwrapper.c
@@ -208,6 +208,7 @@ main(int argc, char *argv[])
        char ctarget[128];
        char *darwin_dt = getenv("MACOSX_DEPLOYMENT_TARGET");
        int darwin_dt_ver = 0;
+       int darwin_ld_trg_ver = 0;
        char is_cross = 0;
        char is_darwin = 0;
        char darwin_use_rpath = 1;
@@ -222,6 +223,9 @@ main(int argc, char *argv[])
 #ifdef DARWIN_LD_DEFAULT_TARGET
        if (darwin_dt == NULL)
                darwin_dt = DARWIN_LD_DEFAULT_TARGET;
+       darwin_ld_trg_ver = (int)strtol(DARWIN_LD_DEFAULT_TARGET, &p, 10) * 100;
+       if (*p == '.')
+               darwin_ld_trg_ver += (int)strtol(p + 1, &p, 10);
 #endif
 
        /* two ways to determine CTARGET from argv[0]:
@@ -403,7 +407,7 @@ main(int argc, char *argv[])
 #ifdef DARWIN_LD_SYSLIBROOT
                /* bug #910277: transform into platform_version arg for newer
                 * targets */
-               if (darwin_dt_ver >= 1200) {
+               if (darwin_ld_trg_ver >= 1200) {
                        newargv[j++] = "-platform_version";
                        newargv[j++] = "macos";
                        newargv[j++] = darwin_dt;

Reply via email to