• erifan01's avatar
    cmd/link: support PIE mode with internal link on linux arm64 · d2765de8
    erifan01 authored
    This CL improves internal link to provide basic support for cgo and PIE:
    1, add support for GOT, PLT and GOTPLT.
    2, add support for following ELF relocation types which have been used by std
       packages:
         R_AARCH64_ADR_GOT_PAGE
         R_AARCH64_LD64_GOT_LO12_NC
         R_AARCH64_ADR_PREL_PG_HI21
         R_AARCH64_ADD_ABS_LO12_NC
         R_AARCH64_LDST8_ABS_LO12_NC
         R_AARCH64_LDST32_ABS_LO12_NC
         R_AARCH64_LDST64_ABS_LO12_NC
         R_AARCH64_JUMP26
         R_AARCH64_ABS64
         R_AARCH64_PREL32
         R_AARCH64_PREL64
    
    With this change, Go toolchain can be built in internal linking mode, and
    pure Go programs can be built with PIE mode in internal linking mode on arm64.
    
    Updates #10373
    The prototype of this CL is contributed by Wei Xiao <wei.xiao@arm.com>
    
    Change-Id: I2253923c69e855fd1524d54def309a961dce6247
    Reviewed-on: https://go-review.googlesource.com/c/go/+/163579Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    d2765de8
asm.go 28.9 KB