diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go index a00a7bc0f2..fb3e4f5071 100644 --- a/src/cmd/link/internal/ld/elf.go +++ b/src/cmd/link/internal/ld/elf.go @@ -807,6 +807,9 @@ func elfwritefreebsdsig(out *OutBuf) int { func addbuildinfo(ctxt *Link) { val := *flagHostBuildid + if val == "" || val == "none" { + return + } if val == "gobuildid" { buildID := *flagBuildid if buildID == "" { diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go index 12bc896c66..532d6dc80e 100644 --- a/src/cmd/link/internal/ld/main.go +++ b/src/cmd/link/internal/ld/main.go @@ -95,7 +95,7 @@ var ( flagN = flag.Bool("n", false, "no-op (deprecated)") FlagS = flag.Bool("s", false, "disable symbol table") flag8 bool // use 64-bit addresses in symbol table - flagHostBuildid = flag.String("B", "", "set ELF NT_GNU_BUILD_ID `note` or Mach-O UUID; use \"gobuildid\" to generate it from the Go build ID") + flagHostBuildid = flag.String("B", "", "set ELF NT_GNU_BUILD_ID `note` or Mach-O UUID; use \"gobuildid\" to generate it from the Go build ID; \"none\" to disable") flagInterpreter = flag.String("I", "", "use `linker` as ELF dynamic linker") flagCheckLinkname = flag.Bool("checklinkname", true, "check linkname symbol references") FlagDebugTramp = flag.Int("debugtramp", 0, "debug trampolines") @@ -294,9 +294,10 @@ func Main(arch *sys.Arch, theArch Arch) { *flagBuildid = "go-openbsd" } - if *flagHostBuildid != "" { - addbuildinfo(ctxt) + if *flagHostBuildid == "" && *flagBuildid != "" && ctxt.IsDarwin() { + *flagHostBuildid = "gobuildid" } + addbuildinfo(ctxt) // enable benchmarking var bench *benchmark.Metrics