From: Austin Clements Date: Thu, 19 Oct 2017 00:14:29 +0000 (-0400) Subject: cmd/compile: allow duplicate DWARF producer symbols X-Git-Tag: go1.10beta1~662 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=717d37591d9d446007b830c70ff74d8f8dca13d9;p=gostls13.git cmd/compile: allow duplicate DWARF producer symbols When building test binaries, we build one archive with all of the test sources and a second archive with the generated test package main and link them together. If the test sources are themselves in package main and the test was compiled with non-default compiler flags, then both archives will contain a go.cuinfo.producer.main symbol, leading to a duplicate symbol failure. This has been causing test build failures on darwin-arm-a1428ios, darwin-arm64-a1549ios, linux-amd64-noopt, android-arm-wiko-fever, and android-arm64-wiko-fever since CL 71430 added this symbol. This CL should fix the build. Change-Id: I69051c846e7c0d97395a865a361cae07f411f9ad Reviewed-on: https://go-review.googlesource.com/71771 Run-TryBot: Austin Clements Reviewed-by: Than McIntosh Reviewed-by: Ian Lance Taylor TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/compile/internal/gc/main.go b/src/cmd/compile/internal/gc/main.go index 8a02e98e0e..288c1d8420 100644 --- a/src/cmd/compile/internal/gc/main.go +++ b/src/cmd/compile/internal/gc/main.go @@ -1250,6 +1250,9 @@ func recordFlags(flags ...string) { } s := Ctxt.Lookup(dwarf.CUInfoPrefix + "producer." + myimportpath) s.Type = objabi.SDWARFINFO + // Sometimes (for example when building tests) we can link + // together two package main archives. So allow dups. + s.Set(obj.AttrDuplicateOK, true) Ctxt.Data = append(Ctxt.Data, s) s.P = cmd.Bytes()[1:] }