• Russ Cox's avatar
    misc/cgo/life: fix, add to build · 0cd34753
    Russ Cox authored
    #pragma dynexport is no longer needed for
    this use of cgo, since the gcc and gc code are
    now linked together into the same binary.
    It may still be necessary later.
    
    On the Mac, you cannot use the GOT to resolve
    symbols that exist in the current binary, so 6l and 8l
    translate the GOT-loading mov instructions into lea
    instructions.
    
    On ELF systems, we could use the GOT for those
    symbols, but for consistency 6l and 8l apply the
    same translation.
    
    The translation is sketchy in the extreme
    (depending on the relocation being in a mov
    instruction) but it verifies that the instruction
    is a mov before rewriting it to lea.
    
    Also makes typedefs global across files.
    
    Fixes #1335.
    Fixes #1345.
    
    R=iant, r
    CC=golang-dev
    https://golang.org/cl/3650042
    0cd34753
asm.c 27.8 KB