• Alex Brainman's avatar
    cmd/link: use libmsvcrt.a during internal link · e4c39259
    Alex Brainman authored
    When using recent versions of gcc with cgo, internal link fails with
    
    c:\>go test debug/pe
    --- FAIL: TestInternalLinkerDWARF (0.94s)
        file_test.go:394: building test executable for linktype 2 failed: exit status 2 # command-line-arguments
            runtime/cgo(.text): relocation target __acrt_iob_func not defined for ABI0 (but is defined for ABI0)
            runtime/cgo(.text): relocation target __acrt_iob_func not defined for ABI0 (but is defined for ABI0)
            runtime/cgo(.text): relocation target __acrt_iob_func not defined for ABI0 (but is defined for ABI0)
    FAIL
    FAIL    debug/pe        4.572s
    FAIL
    
    It appears that __acrt_iob_func is defined in libmsvcrt.a. And this
    change adds libmsvcrt.a to the list of libraries always used byi
    internal linker.
    
    libmsvcrt.a also implements __imp___acrt_iob_func. So this change
    also prevents rewriting __imp___acrt_iob_func name into
    __acrt_iob_func, otherwise we end up with duplicate __acrt_iob_func
    symbol error.
    
    Fixes #23649
    
    Change-Id: Ie9864cd17e907501e9a8a3672bbc33e02ca20e5c
    Reviewed-on: https://go-review.googlesource.com/c/go/+/197977
    Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
    e4c39259
ldpe.go 15.3 KB