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

Fix invocation of assembler for go1.22 #3756

Merged
merged 1 commit into from
Feb 7, 2024
Merged

Commits on Feb 7, 2024

  1. Fix invocation of assembler for go1.22

    In go1.19 through go1.22-devel (as of golang/go@6382893) a series of
    changes were made to the way assembly files' symabis are produced.
    
    https://go-review.googlesource.com/c/go/+/523337
    
    Most significantly, the packagename now must be passed to the assembler
    via the -p flag, even when generating only the symabis. The go build
    system does this, but Bazel Go rules have not, and this finally breaks
    in go1.22-devel as the compatibility code is removed.
    
    Without specifying -p to the assembler, the output symabis file will
    contain something like:
    
    ```
    def <unlinkable>.s2Decode ABI0
    ```
    
    instead of
    
    ```
    def github.com/klauspost/compress/s2.s2Decode ABI0
    ```
    
    The result is that the compiler will default to using ABIInternal
    instead of ABI0 if it cannot resolve a match in symabis, which will
    cause a link failure:
    
    ```
    Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
    github.com/klauspost/compress/s2.Decode: relocation target github.com/klauspost/compress/s2.s2Decode not defined for ABIInternal (but is defined for ABI0)
    link: error running subcommand external/go_sdk/pkg/tool/darwin_arm64/link: exit status 2
    ```
    
    We conservatively only do this for go minor releases later than 1.21.
    jquirke authored and fmeum committed Feb 7, 2024
    Configuration menu
    Copy the full SHA
    8c2fee8 View commit details
    Browse the repository at this point in the history