forked from pool/go1.19
34 lines
1.2 KiB
Diff
34 lines
1.2 KiB
Diff
|
--- go/src/cmd/link/internal/ld/lib.go
|
||
|
+++ go/src/cmd/link/internal/ld/lib.go
|
||
|
@@ -1391,30 +1391,6 @@
|
||
|
// Use lld to avoid errors from default linker (issue #38838)
|
||
|
altLinker = "lld"
|
||
|
}
|
||
|
-
|
||
|
- if ctxt.Arch.InFamily(sys.ARM, sys.ARM64) && buildcfg.GOOS == "linux" {
|
||
|
- // On ARM, the GNU linker will generate COPY relocations
|
||
|
- // even with -znocopyreloc set.
|
||
|
- // https://sourceware.org/bugzilla/show_bug.cgi?id=19962
|
||
|
- //
|
||
|
- // On ARM64, the GNU linker will fail instead of
|
||
|
- // generating COPY relocations.
|
||
|
- //
|
||
|
- // In both cases, switch to gold.
|
||
|
- altLinker = "gold"
|
||
|
-
|
||
|
- // If gold is not installed, gcc will silently switch
|
||
|
- // back to ld.bfd. So we parse the version information
|
||
|
- // and provide a useful error if gold is missing.
|
||
|
- name, args := flagExtld[0], flagExtld[1:]
|
||
|
- args = append(args, "-fuse-ld=gold", "-Wl,--version")
|
||
|
- cmd := exec.Command(name, args...)
|
||
|
- if out, err := cmd.CombinedOutput(); err == nil {
|
||
|
- if !bytes.Contains(out, []byte("GNU gold")) {
|
||
|
- log.Fatalf("ARM external linker must be gold (issue #15696), but is not: %s", out)
|
||
|
- }
|
||
|
- }
|
||
|
- }
|
||
|
}
|
||
|
if ctxt.Arch.Family == sys.ARM64 && buildcfg.GOOS == "freebsd" {
|
||
|
// Switch to ld.bfd on freebsd/arm64.
|