• Matthew Dempsky's avatar
    cmd/link: skip __.PKGDEF in archives · 699b0d4e
    Matthew Dempsky authored
    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: 's avatarIan Lance Taylor <iant@golang.org>
    699b0d4e
ar.go 5.03 KB