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

Closed
gopherbot opened this issue Mar 8, 2019 · 3 comments

Comments

Projects
None yet
2 participants
@gopherbot
Copy link

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.

@bcmills

This comment has been minimized.

Copy link
Member

commented Mar 8, 2019

@jayconrod, see http://golang.org/wiki/MinorReleases#making-cherry-pick-cls for instructions on how to cherry-pick the fix.

@gopherbot

This comment has been minimized.

Copy link
Author

commented Mar 8, 2019

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

@gopherbot

This comment has been minimized.

Copy link
Author

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

[release-branch.go1.12] cmd/go: avoid link errors when -coverpkg cove…
…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
errors.

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
Reviewed-on: https://go-review.googlesource.com/c/go/+/164877
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
(cherry picked from commit 10156b6)
Reviewed-on: https://go-review.googlesource.com/c/go/+/166318
TryBot-Result: Gobot Gobot <gobot@golang.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.