]> Cypherpunks repositories - gostls13.git/commit
cmd/link: skip __.PKGDEF in archives
authorMatthew Dempsky <mdempsky@google.com>
Fri, 23 Mar 2018 17:28:39 +0000 (10:28 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Sat, 24 Mar 2018 00:17:33 +0000 (00:17 +0000)
commit699b0d4e52f32234e21358d3a0b9485b01c13236
tree72d0093e3d9849bedd7cf262ceb8a8aa4bd3ac8d
parent946af1b658c319d70e2a6f0d0d6aedc972c3acc6
cmd/link: skip __.PKGDEF in archives

The __.PKGDEF file is a compiler object file only intended for other
compilers. Also, for build systems that use -linkobj, all of the
information it contains is present within the linker object files
already, so look for it there instead.

This requires a little bit of code reorganization. Significantly,
previously when loading an archive file, the __.PKGDEF file was
authoritative on whether the package was "main" and/or "safe". Now
that we're using the Go object files instead, there's the issue that
there can be multiple Go object files in an archive (because when
using assembly, each assembly file becomes its own additional object
file).

The solution taken here is to check if any object file within the
package declares itself as "main" and/or "safe".

Updates #24512.

Change-Id: I70243a293bdf34b8555c0bf1833f8933b2809449
Reviewed-on: https://go-review.googlesource.com/102281
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/link/internal/ld/ar.go
src/cmd/link/internal/ld/go.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/sym/library.go