diff --git a/src/cmd/link/elf_test.go b/src/cmd/link/elf_test.go index e68f94e7de..db6ef1bb51 100644 --- a/src/cmd/link/elf_test.go +++ b/src/cmd/link/elf_test.go @@ -224,7 +224,9 @@ func TestGNUBuildID(t *testing.T) { {"specific", "-B=0x0123456789abcdef", "\x01\x23\x45\x67\x89\xab\xcd\xef"}, {"none", "-B=none", ""}, } - if testenv.HasCGO() { + if testenv.HasCGO() && runtime.GOOS != "solaris" && runtime.GOOS != "illumos" { + // Solaris ld doesn't support --build-id. So we don't + // add it in external linking mode. for _, test := range tests { t1 := test t1.name += "_external" diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index a9eda54713..0c37a1dc1f 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1701,7 +1701,7 @@ func (ctxt *Link) hostlink() { argv = append(argv, "-fuse-ld="+altLinker) } - if ctxt.IsELF { + if ctxt.IsELF && linkerFlagSupported(ctxt.Arch, argv[0], "", "-Wl,--build-id=0x1234567890abcdef") { // Solaris ld doesn't support --build-id. if len(buildinfo) > 0 { argv = append(argv, fmt.Sprintf("-Wl,--build-id=0x%x", buildinfo)) } else if *flagHostBuildid == "none" {