Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/go: duplicate symbols when including two main packages in -coverpkg in module mode [1.12 backport] #30684

gopherbot opened this issue Mar 8, 2019 · 3 comments


Copy link

@gopherbot gopherbot commented Mar 8, 2019

@bcmills requested issue #30374 to be considered for backport to the next 1.12 minor release.

@gopherbot, please backport to 1.12. This is a significant regression from GOPATH mode and the fix is straightforward.


This comment has been minimized.

Copy link

@bcmills bcmills commented Mar 8, 2019

@jayconrod, see for instructions on how to cherry-pick the fix.


This comment has been minimized.

Copy link

@gopherbot gopherbot commented Mar 8, 2019

Change mentions this issue: [release-branch.go1.12] cmd/go: avoid link errors when -coverpkg covers main packages


This comment has been minimized.

Copy link

@gopherbot gopherbot commented Mar 13, 2019

Closed by merging a40b76a to release-branch.go1.12.

@gopherbot gopherbot closed this Mar 13, 2019
gopherbot pushed a commit that referenced this issue Mar 13, 2019
…rs main packages

The -coverpkg lets users specify a list of packages that should have
coverage instrumentation. This may include packages not transitively
imported by tests. For each tested package, the synthetic main package
imports all covered packages so they can be registered with
testing.RegisterCover. This makes it possible for a main package to
import another main package.

When we compile a package with p.Internal.BuildInfo set (set on main
packages by Package.load in module mode), we set
runtime/debug.modinfo. Multiple main packages may be passed to the
linker because of the above scenario, so this causes duplicate symbol

This change copies p.Internal.BuildInfo to the synthetic main package
instead of the internal test package. Additionally, it forces main
packages imported by the synthetic test main package to be recompiled
for testing. Recompiled packages won't have p.Internal.BuildInfo set.

Fixes #30684

Change-Id: I06f028d55905039907940ec89d2835f5a1040203
Run-TryBot: Jay Conrod <>
Reviewed-by: Bryan C. Mills <>
(cherry picked from commit 10156b6)
TryBot-Result: Gobot Gobot <>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.