]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: convert -I foo to -Wl,--dynamic-linker,foo when externally linking
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Thu, 15 Apr 2021 03:50:41 +0000 (15:50 +1200)
committerMichael Hudson-Doyle <michael.hudson@canonical.com>
Mon, 19 Apr 2021 23:02:15 +0000 (23:02 +0000)
Fixes #22446

Change-Id: Id5b3fbc9cd3a7d6c4bf4e28428b8cb6d45a9ca92
Reviewed-on: https://go-review.googlesource.com/c/go/+/310349
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/link/internal/ld/lib.go

index b814a277e6b39b5ec7541e868e8060249b5e64a6..c840e5ea516be0ae8577ad10617fce468e9857ba 100644 (file)
@@ -1431,6 +1431,14 @@ func (ctxt *Link) hostlink() {
                argv = append(argv, fmt.Sprintf("-Wl,-rpath,%s", rpath.val))
        }
 
+       if *flagInterpreter != "" {
+               // Many linkers support both -I and the --dynamic-linker flags
+               // to set the ELF interpreter, but lld only supports
+               // --dynamic-linker so prefer that (ld on very old Solaris only
+               // supports -I but that seems less important).
+               argv = append(argv, fmt.Sprintf("-Wl,--dynamic-linker,%s", *flagInterpreter))
+       }
+
        // Force global symbols to be exported for dlopen, etc.
        if ctxt.IsELF {
                argv = append(argv, "-rdynamic")